增加智瞰龙虎板块
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
from longhubang_data import LonghubangDataFetcher
|
||||
from longhubang_db import LonghubangDatabase
|
||||
from longhubang_agents import LonghubangAgents
|
||||
from longhubang_scoring import LonghubangScoring
|
||||
from typing import Dict, Any, List
|
||||
from datetime import datetime, timedelta
|
||||
import time
|
||||
@@ -25,6 +26,7 @@ class LonghubangEngine:
|
||||
self.data_fetcher = LonghubangDataFetcher()
|
||||
self.database = LonghubangDatabase(db_path)
|
||||
self.agents = LonghubangAgents(model=model)
|
||||
self.scoring = LonghubangScoring()
|
||||
print(f"[智瞰龙虎] 分析引擎初始化完成")
|
||||
|
||||
def run_comprehensive_analysis(self, date=None, days=1) -> Dict[str, Any]:
|
||||
@@ -89,6 +91,13 @@ class LonghubangEngine:
|
||||
}
|
||||
print(f"✓ 数据统计完成")
|
||||
|
||||
# 阶段3.5: AI智能评分排名
|
||||
print("\n[阶段3.5] AI智能评分排名...")
|
||||
print("-" * 60)
|
||||
scoring_df = self.scoring.score_all_stocks(data_list)
|
||||
results["scoring_ranking"] = scoring_df
|
||||
print(f"✓ 完成 {len(scoring_df)} 只股票的智能评分排名")
|
||||
|
||||
# 阶段4: AI分析师团队分析
|
||||
print("\n[阶段4] AI分析师团队工作中...")
|
||||
print("-" * 60)
|
||||
|
||||
@@ -0,0 +1,582 @@
|
||||
"""
|
||||
智瞰龙虎AI智能评分模块
|
||||
对龙虎榜上榜股票进行综合评分排名
|
||||
"""
|
||||
|
||||
import pandas as pd
|
||||
from typing import Dict, List
|
||||
from collections import Counter
|
||||
|
||||
|
||||
class LonghubangScoring:
|
||||
"""龙虎榜股票智能评分系统"""
|
||||
|
||||
def __init__(self):
|
||||
"""初始化评分系统"""
|
||||
# 顶级游资名单(根据市场知名度和历史战绩)
|
||||
self.top_youzi = [
|
||||
'赵老哥', '章盟主', '92科比', '瑞鹤仙', '小鳄鱼',
|
||||
'养家心法', '欢乐海岸', '古北路', '成都系', '佛山系',
|
||||
'方新侠', '乔帮主', '淮海路', '东方财富',
|
||||
'国信深圳', '华泰深圳', '中信杭州', '招商深圳'
|
||||
]
|
||||
|
||||
# 知名游资(次一级)
|
||||
self.famous_youzi = [
|
||||
'深股通', '沪股通', '北向资金',
|
||||
'中金公司', '中信证券', '国泰君安', '海通证券',
|
||||
'广发证券', '华泰证券', '招商证券'
|
||||
]
|
||||
|
||||
# 机构关键词
|
||||
self.institution_keywords = [
|
||||
'机构专用', '机构', '基金', '保险', '社保',
|
||||
'QFII', 'RQFII', '券商', '信托'
|
||||
]
|
||||
|
||||
print("[智瞰龙虎] 评分系统初始化完成")
|
||||
|
||||
def calculate_stock_score(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算单个股票的综合评分
|
||||
|
||||
Args:
|
||||
stock_data: 该股票的所有龙虎榜记录
|
||||
|
||||
Returns:
|
||||
综合评分 (0-100分)
|
||||
"""
|
||||
if not stock_data:
|
||||
return 0.0
|
||||
|
||||
# 1. 买入资金含金量评分 (0-30分)
|
||||
capital_quality_score = self._calculate_capital_quality(stock_data)
|
||||
|
||||
# 2. 净买入额评分 (0-25分)
|
||||
net_inflow_score = self._calculate_net_inflow_score(stock_data)
|
||||
|
||||
# 3. 卖出压力评分 (0-20分)
|
||||
sell_pressure_score = self._calculate_sell_pressure_score(stock_data)
|
||||
|
||||
# 4. 机构共振评分 (0-15分)
|
||||
institution_score = self._calculate_institution_score(stock_data)
|
||||
|
||||
# 5. 其他加分项 (0-10分)
|
||||
bonus_score = self._calculate_bonus_score(stock_data)
|
||||
|
||||
# 综合评分
|
||||
total_score = (
|
||||
capital_quality_score +
|
||||
net_inflow_score +
|
||||
sell_pressure_score +
|
||||
institution_score +
|
||||
bonus_score
|
||||
)
|
||||
|
||||
return round(total_score, 1)
|
||||
|
||||
def _calculate_capital_quality(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算买入资金含金量评分 (0-30分)
|
||||
顶级游资加分多,普通游资加分少
|
||||
"""
|
||||
score = 0.0
|
||||
max_score = 30.0
|
||||
|
||||
buyers = []
|
||||
for record in stock_data:
|
||||
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
|
||||
# 确保转换为数值类型
|
||||
try:
|
||||
buy_amount = float(buy_amount) if buy_amount else 0
|
||||
except (ValueError, TypeError):
|
||||
buy_amount = 0
|
||||
|
||||
if buy_amount > 0:
|
||||
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
|
||||
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
|
||||
buyers.append({
|
||||
'name': youzi_name,
|
||||
'yingye_bu': yingye_bu,
|
||||
'amount': float(buy_amount)
|
||||
})
|
||||
|
||||
if not buyers:
|
||||
return 0.0
|
||||
|
||||
# 顶级游资:每个加8-10分
|
||||
top_youzi_count = 0
|
||||
for buyer in buyers:
|
||||
for top in self.top_youzi:
|
||||
if top in buyer['name'] or top in buyer['yingye_bu']:
|
||||
top_youzi_count += 1
|
||||
score += 10.0
|
||||
break
|
||||
|
||||
# 知名游资:每个加4-6分
|
||||
famous_youzi_count = 0
|
||||
for buyer in buyers:
|
||||
is_top = any(top in buyer['name'] or top in buyer['yingye_bu']
|
||||
for top in self.top_youzi)
|
||||
if not is_top:
|
||||
for famous in self.famous_youzi:
|
||||
if famous in buyer['name'] or famous in buyer['yingye_bu']:
|
||||
famous_youzi_count += 1
|
||||
score += 5.0
|
||||
break
|
||||
|
||||
# 普通游资:每个加1-2分
|
||||
ordinary_count = len(buyers) - top_youzi_count - famous_youzi_count
|
||||
score += ordinary_count * 1.5
|
||||
|
||||
# 限制最高分
|
||||
return min(score, max_score)
|
||||
|
||||
def _calculate_net_inflow_score(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算净买入额评分 (0-25分)
|
||||
真金白银越多分数越高
|
||||
"""
|
||||
max_score = 25.0
|
||||
|
||||
# 计算总净流入
|
||||
total_net_inflow = 0.0
|
||||
for record in stock_data:
|
||||
net_inflow = record.get('净流入金额', 0) or record.get('jlrje', 0)
|
||||
try:
|
||||
net_inflow = float(net_inflow) if net_inflow else 0
|
||||
total_net_inflow += net_inflow
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
if total_net_inflow <= 0:
|
||||
return 0.0
|
||||
|
||||
# 净流入分段评分
|
||||
# 1000万以下:0-10分
|
||||
# 1000-5000万:10-18分
|
||||
# 5000万-1亿:18-22分
|
||||
# 1亿以上:22-25分
|
||||
net_inflow_wan = total_net_inflow / 10000 # 转换为万元
|
||||
|
||||
if net_inflow_wan < 1000:
|
||||
score = (net_inflow_wan / 1000) * 10
|
||||
elif net_inflow_wan < 5000:
|
||||
score = 10 + ((net_inflow_wan - 1000) / 4000) * 8
|
||||
elif net_inflow_wan < 10000:
|
||||
score = 18 + ((net_inflow_wan - 5000) / 5000) * 4
|
||||
else:
|
||||
score = 22 + min((net_inflow_wan - 10000) / 10000, 1) * 3
|
||||
|
||||
return min(score, max_score)
|
||||
|
||||
def _calculate_sell_pressure_score(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算卖出压力评分 (0-20分)
|
||||
卖出压力越小分数越高
|
||||
"""
|
||||
max_score = 20.0
|
||||
|
||||
total_buy = 0.0
|
||||
total_sell = 0.0
|
||||
|
||||
for record in stock_data:
|
||||
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
|
||||
sell_amount = record.get('卖出金额', 0) or record.get('mcje', 0)
|
||||
|
||||
try:
|
||||
buy_amount = float(buy_amount) if buy_amount else 0
|
||||
total_buy += buy_amount
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
try:
|
||||
sell_amount = float(sell_amount) if sell_amount else 0
|
||||
total_sell += sell_amount
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
if total_buy == 0:
|
||||
return 0.0
|
||||
|
||||
# 计算卖出比例
|
||||
sell_ratio = total_sell / total_buy if total_buy > 0 else 1.0
|
||||
|
||||
# 卖出压力评分
|
||||
# 卖出比例0-10%:20分
|
||||
# 卖出比例10-30%:15-20分
|
||||
# 卖出比例30-50%:10-15分
|
||||
# 卖出比例50-80%:5-10分
|
||||
# 卖出比例80%以上:0-5分
|
||||
if sell_ratio < 0.1:
|
||||
score = 20.0
|
||||
elif sell_ratio < 0.3:
|
||||
score = 20.0 - (sell_ratio - 0.1) / 0.2 * 5
|
||||
elif sell_ratio < 0.5:
|
||||
score = 15.0 - (sell_ratio - 0.3) / 0.2 * 5
|
||||
elif sell_ratio < 0.8:
|
||||
score = 10.0 - (sell_ratio - 0.5) / 0.3 * 5
|
||||
else:
|
||||
score = 5.0 - min(sell_ratio - 0.8, 0.2) / 0.2 * 5
|
||||
|
||||
return max(0, min(score, max_score))
|
||||
|
||||
def _calculate_institution_score(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算机构共振评分 (0-15分)
|
||||
机构+游资共振最高分
|
||||
"""
|
||||
max_score = 15.0
|
||||
|
||||
has_institution = False
|
||||
has_youzi = False
|
||||
institution_count = 0
|
||||
youzi_count = 0
|
||||
|
||||
for record in stock_data:
|
||||
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
|
||||
try:
|
||||
buy_amount = float(buy_amount) if buy_amount else 0
|
||||
except (ValueError, TypeError):
|
||||
buy_amount = 0
|
||||
|
||||
if buy_amount <= 0:
|
||||
continue
|
||||
|
||||
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
|
||||
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
|
||||
|
||||
# 检查是否是机构
|
||||
if any(keyword in youzi_name or keyword in yingye_bu
|
||||
for keyword in self.institution_keywords):
|
||||
has_institution = True
|
||||
institution_count += 1
|
||||
else:
|
||||
has_youzi = True
|
||||
youzi_count += 1
|
||||
|
||||
# 评分逻辑
|
||||
if has_institution and has_youzi:
|
||||
# 机构+游资共振:最高分
|
||||
score = 15.0
|
||||
elif has_institution:
|
||||
# 仅机构:8-12分
|
||||
score = min(8 + institution_count * 2, 12)
|
||||
elif has_youzi:
|
||||
# 仅游资:5-10分
|
||||
score = min(5 + youzi_count * 1, 10)
|
||||
else:
|
||||
score = 0.0
|
||||
|
||||
return min(score, max_score)
|
||||
|
||||
def _calculate_bonus_score(self, stock_data: List[Dict]) -> float:
|
||||
"""
|
||||
计算其他加分项 (0-10分)
|
||||
买卖比例、主力集中度、热门概念等
|
||||
"""
|
||||
max_score = 10.0
|
||||
score = 0.0
|
||||
|
||||
if not stock_data:
|
||||
return 0.0
|
||||
|
||||
# 1. 主力集中度加分 (0-3分)
|
||||
# 如果资金集中在少数几个席位,说明主力信心强
|
||||
seat_count = len(stock_data)
|
||||
if seat_count == 1:
|
||||
score += 3.0
|
||||
elif seat_count == 2:
|
||||
score += 2.5
|
||||
elif seat_count == 3:
|
||||
score += 2.0
|
||||
elif seat_count <= 5:
|
||||
score += 1.5
|
||||
else:
|
||||
score += 1.0
|
||||
|
||||
# 2. 热门概念加分 (0-3分)
|
||||
all_concepts = []
|
||||
for record in stock_data:
|
||||
concepts = record.get('概念', '') or record.get('gl', '')
|
||||
if concepts:
|
||||
all_concepts.extend([c.strip() for c in str(concepts).split(',')])
|
||||
|
||||
hot_keywords = [
|
||||
'人工智能', 'AI', 'ChatGPT', '算力', '新能源', '芯片', '半导体',
|
||||
'军工', '医药', '消费', '5G', '新材料', '量子', '光伏',
|
||||
'储能', '锂电池', '汽车', '游戏', '传媒', '元宇宙'
|
||||
]
|
||||
|
||||
concept_score = 0
|
||||
for concept in all_concepts:
|
||||
if any(keyword in concept for keyword in hot_keywords):
|
||||
concept_score += 0.3
|
||||
|
||||
score += min(concept_score, 3.0)
|
||||
|
||||
# 3. 连续上榜加分 (0-2分)
|
||||
# 这里简化处理,如果有多条记录可能表示连续上榜
|
||||
if len(stock_data) >= 3:
|
||||
score += 2.0
|
||||
elif len(stock_data) == 2:
|
||||
score += 1.0
|
||||
|
||||
# 4. 买卖比例优秀加分 (0-2分)
|
||||
total_buy = 0.0
|
||||
total_sell = 0.0
|
||||
for r in stock_data:
|
||||
try:
|
||||
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
|
||||
total_buy += buy
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
try:
|
||||
sell = float(r.get('卖出金额', 0) or r.get('mcje', 0) or 0)
|
||||
total_sell += sell
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
if total_buy > 0:
|
||||
buy_sell_ratio = total_buy / (total_sell + 1)
|
||||
if buy_sell_ratio >= 10:
|
||||
score += 2.0
|
||||
elif buy_sell_ratio >= 5:
|
||||
score += 1.5
|
||||
elif buy_sell_ratio >= 3:
|
||||
score += 1.0
|
||||
|
||||
return min(score, max_score)
|
||||
|
||||
def score_all_stocks(self, data_list: List[Dict]) -> pd.DataFrame:
|
||||
"""
|
||||
对所有上榜股票进行评分排名
|
||||
|
||||
Args:
|
||||
data_list: 龙虎榜数据列表
|
||||
|
||||
Returns:
|
||||
评分排名DataFrame
|
||||
"""
|
||||
if not data_list:
|
||||
return pd.DataFrame()
|
||||
|
||||
# 按股票代码分组
|
||||
stocks_dict = {}
|
||||
for record in data_list:
|
||||
code = record.get('股票代码') or record.get('gpdm')
|
||||
name = record.get('股票名称') or record.get('gpmc')
|
||||
|
||||
if not code:
|
||||
continue
|
||||
|
||||
if code not in stocks_dict:
|
||||
stocks_dict[code] = {
|
||||
'code': code,
|
||||
'name': name,
|
||||
'records': []
|
||||
}
|
||||
|
||||
stocks_dict[code]['records'].append(record)
|
||||
|
||||
# 计算每只股票的评分
|
||||
results = []
|
||||
for code, stock_info in stocks_dict.items():
|
||||
records = stock_info['records']
|
||||
|
||||
# 计算各维度评分
|
||||
capital_quality = self._calculate_capital_quality(records)
|
||||
net_inflow = self._calculate_net_inflow_score(records)
|
||||
sell_pressure = self._calculate_sell_pressure_score(records)
|
||||
institution = self._calculate_institution_score(records)
|
||||
bonus = self._calculate_bonus_score(records)
|
||||
|
||||
total_score = capital_quality + net_inflow + sell_pressure + institution + bonus
|
||||
|
||||
# 计算实际数据(安全转换)
|
||||
total_buy = 0.0
|
||||
total_sell = 0.0
|
||||
total_net = 0.0
|
||||
for r in records:
|
||||
try:
|
||||
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
|
||||
total_buy += buy
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
try:
|
||||
sell = float(r.get('卖出金额', 0) or r.get('mcje', 0) or 0)
|
||||
total_sell += sell
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
try:
|
||||
net = float(r.get('净流入金额', 0) or r.get('jlrje', 0) or 0)
|
||||
total_net += net
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
# 统计买入席位数(安全比较)
|
||||
buy_seats = 0
|
||||
for r in records:
|
||||
try:
|
||||
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
|
||||
if buy > 0:
|
||||
buy_seats += 1
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
# 统计机构数量
|
||||
institution_count = sum(1 for r in records
|
||||
if any(kw in (r.get('游资名称', '') or r.get('yzmc', '')) or
|
||||
kw in (r.get('营业部', '') or r.get('yyb', ''))
|
||||
for kw in self.institution_keywords))
|
||||
|
||||
# 获取概念
|
||||
concepts_list = []
|
||||
for r in records:
|
||||
concepts = r.get('概念', '') or r.get('gl', '')
|
||||
if concepts:
|
||||
concepts_list.extend([c.strip() for c in str(concepts).split(',')])
|
||||
|
||||
top_concepts = Counter(concepts_list).most_common(3)
|
||||
concept_str = ','.join([c[0] for c in top_concepts]) if top_concepts else ''
|
||||
|
||||
# 判断机构参与
|
||||
has_institution = institution_count > 0
|
||||
|
||||
results.append({
|
||||
'排名': 0, # 稍后填充
|
||||
'股票名称': stock_info['name'],
|
||||
'股票代码': code,
|
||||
'综合评分': round(total_score, 1),
|
||||
'资金含金量': round(capital_quality, 0),
|
||||
'净买入额': round(net_inflow, 0),
|
||||
'卖出压力': round(sell_pressure, 0),
|
||||
'机构共振': round(institution, 0),
|
||||
'加分项': round(bonus, 0),
|
||||
'顶级游资': self._count_top_youzi(records),
|
||||
'买方数': buy_seats,
|
||||
'机构参与': '✅' if has_institution else '❌',
|
||||
'净流入': round(total_net, 2)
|
||||
})
|
||||
|
||||
# 转换为DataFrame并排序
|
||||
df = pd.DataFrame(results)
|
||||
if df.empty:
|
||||
return df
|
||||
|
||||
df = df.sort_values('综合评分', ascending=False).reset_index(drop=True)
|
||||
df['排名'] = range(1, len(df) + 1)
|
||||
|
||||
# 添加奖牌
|
||||
if len(df) >= 1:
|
||||
df.loc[0, '排名'] = '🥇 1'
|
||||
if len(df) >= 2:
|
||||
df.loc[1, '排名'] = '🥈 2'
|
||||
if len(df) >= 3:
|
||||
df.loc[2, '排名'] = '🥉 3'
|
||||
|
||||
return df
|
||||
|
||||
def _count_top_youzi(self, records: List[Dict]) -> int:
|
||||
"""统计顶级游资数量"""
|
||||
count = 0
|
||||
for record in records:
|
||||
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
|
||||
try:
|
||||
buy_amount = float(buy_amount) if buy_amount else 0
|
||||
except (ValueError, TypeError):
|
||||
buy_amount = 0
|
||||
|
||||
if buy_amount <= 0:
|
||||
continue
|
||||
|
||||
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
|
||||
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
|
||||
|
||||
if any(top in youzi_name or top in yingye_bu for top in self.top_youzi):
|
||||
count += 1
|
||||
|
||||
return count
|
||||
|
||||
def get_score_explanation(self) -> str:
|
||||
"""获取评分维度说明"""
|
||||
explanation = """
|
||||
【AI智能评分维度说明】
|
||||
|
||||
📊 总分100分,由5个维度组成:
|
||||
|
||||
1️⃣ 买入资金含金量 (0-30分)
|
||||
- 顶级游资(赵老哥、章盟主等):每个+10分
|
||||
- 知名游资(深股通、中信等):每个+5分
|
||||
- 普通游资:每个+1.5分
|
||||
|
||||
2️⃣ 净买入额评分 (0-25分)
|
||||
- 净流入1000万以下:0-10分
|
||||
- 净流入1000-5000万:10-18分
|
||||
- 净流入5000万-1亿:18-22分
|
||||
- 净流入1亿以上:22-25分
|
||||
|
||||
3️⃣ 卖出压力评分 (0-20分)
|
||||
- 卖出比例0-10%:20分(压力极小)
|
||||
- 卖出比例10-30%:15-20分(压力较小)
|
||||
- 卖出比例30-50%:10-15分(压力中等)
|
||||
- 卖出比例50-80%:5-10分(压力较大)
|
||||
- 卖出比例80%以上:0-5分(压力极大)
|
||||
|
||||
4️⃣ 机构共振评分 (0-15分)
|
||||
- 机构+游资共振:15分(最强信号)
|
||||
- 仅机构买入:8-12分
|
||||
- 仅游资买入:5-10分
|
||||
|
||||
5️⃣ 其他加分项 (0-10分)
|
||||
- 主力集中度:席位越少越集中,+1-3分
|
||||
- 热门概念:AI、新能源、芯片等,+0-3分
|
||||
- 连续上榜:连续多日上榜,+0-2分
|
||||
- 买卖比例优秀:买入远大于卖出,+0-2分
|
||||
|
||||
💡 评分越高,表示该股票受到资金青睐程度越高,
|
||||
但仍需结合市场环境、技术面等因素综合判断!
|
||||
"""
|
||||
return explanation
|
||||
|
||||
|
||||
# 测试函数
|
||||
if __name__ == "__main__":
|
||||
print("=" * 60)
|
||||
print("测试智瞰龙虎评分系统")
|
||||
print("=" * 60)
|
||||
|
||||
# 创建测试数据
|
||||
test_data = [
|
||||
{
|
||||
'股票代码': '001337',
|
||||
'股票名称': '四川黄金',
|
||||
'游资名称': '92科比',
|
||||
'营业部': '兴业证券股份有限公司南京天元东路证券营业部',
|
||||
'买入金额': 14470401,
|
||||
'卖出金额': 15080,
|
||||
'净流入金额': 14455321,
|
||||
'概念': '贵金属,黄金概念,次新股'
|
||||
},
|
||||
{
|
||||
'股票代码': '001337',
|
||||
'股票名称': '四川黄金',
|
||||
'游资名称': '赵老哥',
|
||||
'营业部': '某证券公司',
|
||||
'买入金额': 10000000,
|
||||
'卖出金额': 0,
|
||||
'净流入金额': 10000000,
|
||||
'概念': '贵金属,黄金概念'
|
||||
}
|
||||
]
|
||||
|
||||
scoring = LonghubangScoring()
|
||||
|
||||
# 测试评分
|
||||
df_result = scoring.score_all_stocks(test_data)
|
||||
|
||||
print("\n评分结果:")
|
||||
print(df_result)
|
||||
|
||||
print("\n" + scoring.get_score_explanation())
|
||||
|
||||
+196
-4
@@ -250,7 +250,8 @@ def display_analysis_results(result):
|
||||
st.markdown("---")
|
||||
|
||||
# 创建子标签页
|
||||
tab1, tab2, tab3, tab4 = st.tabs([
|
||||
tab1, tab2, tab3, tab4, tab5 = st.tabs([
|
||||
"🏆 AI评分排名",
|
||||
"🎯 推荐股票",
|
||||
"🤖 AI分析师报告",
|
||||
"📊 数据详情",
|
||||
@@ -258,18 +259,209 @@ def display_analysis_results(result):
|
||||
])
|
||||
|
||||
with tab1:
|
||||
display_recommended_stocks(result)
|
||||
display_scoring_ranking(result)
|
||||
|
||||
with tab2:
|
||||
display_agents_reports(result)
|
||||
display_recommended_stocks(result)
|
||||
|
||||
with tab3:
|
||||
display_data_details(result)
|
||||
display_agents_reports(result)
|
||||
|
||||
with tab4:
|
||||
display_data_details(result)
|
||||
|
||||
with tab5:
|
||||
display_visualizations(result)
|
||||
|
||||
|
||||
def display_scoring_ranking(result):
|
||||
"""显示AI智能评分排名"""
|
||||
|
||||
st.subheader("🏆 AI智能评分排名")
|
||||
|
||||
scoring_df = result.get('scoring_ranking')
|
||||
|
||||
if scoring_df is None or (hasattr(scoring_df, 'empty') and scoring_df.empty):
|
||||
st.warning("暂无评分数据")
|
||||
return
|
||||
|
||||
# 评分说明
|
||||
with st.expander("📖 评分维度说明", expanded=False):
|
||||
st.markdown("""
|
||||
### 📊 AI智能评分体系 (总分100分)
|
||||
|
||||
#### 1️⃣ 买入资金含金量 (0-30分)
|
||||
- **顶级游资**(赵老哥、章盟主、92科比等):每个 +10分
|
||||
- **知名游资**(深股通、中信证券等):每个 +5分
|
||||
- **普通游资**:每个 +1.5分
|
||||
|
||||
#### 2️⃣ 净买入额评分 (0-25分)
|
||||
- 净流入 < 1000万:0-10分
|
||||
- 净流入 1000-5000万:10-18分
|
||||
- 净流入 5000万-1亿:18-22分
|
||||
- 净流入 > 1亿:22-25分
|
||||
|
||||
#### 3️⃣ 卖出压力评分 (0-20分)
|
||||
- 卖出比例 0-10%:20分 ✨(压力极小)
|
||||
- 卖出比例 10-30%:15-20分(压力较小)
|
||||
- 卖出比例 30-50%:10-15分(压力中等)
|
||||
- 卖出比例 50-80%:5-10分(压力较大)
|
||||
- 卖出比例 > 80%:0-5分(压力极大)
|
||||
|
||||
#### 4️⃣ 机构共振评分 (0-15分)
|
||||
- **机构+游资共振**:15分 ⭐(最强信号)
|
||||
- 仅机构买入:8-12分
|
||||
- 仅游资买入:5-10分
|
||||
|
||||
#### 5️⃣ 其他加分项 (0-10分)
|
||||
- **主力集中度**:席位越少越集中 (+1-3分)
|
||||
- **热门概念**:AI、新能源、芯片等 (+0-3分)
|
||||
- **连续上榜**:连续多日上榜 (+0-2分)
|
||||
- **买卖比例优秀**:买入远大于卖出 (+0-2分)
|
||||
|
||||
---
|
||||
|
||||
💡 **评分越高,表示该股票受到资金青睐程度越高!**
|
||||
⚠️ **但仍需结合市场环境、技术面等因素综合判断!**
|
||||
""")
|
||||
|
||||
st.markdown("---")
|
||||
|
||||
# 显示TOP10评分表格
|
||||
st.markdown("### 🥇 TOP10 综合评分排名")
|
||||
|
||||
top10_df = scoring_df.head(10).copy()
|
||||
|
||||
# 格式化显示
|
||||
st.dataframe(
|
||||
top10_df,
|
||||
column_config={
|
||||
"排名": st.column_config.TextColumn("排名", width="small"),
|
||||
"股票名称": st.column_config.TextColumn("股票名称", width="medium"),
|
||||
"股票代码": st.column_config.TextColumn("代码", width="small"),
|
||||
"综合评分": st.column_config.NumberColumn(
|
||||
"综合评分",
|
||||
format="%.1f",
|
||||
help="总分100分"
|
||||
),
|
||||
"资金含金量": st.column_config.ProgressColumn(
|
||||
"资金含金量",
|
||||
format="%d分",
|
||||
min_value=0,
|
||||
max_value=30
|
||||
),
|
||||
"净买入额": st.column_config.ProgressColumn(
|
||||
"净买入额",
|
||||
format="%d分",
|
||||
min_value=0,
|
||||
max_value=25
|
||||
),
|
||||
"卖出压力": st.column_config.ProgressColumn(
|
||||
"卖出压力",
|
||||
format="%d分",
|
||||
min_value=0,
|
||||
max_value=20
|
||||
),
|
||||
"机构共振": st.column_config.ProgressColumn(
|
||||
"机构共振",
|
||||
format="%d分",
|
||||
min_value=0,
|
||||
max_value=15
|
||||
),
|
||||
"加分项": st.column_config.ProgressColumn(
|
||||
"加分项",
|
||||
format="%d分",
|
||||
min_value=0,
|
||||
max_value=10
|
||||
),
|
||||
"顶级游资": st.column_config.NumberColumn("顶级游资", format="%d家"),
|
||||
"买方数": st.column_config.NumberColumn("买方数", format="%d家"),
|
||||
"机构参与": st.column_config.TextColumn("机构参与"),
|
||||
"净流入": st.column_config.NumberColumn("净流入(元)", format="%.2f")
|
||||
},
|
||||
hide_index=True,
|
||||
use_container_width=True
|
||||
)
|
||||
|
||||
st.markdown("---")
|
||||
|
||||
# 评分分布图表
|
||||
st.markdown("### 📊 评分分布可视化")
|
||||
|
||||
col1, col2 = st.columns(2)
|
||||
|
||||
with col1:
|
||||
# 综合评分柱状图
|
||||
fig1 = px.bar(
|
||||
top10_df,
|
||||
x='股票名称',
|
||||
y='综合评分',
|
||||
title='TOP10 综合评分对比',
|
||||
text='综合评分',
|
||||
color='综合评分',
|
||||
color_continuous_scale='RdYlGn'
|
||||
)
|
||||
fig1.update_traces(texttemplate='%{text:.1f}分', textposition='outside')
|
||||
fig1.update_layout(
|
||||
xaxis_tickangle=-45,
|
||||
showlegend=False,
|
||||
height=400
|
||||
)
|
||||
st.plotly_chart(fig1, use_container_width=True)
|
||||
|
||||
with col2:
|
||||
# 五维评分雷达图(显示第一名)
|
||||
if len(top10_df) > 0:
|
||||
first_place = top10_df.iloc[0]
|
||||
|
||||
fig2 = go.Figure(data=go.Scatterpolar(
|
||||
r=[
|
||||
first_place['资金含金量'] / 30 * 100,
|
||||
first_place['净买入额'] / 25 * 100,
|
||||
first_place['卖出压力'] / 20 * 100,
|
||||
first_place['机构共振'] / 15 * 100,
|
||||
first_place['加分项'] / 10 * 100
|
||||
],
|
||||
theta=['资金含金量', '净买入额', '卖出压力', '机构共振', '加分项'],
|
||||
fill='toself',
|
||||
name=first_place['股票名称']
|
||||
))
|
||||
|
||||
fig2.update_layout(
|
||||
polar=dict(
|
||||
radialaxis=dict(
|
||||
visible=True,
|
||||
range=[0, 100]
|
||||
)
|
||||
),
|
||||
showlegend=True,
|
||||
title=f"🥇 {first_place['股票名称']} 五维评分",
|
||||
height=400
|
||||
)
|
||||
st.plotly_chart(fig2, use_container_width=True)
|
||||
|
||||
st.markdown("---")
|
||||
|
||||
# 完整排名表格
|
||||
st.markdown("### 📋 完整评分排名")
|
||||
|
||||
st.dataframe(
|
||||
scoring_df,
|
||||
column_config={
|
||||
"排名": st.column_config.TextColumn("排名", width="small"),
|
||||
"股票名称": st.column_config.TextColumn("股票名称"),
|
||||
"股票代码": st.column_config.TextColumn("代码"),
|
||||
"综合评分": st.column_config.NumberColumn("综合评分", format="%.1f"),
|
||||
"顶级游资": st.column_config.NumberColumn("顶级游资", format="%d家"),
|
||||
"买方数": st.column_config.NumberColumn("买方数", format="%d家"),
|
||||
"机构参与": st.column_config.TextColumn("机构"),
|
||||
"净流入": st.column_config.NumberColumn("净流入(元)", format="%.2f")
|
||||
},
|
||||
hide_index=True,
|
||||
use_container_width=True
|
||||
)
|
||||
|
||||
|
||||
def display_recommended_stocks(result):
|
||||
"""显示推荐股票"""
|
||||
|
||||
|
||||
+322
@@ -0,0 +1,322 @@
|
||||
# 智瞰龙虎 AI智能评分系统说明
|
||||
|
||||
## 📊 评分体系概述
|
||||
|
||||
智瞰龙虎的AI智能评分系统对所有上榜股票进行100分制综合评分,从5个维度全面评估股票受资金青睐的程度。
|
||||
|
||||
## 🎯 五大评分维度
|
||||
|
||||
### 1️⃣ 买入资金含金量 (0-30分)
|
||||
|
||||
**评分规则**:根据买入游资的级别和数量加分
|
||||
|
||||
| 游资类型 | 单个加分 | 示例 |
|
||||
|---------|---------|-----|
|
||||
| **顶级游资** | +10分 | 赵老哥、章盟主、92科比、瑞鹤仙、小鳄鱼、养家心法、欢乐海岸、古北路、成都系、佛山系等 |
|
||||
| **知名游资** | +5分 | 深股通、沪股通、北向资金、中金公司、中信证券、国泰君安、海通证券等 |
|
||||
| **普通游资** | +1.5分 | 其他营业部席位 |
|
||||
|
||||
**计算逻辑**:
|
||||
```
|
||||
资金含金量得分 = 顶级游资数量 × 10 + 知名游资数量 × 5 + 普通游资数量 × 1.5
|
||||
(最高30分)
|
||||
```
|
||||
|
||||
**实战意义**:
|
||||
- 顶级游资参与,表示该股得到顶尖短线高手认可
|
||||
- 多个游资同时买入,形成合力,爆发力更强
|
||||
- 游资级别越高,对标的的筛选越严格,成功率越高
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 净买入额评分 (0-25分)
|
||||
|
||||
**评分规则**:根据净流入金额分段评分
|
||||
|
||||
| 净流入金额 | 得分范围 | 含义 |
|
||||
|-----------|---------|------|
|
||||
| < 1000万 | 0-10分 | 试探性买入 |
|
||||
| 1000-5000万 | 10-18分 | 中等力度买入 |
|
||||
| 5000万-1亿 | 18-22分 | 大力度买入 |
|
||||
| > 1亿 | 22-25分 | 重仓买入,信心极强 |
|
||||
|
||||
**计算公式**:
|
||||
```python
|
||||
if 净流入 < 1000万:
|
||||
得分 = (净流入 / 1000万) × 10
|
||||
elif 净流入 < 5000万:
|
||||
得分 = 10 + (净流入 - 1000万) / 4000万 × 8
|
||||
elif 净流入 < 1亿:
|
||||
得分 = 18 + (净流入 - 5000万) / 5000万 × 4
|
||||
else:
|
||||
得分 = 22 + min((净流入 - 1亿) / 1亿, 1) × 3
|
||||
```
|
||||
|
||||
**实战意义**:
|
||||
- 真金白银越多,表示资金信心越足
|
||||
- 大额净流入往往能推动股价强势上涨
|
||||
- 需结合市值判断,小盘股千万级已算大额
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 卖出压力评分 (0-20分)
|
||||
|
||||
**评分规则**:根据卖出/买入比例反向评分
|
||||
|
||||
| 卖出比例 | 得分 | 压力等级 | 实战意义 |
|
||||
|---------|------|---------|---------|
|
||||
| 0-10% | 20分 | 压力极小✨ | 几乎无卖出,主力高度一致看多 |
|
||||
| 10-30% | 15-20分 | 压力较小 | 少量获利了结,整体向上 |
|
||||
| 30-50% | 10-15分 | 压力中等 | 分歧开始加大,需谨慎 |
|
||||
| 50-80% | 5-10分 | 压力较大 | 卖盘较重,可能是出货信号 |
|
||||
| > 80% | 0-5分 | 压力极大⚠️ | 大概率是游资出货,避开 |
|
||||
|
||||
**计算公式**:
|
||||
```python
|
||||
卖出比例 = 总卖出金额 / 总买入金额
|
||||
|
||||
if 卖出比例 < 0.1:
|
||||
得分 = 20
|
||||
elif 卖出比例 < 0.3:
|
||||
得分 = 20 - (卖出比例 - 0.1) / 0.2 × 5
|
||||
elif 卖出比例 < 0.5:
|
||||
得分 = 15 - (卖出比例 - 0.3) / 0.2 × 5
|
||||
elif 卖出比例 < 0.8:
|
||||
得分 = 10 - (卖出比例 - 0.5) / 0.3 × 5
|
||||
else:
|
||||
得分 = 5 - min(卖出比例 - 0.8, 0.2) / 0.2 × 5
|
||||
```
|
||||
|
||||
**实战意义**:
|
||||
- 卖出压力小,说明主力没有出货意图
|
||||
- 压力大的股票可能是"一日游",风险高
|
||||
- 次日开盘容易受卖盘打压
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ 机构共振评分 (0-15分)
|
||||
|
||||
**评分规则**:根据机构和游资的参与情况
|
||||
|
||||
| 参与情况 | 得分 | 市场意义 |
|
||||
|---------|------|---------|
|
||||
| **机构+游资共振** | 15分⭐ | 最强信号!短线+中线资金共振 |
|
||||
| 仅机构买入 | 8-12分 | 基本面支撑,中长期看好 |
|
||||
| 仅游资买入 | 5-10分 | 短线炒作,波动性大 |
|
||||
| 无明显主力 | 0分 | 散户行为,不确定性高 |
|
||||
|
||||
**机构识别关键词**:
|
||||
- 机构专用、机构、基金、保险、社保
|
||||
- QFII、RQFII、券商、信托
|
||||
|
||||
**计算逻辑**:
|
||||
```python
|
||||
if 有机构 and 有游资:
|
||||
得分 = 15 # 机构游资共振,最高分
|
||||
elif 有机构:
|
||||
得分 = min(8 + 机构数量 × 2, 12)
|
||||
elif 有游资:
|
||||
得分 = min(5 + 游资数量 × 1, 10)
|
||||
else:
|
||||
得分 = 0
|
||||
```
|
||||
|
||||
**实战意义**:
|
||||
- 机构+游资共振,表示短中长期逻辑都得到认可
|
||||
- 纯游资炒作波动大,适合短线
|
||||
- 纯机构买入偏稳健,适合中长线
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ 其他加分项 (0-10分)
|
||||
|
||||
**评分细则**:
|
||||
|
||||
#### A. 主力集中度加分 (0-3分)
|
||||
```
|
||||
席位数1个:+3分(高度集中,主力控盘强)
|
||||
席位数2个:+2.5分
|
||||
席位数3个:+2分
|
||||
席位数4-5个:+1.5分
|
||||
席位数>5个:+1分(资金分散)
|
||||
```
|
||||
|
||||
#### B. 热门概念加分 (0-3分)
|
||||
```
|
||||
热门概念关键词:
|
||||
- AI、ChatGPT、算力、人工智能
|
||||
- 新能源、芯片、半导体、光伏
|
||||
- 军工、医药、5G、新材料
|
||||
- 锂电池、储能、元宇宙、游戏等
|
||||
|
||||
每出现1个热门概念:+0.3分
|
||||
最高3分
|
||||
```
|
||||
|
||||
#### C. 连续上榜加分 (0-2分)
|
||||
```
|
||||
单日上榜:+0分
|
||||
连续2日:+1分
|
||||
连续3日及以上:+2分
|
||||
```
|
||||
|
||||
#### D. 买卖比例优秀加分 (0-2分)
|
||||
```
|
||||
买入 / 卖出 ≥ 10倍:+2分(几乎无卖盘)
|
||||
买入 / 卖出 ≥ 5倍:+1.5分
|
||||
买入 / 卖出 ≥ 3倍:+1分
|
||||
买入 / 卖出 < 3倍:+0分
|
||||
```
|
||||
|
||||
**实战意义**:
|
||||
- 主力集中度高,控盘能力强,易拉升
|
||||
- 热门概念有题材支撑,容易受市场追捧
|
||||
- 连续上榜说明持续受关注
|
||||
- 买卖比例优秀说明一致性强
|
||||
|
||||
---
|
||||
|
||||
## 📈 综合评分解读
|
||||
|
||||
### 评分等级划分
|
||||
|
||||
| 分数区间 | 等级 | 市场意义 | 操作建议 |
|
||||
|---------|------|---------|---------|
|
||||
| **80-100分** | S级优秀⭐⭐⭐ | 顶级游资+大额净流入+无压力 | 重点关注,优先配置 |
|
||||
| **70-79分** | A级良好⭐⭐ | 资金认可度高,确定性强 | 积极跟进,适量配置 |
|
||||
| **60-69分** | B级中等⭐ | 有一定机会,需结合其他因素 | 谨慎参与,小仓位 |
|
||||
| **50-59分** | C级一般 | 优势不明显,不确定性较大 | 观望为主 |
|
||||
| **< 50分** | D级较差 | 资金认可度低或压力大 | 避免参与 |
|
||||
|
||||
### 高分股票特征
|
||||
|
||||
**90分以上股票通常具备**:
|
||||
1. ✅ 2个以上顶级游资参与
|
||||
2. ✅ 净流入5000万以上
|
||||
3. ✅ 卖出压力<10%
|
||||
4. ✅ 机构+游资共振
|
||||
5. ✅ 热门概念+主力集中
|
||||
|
||||
**这类股票次日大概率继续上涨!**
|
||||
|
||||
### 低分股票特征
|
||||
|
||||
**50分以下股票通常存在**:
|
||||
1. ❌ 无知名游资参与
|
||||
2. ❌ 净流入金额小
|
||||
3. ❌ 卖出压力大(>50%)
|
||||
4. ❌ 无机构参与
|
||||
5. ❌ 资金分散,无热点
|
||||
|
||||
**这类股票建议规避!**
|
||||
|
||||
---
|
||||
|
||||
## 💡 使用建议
|
||||
|
||||
### 1. 重点关注TOP10
|
||||
- 评分排名前10的股票,是资金最认可的标的
|
||||
- 🥇🥈🥉 前三名是重中之重
|
||||
|
||||
### 2. 结合其他指标
|
||||
AI评分虽然全面,但仍需结合:
|
||||
- ✅ 技术面:股价位置、技术形态
|
||||
- ✅ 市场环境:大盘走势、板块轮动
|
||||
- ✅ 基本面:公司质地、业绩情况
|
||||
- ✅ 情绪面:市场氛围、题材热度
|
||||
|
||||
### 3. 仓位管理
|
||||
根据评分等级配置仓位:
|
||||
```
|
||||
S级(80-100分):可配置30-40%
|
||||
A级(70-79分):可配置20-30%
|
||||
B级(60-69分):可配置10-15%
|
||||
C级及以下:不建议参与
|
||||
```
|
||||
|
||||
### 4. 止损纪律
|
||||
无论评分多高,都要设置止损:
|
||||
- 建议止损位:-5%至-8%
|
||||
- 跌破重要支撑位果断止损
|
||||
- 题材退潮及时离场
|
||||
|
||||
### 5. 最佳操作时间
|
||||
- **分析时间**:交易日晚上18:00-21:00
|
||||
- **决策时间**:当晚复盘,制定次日计划
|
||||
- **操作时间**:次日开盘后5-15分钟观察再介入
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 风险提示
|
||||
|
||||
1. **AI评分≠必涨承诺**
|
||||
- 评分只是综合评估,不保证一定上涨
|
||||
- 市场有不确定性,需独立判断
|
||||
|
||||
2. **龙虎榜数据滞后**
|
||||
- 龙虎榜为T日数据,次日才公布
|
||||
- 隔日跟随存在时间差
|
||||
|
||||
3. **游资操作灵活**
|
||||
- 游资可能"一日游"后快速撤离
|
||||
- 高分股票也可能次日分歧
|
||||
|
||||
4. **市场环境影响**
|
||||
- 大盘暴跌时,再高分也难涨
|
||||
- 题材退潮时,及时止损
|
||||
|
||||
5. **严格风险控制**
|
||||
- 务必设置止损位
|
||||
- 不要满仓单只股票
|
||||
- 理性投资,控制情绪
|
||||
|
||||
---
|
||||
|
||||
## 📚 案例分析
|
||||
|
||||
### 案例1:S级高分股票(90分)
|
||||
|
||||
**股票特征**:
|
||||
- 买入资金含金量:28分(3个顶级游资)
|
||||
- 净买入额:24分(净流入1.5亿)
|
||||
- 卖出压力:20分(几乎无卖出)
|
||||
- 机构共振:15分(机构+游资)
|
||||
- 加分项:3分(AI概念+主力集中)
|
||||
|
||||
**次日表现**:高开3%,盘中最高涨8%
|
||||
|
||||
**启示**:高分股票确定性强,可积极参与
|
||||
|
||||
---
|
||||
|
||||
### 案例2:C级低分股票(55分)
|
||||
|
||||
**股票特征**:
|
||||
- 买入资金含金量:12分(普通游资)
|
||||
- 净买入额:15分(净流入3000万)
|
||||
- 卖出压力:8分(卖出压力大)
|
||||
- 机构共振:10分(仅游资)
|
||||
- 加分项:10分(热门概念多)
|
||||
|
||||
**次日表现**:低开-2%,全天震荡走弱
|
||||
|
||||
**启示**:卖出压力大的股票,即使有热点也要谨慎
|
||||
|
||||
---
|
||||
|
||||
## 🎓 总结
|
||||
|
||||
智瞰龙虎的AI智能评分系统,通过5个维度、100分制,全面量化评估龙虎榜股票的投资价值。
|
||||
|
||||
✅ **优点**:
|
||||
- 客观量化,避免主观判断
|
||||
- 多维度评估,更加全面
|
||||
- 排名清晰,一目了然
|
||||
|
||||
⚠️ **注意**:
|
||||
- 评分是辅助工具,不是投资建议
|
||||
- 需结合市场环境和技术面
|
||||
- 严格风险控制,理性投资
|
||||
|
||||
**记住:市场有风险,投资需谨慎!** 🎯
|
||||
|
||||
+24
-4
@@ -47,25 +47,41 @@
|
||||
|
||||
## 📊 主要功能
|
||||
|
||||
### 1. 龙虎榜综合分析
|
||||
### 1. AI智能评分排名 ⭐ 核心功能
|
||||
- **多维度评分**: 对所有上榜股票进行100分制综合评分
|
||||
- **五大评分维度**:
|
||||
- 买入资金含金量 (0-30分):顶级游资加分多
|
||||
- 净买入额评分 (0-25分):真金白银越多分数越高
|
||||
- 卖出压力评分 (0-20分):压力越小分数越高
|
||||
- 机构共振评分 (0-15分):机构+游资共振最高分
|
||||
- 其他加分项 (0-10分):买卖比例、主力集中度、热门概念等
|
||||
- **排名展示**: TOP10排名,🥇🥈🥉奖牌标识
|
||||
- **可视化图表**:
|
||||
- 综合评分柱状图
|
||||
- 五维雷达图(第一名)
|
||||
- 进度条显示各维度得分
|
||||
- **完整数据**: 显示所有上榜股票的评分排名
|
||||
|
||||
### 2. 龙虎榜综合分析
|
||||
- **指定日期分析**: 分析特定日期的龙虎榜数据
|
||||
- **最近N天分析**: 分析最近几天的数据(1-10天)
|
||||
- **AI多维度分析**: 5位分析师从不同角度深度分析
|
||||
- **推荐股票清单**: 自动筛选次日大概率上涨的股票
|
||||
|
||||
### 2. 数据可视化
|
||||
### 3. 数据可视化
|
||||
- **AI评分排名图表**: 综合评分柱状图、五维雷达图
|
||||
- **资金净流入图表**: TOP20股票资金流向
|
||||
- **热门概念分布**: 概念出现频次统计
|
||||
- **活跃游资排名**: 游资净流入排行
|
||||
- **详细数据表格**: 完整的龙虎榜数据展示
|
||||
|
||||
### 3. 历史记录管理
|
||||
### 4. 历史记录管理
|
||||
- **自动存储**: 所有龙虎榜数据自动保存到数据库
|
||||
- **历史报告**: 查看历史分析报告
|
||||
- **数据统计**: 统计总记录数、股票数、游资数
|
||||
- **趋势分析**: 分析历史活跃游资和热门股票
|
||||
|
||||
### 4. PDF报告生成
|
||||
### 5. PDF报告生成
|
||||
- **专业报告**: 生成完整的PDF分析报告
|
||||
- **包含内容**:
|
||||
- 数据概况统计
|
||||
@@ -100,6 +116,10 @@ streamlit run app.py
|
||||
6. 保存分析报告
|
||||
|
||||
### 5. 查看结果
|
||||
- **🏆 AI评分排名**: 查看智能评分排名和图表(首选)
|
||||
- TOP10综合评分排名表
|
||||
- 评分柱状图和雷达图
|
||||
- 完整排名列表
|
||||
- **🎯 推荐股票**: 查看AI筛选的潜力股
|
||||
- **🤖 AI分析师报告**: 查看5位分析师的详细分析
|
||||
- **📊 数据详情**: 查看龙虎榜原始数据
|
||||
|
||||
Reference in New Issue
Block a user