股票热点动量分析师
A股热点板块量化排名引擎。pytdx直连通达信行情服务器,自动扫描全部概念板块, 筛选当日5日涨幅最高的TOP10热点板块,将其成分股与用户自选股做交集匹配, 对命中股票逐只查询60日K线并进行四维100分制评分,最终生成暗色主题可视化报告 (HTML + A4横向PDF)。
触发条件
用户说出以下任意关键词时触发:
- 「热点动量」
- 「热点分析」
- 「股票热点」
- 「板块动量」
- 「帮我分析下热点」
- 「看看今天什么板块热」
安装依赖
首次运行前,AI需要执行以下命令安装依赖(pytdx 脚本会自动安装自己,但 playwright chromium 需手动安装):
pip install pytdx playwright
python -m playwright install chromium
playwright chromium 约 150MB,下载时间视网络而定。若下载超时,PDF 功能会自动降级跳过,HTML 报告照常生成。
运行前提
- 通达信已安装:本地磁盘有
T0002目录(含hq_cache/infoharbor_block.dat) - 自选股已建立:通达信中有
.blk自选股板块文件(默认找QLB.blk,或 blocknew 目录下任意 blk 文件) - 网络可达通达信服务器:脚本直连
124.71.9.153:7709
执行方式(零手动配置)
python scripts/run_all.py [工作目录]
脚本启动时会自动完成:
- 安装 pytdx(如未安装)
- 探测通达信 T0002 目录(扫描 C/D/E 盘常见路径)
- 找到 blocknew/QLB.blk 自选股文件
- 推断 PDF 归档目录(用户桌面/龙虾热点动量排名)
只有一种情况需要手动指定:通达信装在非常规路径时,设置环境变量即可:
set TDX_BASE=F:/我的通达信/T0002
python scripts/run_all.py
工作目录参数可选,默认为当前目录。
执行流程
脚本自动完成五个阶段:
阶段3:获取TOP10热点板块
遍历 infoharbor_block.dat 中全部概念板块(通常200+个),通过 pytdx get_index_bars(4, 3, code, 0, 6) 逐一查询
最近6个交易日的板块指数日线K线,计算5日涨幅,降序排列取前10名。
关键参数:concept board indices (880xxx) 必须使用
category=4(日线) +market=3(概念板块)。 错误使用market=1(沪市) 或category=0(5分钟线) 会返回完全不一致的数据。 count 必须传 6,因为算5日涨幅需要6根K线(当前+前5根)。
阶段4:成分股与自选股交集
再次解析 infoharbor_block.dat,提取TOP10板块的完整成分股列表,
与用户自选股 .blk 文件做 Python 集合交集运算,生成命中股票清单。
阶段5:K线查询与四维评分
对每只命中股票,通过 pytdx get_security_bars 查询60日K线(含开盘/最高/最低/收盘),
计算5日、10日、20日、60日涨幅和20日加权动量,代入四维评分函数得出100分制总分。
详细评分逻辑见 references/scoring.md。
阶段6-7:报告生成
-
通过 pytdx
get_security_list获取全部A股代码→名称映射注意:沪市
get_security_list(1, 0)首页返回空列表,需跳过空页继续翻页(最多3次连续空页才停止)。 -
同一股票若出现在多个板块,取最高总分去重
-
生成暗色主题HTML报告,包含:
- TOP10板块彩色芯片摘要
- 四维柱状图(热点覆盖/板块强度/量能确认/个股动量)
- 水晶渐变评分徽章(烈焰/黄金/琥珀/青铜/钢铁)
- 5日/10日/20日涨跌幅(红涨绿跌,中国股市惯例)
-
通过 Playwright 将HTML渲染为A4横向PDF(chromium 未安装时跳过,只生成HTML)
-
自动复制PDF到
OUTPUT_DIR,文件名格式热点动量排名_YYYY-MM-DD.pdf
输出文件
| 文件 | 位置 | 用途 |
|------|------|------|
| hit_stocks.json | 工作目录 | 中间数据:命中股票清单 |
| hot_momentum_ranking.html | 工作目录 | HTML报告(浏览器可直接打开,Ctrl+P可导出PDF) |
| 热点动量排名_YYYY-MM-DD.pdf | 工作目录 + 归档目录 | PDF报告(A4横向,适合打印和存档,chromium可用时生成) |
已知 pytdx 问题与修复
| 问题 | 原因 | 修复方案 |
|------|------|---------|
| 沪市股票名称全部缺失 | get_security_list(1, 0) 首页返回空列表 | 允许跳过空页,连续3次空页才停止翻页 |
| 板块5日涨幅与通达信不符 | get_index_bars 参数全错(category/market/count) | 固定使用 get_index_bars(4, 3, code, 0, 6) |
| Python 3.12 f-string语法错误 | 不支持 f-string 内反斜杠转义引号 | 提前将表达式赋值给变量再插入 f-string |
评分体系速览
| 维度 | 权重 | 考察内容 | |------|------|---------| | 5日短期爆发力 | 30% | 近5日涨幅,捕捉热点启动 | | 10日持续性验证 | 30% | 近10日涨幅,排除"一日游" | | 20日加权动量 | 25% | 近20日加权涨幅,验证中期趋势 | | 60日中期动量 | 15% | 近60日涨幅,确认上升通道 |
总分水晶徽章:≥70🔥烈焰 / ≥60🥇黄金 / ≥50🟠琥珀 / ≥40🥉青铜 / <40⚙️钢铁
完整评分说明见:references/scoring.md
数据源架构
pytdx (通达信行情服务器) 本地通达信 (T0002目录)
├── get_index_bars(4,3,...)→板块K线 ├── infoharbor_block.dat → 板块成分股
├── get_security_bars → 个股K线 └── blocknew/*.blk → 自选股列表
└── get_security_list → 股票名称
注意事项
- 首次运行约需10-30秒:遍历200+板块 + 安装依赖(若未安装)
- 每日盘后运行一次即可,结果按日期自动归档便于对比
- 涨幅公式使用实际股价
close/close_ago-1,非通达信指数100公式 - 中国股市惯例:红色=涨,绿色=跌(与美股相反)
- 脚本请求间隔 0.03~0.05 秒,避免对行情服务器压力过大
微信扫一扫