潜龙出水·抓一浪 选股工具(赵云第三课 9.23 版)
课件命题:看懂主力启动信号 → 跟随主力,入场即是拉升(吃主升浪)。
本技能是第三课 9.23 精简版的工程化落地——只做「潜龙出水」一招(抓一浪),不与旧版二波「龙腾九霄」混淆(旧版见 zhushenglang-juejinchi-zhiyue 智跃版)。
完整干货(主力行为、四条件细节、画地为牢、进场点、三大铁律、离场纪律、案例数据、适用边界)见 references/lesson3-ganhuo.md。用户问「讲一讲第三课 / 第三课讲了什么」时,读该文件作答。
触发后直接执行(不要只讲方法,要出报告/选股池)
PY="<python 解释器路径>" # 例如 managed python:.../python.exe;或当前环境 python(select.py 内部已用 sys.executable 调用问财 CLI)
S="<技能目录>/zhaoyun-qianlong-chusheng/scripts/select.py" # 技能安装后的 select.py 绝对路径
OUT="<输出目录绝对路径>" # 必须是绝对路径(Windows 用 C:/... 形式,勿用相对路径)
"$PY" "$S" "<股票代码或名称>" --out "$OUT" # 单票潜龙出水主升报告
"$PY" "$S" "<代码>" --realtime --out "$OUT" # 叠加新浪实时价并标注
"$PY" "$S" --screen --watchlist 600519,000993,300750 --out "$OUT" # 指定股票池筛选
"$PY" "$S" --screen --iwencai "近10日涨停" --iwencai-limit 50 --iwencai-pages 2 --top 15 --out "$OUT" # 同花顺i问财宽口候选(主推)
"$PY" "$S" --screen --sina --max 40 --top 12 --out "$OUT" # 新浪涨幅榜候选(弱种子,见下)
--iwencai 数据源(同花顺 i 问财 OpenAPI,主推):
- 经 hithink-astock-selector/scripts/cli.py 调用问财网关,取自然语言查询的候选股,再由本工具四条件精筛。
- --iwencai "查询" 指定自然语言;缺省值=近10日涨停(宽口,命中最多)。可改如 "近5日涨停且回调" "低位涨停后横盘" 等。
- --iwencai-limit(每页条数,默认 50)、--iwencai-pages(最多翻页,默认 2)→ 候选规模上限 ≈ limit×pages。
- 环境变量自举:WorkBuddy 的 Bash 运行时不会 source .bash_profile/.bashrc,故 select.py 会主动读取这两个文件注入 IWENCAI_API_KEY/IWENCAI_BASE_URL 到子进程;只要变量写在 profile 里即可,无需手动 export。
输入:600519 / 贵州茅台 / sz300750 / 300750.SZ / *ST闻泰(代码或中文名均可,自动反查)。
输出:
- 单票 → <名称>_<代码>_潜龙出水报告.html(单文件、内嵌 SVG K线、离线可开);带 --realtime 时文件名含「实时」并叠加实时价水平线;--json 额外导出指标 JSON。
- 选股池 → 主升浪掘金池.html + 主升浪掘金池.json(两文件同目录)。HTML 为暗色看板(参考用户提供的可转债池样式):左侧档位导航(总览/A档核心/潜力股池/B档备选/C档观察/D档偏弱/风险区/口径说明,带计数徽章)+ 顶部统计卡 + 表格/卡片双视图切换 + 档位标题点击展开收起;点击个股行/卡片弹出个股详情弹层(SVG K线标注 + 四条件卡片 + 进场信号 + 适用性),详情为构建时预渲染的隐藏 div(id="det-<code>"),无需网络。近 40 交易日无涨停锚点的票不渲染 K线(显示提示)。
- 分档规则(tier_of):A=4/4 命中;B=①②成立且 ≥3 分;C=①②成立;RISK=破多头防线且涨停在 20 日内;D=其余。--top 控制每档展示条数。
跑完用 present_files 把 HTML 交给用户,并在回复里给两层结论(见下)。
判定体系速查(潜龙出水·四条件)
| # | 条件 | 工程判定(课件口径) |
|---|---|---|
| ① 位置 | 低位涨停 | 涨停日收在近 120 日区间下半部(≤50% 位)且为涨停=主力广告,抓主升成功率 98% |
| ② 空间 | 回调不破涨停 | 回调最低价 ≥ 涨停日 K 线实体最低位(多头防线 / 画地为牢下沿)=主力护盘 |
| ③ 时间 | 洗盘≤10交易日 | 涨停后到当前交易日数 ≤ 10(太长热度散、太短洗不净) |
| ④ 解套 | 解放套牢盘 | 当前价 ≥ 涨停日前 90 日最高收盘(牢笼顶/解套位)→ 扫清抛压 |
| 进场 | 冲破牢笼 + 突破5日线 | 突破回调区间最高价 且 站上 5 日均线(生命线),跟随不预测 |
入池门槛 / 分档(tier_of):
- A 档·核心池:4/4 全中(含解套),蓄势完成等进场信号。
- 潜力股池(放宽档):①低位涨停 + ②守防线 + ③正在洗盘 1-10 天(pullback_days∈[1,10]),解套④成不成都纳入——抓「涨停后蓄势洗盘」的票,是课件重点形态。
- B 档·备选:①②成立且 ≥3 分(洗盘偏久或已解套但形态偏弱)。
- C 档·观察:①②成立但形态待确认(刚涨停 / 洗盘超时未解套,2 分)。
- 风险区:破多头防线(keep_defense=False)且涨停在 20 日内——回避。
- D 档·偏弱:无近期涨停锚点或位置偏高。
排序:条件数↓ → 进场信号 → 新鲜度↑。
选股池候选来源(重要)
- 主推
--iwencai:同花顺 i 问财自然语言宽口候选(默认近10日涨停,返回量可达数百只,code_count见屏显),再用四条件精筛,是当前「股池数量太少」的根本解。需IWENCAI_API_KEY(见下)。 --watchlist:用户给出关注池(最贴合「近期涨停后回调」的标的),或问财手筛后喂入。--sina(新浪沪深A股涨幅榜)作为内置兜底种子,但对潜龙出水是弱种子:涨幅榜前列是当日最强、处于高位,几乎不会有「涨停后回调」形态,常命中 0 只——属预期,非 bug。- 东财涨停池(
push2ex)在本环境常被拦(rc:102),故未内置;有互联网的环境可自行扩展fetch_candidates_*。
回复用户时必须讲清两层结论
- 严格照课件标准的判定(脚本给的 潜龙出水 分档 / 命中 / 进场信号 / 实测数值)。
- 方法本身适用性偏差 —— 脚本按近 250 日日均振幅自动评级:
- 振幅 ≥4% 或涨停 ≥3 次 → 适配良好
- 振幅 ≥2% → 基本适配
- 振幅 <2% → 适配性弱:大市值 / 机构定价标的连板结构难出现,低位涨停/回调不破判定易失效 - 市场维度「找真龙」(热点板块领涨、连板天梯高度龙头)需同花顺 i 问财人工复核;脚本只负责技术维度。
> ⚠️ 非买卖建议。投资有风险,决策自负。
已踩过的坑(改动脚本时勿回退)
- 涨跌停限制必须自适应:主板 10%、创业板 300/301 与科创板 688/689 20%、ST 5%、北交所 30%。阈值取
limit × 0.97留余量;写死 9.8% 会漏判创业板涨跌停。 - 文件名非法字符:
*ST闻泰的*会让 Windows 写盘失败,必须safe()清洗\/:*?"<>|(已处理,生成ST闻泰_600745_...html)。 - 数据源:✅ 东财
push2his.eastmoney.com/api/qt/stock/kline/get(secid=市场.代码,1=沪/0=深,fqt=1前复权,volume 单位=手需 ×100)—— K线主源;✅ 新浪money.finance.sina.com.cn/.../CN_MarketData.getKLineData(前复权,volume 单位=股)—— 回退;✅ 东财searchapi.eastmoney.com/api/suggest/get做代码/名称反查;✅ 新浪hq.sinajs.cn实时(须带Referer: https://finance.sina.com.cn/,GBK)。❌ 新浪CN_MarketData.getHQNodeData该接口不存在(返回 Service not found);候选榜要用Market_Center.getHQNodeData。 - 数据需 ≥60 根日线才能跑(均线/形态),新股要显式报错。
- Git Bash 的
/tmp与 WindowsC:\tmp不是同一处,传--out一律用 Windows 绝对路径。 - 含中文的 heredoc 可能被截断,写脚本用 Write 工具。
- HTML 模板用
%格式化:模板里所有字面%必须写成%%(如width:100%%);占位符用%s/%d/%.2f。组合模板(主 html)与子串(cards/entry/fitbox)各自格式化,拼接时占位符数量必须与参数一一对应,否则报not all arguments converted。 - K 线不足 nbar 根时坐标偏移:SVG 只画最近
nbar根,w0 = N - nbar,全局索引经x(i)映射,i < w0的标注直接跳过,否则标记错位。 analyze_qianlong的 lookback=15:只考察近 15 个交易日内的涨停,否则回调期早已超出「洗盘 ≤10 日」语义。- 潜龙出水的「命中」要求 ①②同时成立:只按「≥3/4」会放进「涨停不在低位/已跌破防线」的伪信号。
回归测试
改脚本后至少跑这 4 组,覆盖涨跌停限制、命中与文件名清洗、选股池:
"$PY" "$S" 600519 --out "$OUT" # 主板10% / 适配性弱 / 大概率不触发(无近期涨停)
"$PY" "$S" 300750 --out "$OUT" # 创业板20% / 自适应 / 不触发
"$PY" "$S" *ST闻泰 --out "$OUT" # ST 5% / 文件名清洗(*→无)
"$PY" "$S" 000993 --out "$OUT" # 连板龙头 / 潜龙出水 4/4 命中(验证正向判定)
"$PY" "$S" --screen --watchlist 600519,000993,300750,000573 --out "$OUT" # 选股池冒烟(应命中000993)
"$PY" "$S" --screen --iwencai "近10日涨停" --iwencai-limit 20 --iwencai-pages 1 --out "$OUT" # 问财宽口候选(验证 IWENCAI_API_KEY 自举 + 股池数量大幅上升)
校验:单票 HTML d.count('%(')==0 且 d.count('__')==0 且 <svg>/</svg> 各 1;选股池 HTML 检查 data-tier="([A-Z]+)" id 六档(A/B/潜力股/C/D/风险区)齐全、详情弹层数==候选数、无残留 %%/%(、内联 JS 用 node --check 校验。
坑:看板模板是 % 格式化字符串,CSS 里的 100%/50% 必须写成 100%%/50%%,新增样式时最易漏。
与其它课/技能的关系
- 第一课《寻龙诀》龙头基因、第二课《震龙躯》震仓、第四课《观龙势》筹码峰、第五课《定龙时》分时狙击 —— 本技能只负责第三课 9.23 版的潜龙出水(抓一浪)。
- 旧版含二波「龙啸九霄/龙腾九霄」的综合技能:
zhushenglang-juejinchi-zhiyue(智跃版)、zhaoyun-lesson3-dianlongjing。若用户要二波/连板真龙,转那两个;若命中本技能(潜龙出水/低位涨停单招),优先用本技能。 - 同系列还有第一课
zhaoyun-lesson1-xunlongjue、第二课zhaoyun-lesson2-zhenlongqu、第五课zhaoyun-lesson5-dinglongshi。