潜龙出水·放量五池选股(赵云第三课 9.23 版)
课件命题:看懂主力启动信号 → 跟随主力,入场即是拉升(吃主升浪)。
本工具把第三课「潜龙出水(抓一浪)」工程化,并在课程四条件基础上显式加入「放量」维度(课程原话:「价格是城,量能是兵」),按满足的信号个数把候选股分成五等池,方便分批跟踪。
完整干货见 references/lesson3-ganhuo.md(从《点龙睛·抓龙头吃主升》9.23 版课件 66 页提取)。用户问「讲讲第三课 / 第三课讲了什么」时,读该文件作答。
触发后直接执行(出报告 / 选股看板,不要只讲方法)
PY="<python 解释器>" # managed python:.../python.exe(screener.py 用 sys.executable 调用问财 CLI,无需指定)
S="<技能目录>/qianlong-chusheng-screener/scripts/screener.py"
OUT="<输出目录绝对路径>" # 必须绝对路径(Windows 用 C:/... 形式)
"$PY" "$S" "<代码或名称>" --out "$OUT" [--json] # 单票潜龙出水六信号报告
"$PY" "$S" "<代码>" --realtime --out "$OUT" # (占位)叠加实时价
"$PY" "$S" --screen --iwencai "近10日涨停" --iwencai-limit 50 --iwencai-pages 2 --top 15 --out "$OUT" # 同花顺i问财宽口候选(主推)
"$PY" "$S" --screen --watchlist 600519,000993,300750 --out "$OUT" # 指定股票池筛选
"$PY" "$S" --screen --sina --top 12 --out "$OUT" # 新浪涨幅榜候选(弱种子)
--iwencai 数据源(同花顺 i 问财 OpenAPI,主推):
- 经 hithink-astock-selector/scripts/cli.py 取自然语言查询候选,再本工具六信号精筛。
- 支持 | 分隔多条 query 取并集(例:"近10日涨停|今日涨幅大于5%|昨日涨停"),可按代码自动去重。
- 缺省值即上述三组:单条 query 每次返回的集合会波动,覆盖面不足会漏掉真正的核心票(实测:100 只候选时核心池 0 只,扩到 139 只后回到 4 只),务必保留多组并集。
- --iwencai-limit(每页条数,默认 50)、--iwencai-pages(每组翻页数,默认 2)。
- 环境变量自举:Bash 运行时不一定 source ~/.bash_profile,screener.py 会主动读取 IWENCAI_API_KEY/IWENCAI_BASE_URL 注入子进程;写在 profile 即可,无需手动 export。
输入:600519 / 贵州茅台 / sz300750 / 300750.SZ 均可,自动反查。
输出:
- 单票 → <名称>_<代码>_潜龙出水报告.html(内嵌 SVG K线+四条件清单+六信号卡+适用性,离线可开);--json 另导出指标 JSON。
- 选股池 → 潜龙出水五池看板.html + 潜龙出水五池.json。HTML 为暗色看板:左侧档位导航(总览/核心池/潜力池/备选池/观察池/风险池,带计数徽章)+ 顶部统计卡(候选总数/入池数/核心数/进场信号数)+ 表格/卡片双视图切换 + 点击个股弹层。
- 弹层内容顺序刻意把「满足条件」放最前:① 标签栏(所属池/六信号命中/今日涨停/今日首板/★进场触发)→ ② 醒目摘要条(2026-09-29 用户要求,点开即见四格):低位涨停(日期@价格)/洗盘几天(防线守住或已破)/解套位(近30日实体最高,已/未解套)/进场点(已触发=涨停或放量大阳,未触发=等待)→ ③ 四条件清单(①②③④逐条 ✓/✕ 并附实测数值)→ ④ 六信号明细 → ⑤ SVG K线(只标三条线:涨停日三角/涨停板最低价防线/解套位(近30日实体最高)——不画洗盘高点线,因洗盘段在30日窗口内时它与解套位天然重合)→ ⑥ 一句话结论 + 关闭按钮。原因:早期版本把 K 线图放最前,「满足条件信息」被压到手机折叠线以下看不出来。
- 详情为预渲染隐藏 div(id="det-<code>"),无需网络;点击用事件委托(document.addEventListener('click') 匹配 [data-code]),而非内联 onclick——部分手机浏览器/WebView 会屏蔽内联脚本属性导致点了没反应;另支持 ESC 与点击遮罩关闭。
判定体系:六信号(2026-09-29 终版口径,用户强调「一定不能更改我的条件」)
> 用户口径(四条件,按 2026-09-29 案例图「稳稳吃10cm涨停」定稿):①低位涨停,一定要涨停 → ②涨停后一定要洗盘,洗盘<10个交易日,洗盘时不跌破低位涨停板的最低价 → ③解放套牢盘,高点取30个交易日内的最高点(实体K线,不含影线)→ ④进场点=再次放量大阳或涨停,同时解套并突破5日均线。
| # | 信号 | 工程判定 |
|---|---|---|
| S1 | 低位涨停 | 近 20 日内存在涨停锚点,锚点收盘处近 120 日区间下 45%(长期底部) |
| S2 | 放量涨停 | 涨停当日量能 ≥ 近 20 日均量 ×1.5(课程「量能是兵」)。① 这一条要求带放量 |
| S3 | 洗盘≤10日 | 涨停日距最新交易日 ≤ 10 个交易日(太长热度散、太短洗不净) |
| S4 | 洗盘不破涨停板最低价 | 洗盘期间最低价 ≥ 涨停日最低价 ×0.995(防线=低位涨停板的最低价) |
| S5 | 进场点触发 | 最新交易日:再次放量大阳(涨幅≥5%且量比≥1.5)或涨停(涨停不要求放量)+收盘突破洗盘期最高点+收盘站上5日均线(同日) |
| S6 | 解放套牢盘 | 最新收盘 ≥ 近 30 个交易日「实体」最高点(max(开盘,收盘),不含上影线;不含最新日) |
进场点=突破洗盘期最高点那一天(锚点次日起至前一日的最高价),且该日再次放量大阳或涨停+站上5日线——同日才算触发。
五池分级(2026-09-29 终版:四条件)
| 池 | 判定 |
|---|---|
| 核心池 | 四条件全满足(此时今日必然已放量大阳或涨停) |
| 潜力池 | 缺 1 个条件(如:进场未解套 / 洗盘超时 / 涨停未放量等) |
| 备选池 | 缺 2 个条件(典型:形态完整但未突破——缺进场+解套) |
| 观察池 | 今日首板全部纳入(今日涨停且近10个交易日内无其他涨停)——唯一入口,优先级高于条件计数 |
| 风险池 | 缺 3 个及以上条件(含今日放量大阳但无形态者)/洗盘跌破涨停日最低价/近期无涨停锚点 |
> 口径变更史(防止将来来回摇摆):S4 防线 9-28=涨停日最低价 → 9-29上午=涨停日收盘价 → 9-29终版=涨停日最低价(案例图定稿,当前实现)。S6 解套位 9-29 终版=实体最高(不含影线)。核心池曾短暂要求「今日放量涨停」,终版=四条件全满足(涨停分支不要求放量)。
排序:分数↓ → 进场信号(True优先) → 新鲜度(洗盘天数)↑。
选股候选来源(重要)
- 主推
--iwencai:同花顺 i 问财自然语言宽口 + 六信号精筛。需IWENCAI_API_KEY(见上)。 - 必须多组 query 取并集:单条 query 每次返回的股票集合会波动(实测同一 query 两次跑,核心票江淮汽车/九阳股份会漏掉),因此
--iwencai支持|分隔多条,内置默认值为
近10日涨停|今日涨幅大于5%|昨日涨停(实测候选从 100 → 139 只,核心池 0 → 4 只)。 - 未指定任何候选源时(只有
--screen)自动使用上述默认三组,不会空跑。 --exclude-st:排除 ST / *ST 标的(ST 股涨停仅 5%,形态易失真,默认不过滤)。--watchlist:用户关注池(最贴合「近期涨停后回调」的标的),或问财手筛后喂入。--sina:新浪沪深A股涨幅榜兜底种子,但对潜龙出水是弱种子(涨幅榜前列高位,常命中 0 只)——属预期,非 bug。- 东财
push2his在本环境偶发被拦,已内置新浪回退;有网环境自动切换。
回复用户时必须讲清两层结论
- 严格照课件标准的判定(脚本给的六信号 / 命中分 / 所属池 / 进场信号 / 实测数值)。
- 方法适用性偏差 —— 脚本按近 250 日日均振幅自动评级:
- 振幅 ≥4% 或涨停 ≥3 次 → 适配良好
- 振幅 ≥2% → 基本适配
- 振幅 <2% → 适配性弱:大市值/机构定价标的连板结构难现,低位涨停/回调不破判定易失效 - 市场维度「找真龙」(热点板块领涨、连板天梯高度龙头)需 i 问财人工复核;脚本只负责技术维度。
> ⚠️ 非买卖建议。投资有风险,决策自负。
已踩过的坑(改动脚本时勿回退)
- 涨跌停限制必须自适应:主板 10%、创业板 300/301 与科创板 688/689 20%、ST 5%、北交所 30%。阈值取
limit × 0.97留余量;写死 9.8% 会漏判创业板涨跌停。 - 文件名非法字符:
*ST闻泰的*会让 Windows 写盘失败,必须safe()清洗\/:*?"<>|。 - 数据源:✅ 东财
push2his.eastmoney.com/api/qt/stock/kline/get(secid=市场.代码,fqt=1前复权,volume 单位=手需 ×100)——K线主源;✅ 新浪money.finance.sina.com.cn/.../CN_MarketData.getKLineData(前复权,volume 单位=股)——回退;✅ 东财searchapi.eastmoney.com/api/suggest/get反查;❌ 新浪CN_MarketData.getHQNodeData不存在,候选榜要用Market_Center.getHQNodeData。 - 数据需 ≥60 根日线才能跑(均线/形态),新股显式报错。
- HTML 模板用拼接注入 CSS:CSS 里
100%必须写成100%(本工具是拼接非%格式化,勿再写成100%%,否则污染样式)。 - 脚本文件名勿叫
select.py:会与 Python 标准库内建模块select冲突(import select永远命中标准库)。本工具已命名为screener.py。 - K线不足 nbar 根时坐标偏移:SVG 只画最近
n根,w0 = N - n,全局索引经X(i)映射,i < w0的标注直接跳过。 - 分级按四条件计数(①低位放量涨停 ②洗盘≤10日不破涨停日最低价 ③进场 ④解套):核心=四条全中;缺1→潜力、缺2→备选、今日首板→观察、缺3+或破防线→风险。
- 防线口径变更史:终版=涨停日最低价(
core.pydefense = bars[i]['l'])。曾短暂改为收盘价后按案例图改回。若再调整,必须同步改svg_kline的「涨停板最低价(防线)」标注、screener.py条件②文案与页脚策略串、摘要条防线文字,以及本文件 S4 表格行。 - 进场日不要给涨停附加放量要求(2026-09-29 踩坑):用户口径是「再次放量大阳或涨停」——涨停分支不考量比(缩量一字板也是板),放量只约束大阳分支。曾因给涨停也加
量比≥1.5把襄阳轴承(量比0.83)/雪龙集团(1.08) 误杀出核心池。核心池=四条件全满足即可,不另设放量门槛。 - 解套位必须用「实体」最高(2026-09-29 终版):
pre_hi = max(max(o,c))不含上影线。曾用max(h)被用户纠正「30个交易日内的最高点(实体K线)」。单测用例7 专门守护这一点。
回归测试
改脚本后至少跑这组,覆盖涨跌幅限制、命中、文件名清洗、选股池:
"$PY" "$S" 600519 --out "$OUT" # 主板10% / 适配性弱 / 大概率不触发(无近期涨停)
"$PY" "$S" 300750 --out "$OUT" # 创业板20% / 自适应 / 不触发
"$PY" "$S" *ST闻泰 --out "$OUT" # ST 5% / 文件名清洗(*→无)
"$PY" "$S" 000993 --out "$OUT" # 连板龙头 / 潜龙出水 6/6 核心池(验证正向判定)
"$PY" "$S" --screen --watchlist 600519,000993,300750,000573 --out "$OUT" # 选股池冒烟(应命中000993)
"$PY" "$S" --screen --iwencai "近10日涨停" --iwencai-limit 20 --iwencai-pages 1 --out "$OUT" # 问财宽口(验证 Key 自举+五池分布)
校验:单票 HTML d.count('%%')==0 且 d.count('%(')==0 且 <svg>/</svg> 各 1;看板 HTML 检查六档 section 齐全、详情弹层数==候选数、无残留 %%/%(。
与其它课/技能的关系
- 第一课《寻龙诀》龙头基因、第二课《震龙躯》震仓、第四课《观龙势》筹码峰、第五课《定龙时》分时狙击。
- 同系列「潜龙出水」单招旧版:
zhaoyun-qianlong-chusheng(六档板,无显式放量维度);二波「龙腾九霄」:zhushenglang-juejinchi-zhiyue智跃版。本技能是其放量增强 + 五池分级的独立版本。