99%的人没发现:通达信「拈花指」两个致命bug,信号从236次暴跌至60次

生成日期:2026-07-23 | 数据源:westock-data(沪深300,299只有效 × 260根日K,前复权)| 范围:结构性校准(分布+信号频次),未跑前向收益回测

一、定位

「拈花指选股」是一套多周期摆动量 + 动量共振 + 短线突破的合成选股:用三层 RSV/KD、天地线 TD、综合能量 ZHND、反向动能 FXND 合成 8 个分量,再求 13/21/34 日平均得 THKX/THZX/THMX 三线,最终以快线 THXHX 同时上穿三线 + 价>MA5 + 价>2日前高 作为启动信号。本质是"低位转折 + 突破"型,与「龙头启动」思路同源。

二、原版两个坑

  1. 恒真条件(THKX AND THZX AND THMX)<10 在 TDX 里 AND 返回 0/1,再 <10 永远成立——这条件等于没写。作者本意应是"三线仍在低位(底部启动)",但写错失效。

  2. 三线上穿冗余:THKX/THZX/THMX 本质是"同组 8 分量之和 ÷ 13/21/34",99.5% 时间恒有 THKX>THZX>THMX,因此 THXHX 上穿 THKX 时必然同时上穿另两条——三重 CROSS 实际等价于只判 THKX(复合能为负时排序翻转,保留三条可兼容该情形)。

三、结构性校准(数据实测)

因公式最长用到 LLV(HIGH,180),需用 ≥180 根历史;缓存拉到 260 根重算。THMX 三线分布与信号触发量如下:

THMX 分位p5p10p20p30p40p50mean
数值1.763.025.157.339.5812.0113.56
版本信号数较原版236滤波
原版(去恒真条件后)236
+ 低位<102303%
+ 低位<516829%
优化版(低位<5 + 放量1.5x)6075%
关键发现:THMX 中位数 12,原版 236 个信号全部发生在 THMX<15 时。所以即便把恒真条件改写成作者本意的 THMX<10,也只滤掉 3%——原"低位"门槛形同虚设。要真有过滤力须压到 THMX<5(底部约 15-20% 分位)。

四、优化版公式(通达信,可直接用)

{=== 拈花指选股(优化版)参数区 ===}
低位阈值:=5;        {THMX 低位门槛;实测 p10≈3, p20≈5, 中位12;取5≈底部15-20%分位}
放量倍数:=1.5;      {放量确认;取自"龙头启动"回测结论(放量显著降假突破)}

{=== 三层 RSV/KD ===}
SSRQRSV:=(CLOSE-LLV(LOW,13))/(HHV(HIGH,13)-LLV(LOW,13))*100;
JRQRSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
JRKZ:=(SMA(JRQRSV,3,1)-18)*1.6;
JRKZPH:=SMA(JRKZ,3,1);
BRRQRSV:=(CLOSE-LLV(LOW,100))/(HHV(HIGH,100)-LLV(LOW,100))*100;
BRKZ:=SMA(BRRQRSV,10,1);
BRQSX:=(EMA(SMA(BRKZ,8,1),34)-25)*2;

{=== 天地线 TD ===}
BSJQP:=POW(MA(CLOSE,5),2)+MA(CLOSE,5);
BSJZD:=POW(MA(LOW,5),2)+MA(LOW,5);
BSJZG:=POW(MA(HIGH,5),2)+MA(HIGH,5);
TDGYH:=((BSJQP-LLV(BSJZD,64))/(HHV(BSJZG,64)-LLV(BSJZD,64))*150+50)/2;
TDKZ:=SMA(TDGYH,3,1)*1.5;
TDDZ:=SMA(TDKZ,3,1);
TDJZ:=3*TDKZ-2*TDDZ;

{=== 综合能量 ZHND ===}
SZQRSVJZ:=(SSRQRSV+JRQRSV+BRRQRSV)/3;
ZHND1:=((JRKZ+JRKZ+BRKZ+TDKZ)/4-15)*1.67;
ZHND2:=((JRKZPH+JRKZPH+BRQSX+TDDZ)/4-15)*1.67;
ZHND3:=((SSRQRSV+BRRQRSV*2+SZQRSVJZ+ZHND1+ZHND2+TDGYH+TDKZ+TDDZ+TDJZ)/10-15)*1.67;

{=== 反向动能 FXND(多周期倒Williams%R) ===}
WRFXND:=(HHV(HIGH,5)-CLOSE)/(HHV(HIGH,5)-LLV(LOW,5))*(-1)+0.9;
SRFXND:=(HHV(HIGH,10)-CLOSE)/(HHV(HIGH,10)-LLV(LOW,10))*(-1)+0.92;
SWRFXND:=(HHV(HIGH,15)-CLOSE)/(HHV(HIGH,15)-LLV(LOW,15))*(-1)+0.93;
WSWRFXND:=(HHV(HIGH,55)-CLOSE)/(HHV(HIGH,55)-LLV(LOW,55))*(-1)+0.94;
BSJRFXND:=(HHV(HIGH,89)-CLOSE)/(HHV(HIGH,89)-LLV(LOW,89))*(-1)+0.95;
BSERJRFXND:=(HHV(HIGH,120)-CLOSE)/(HHV(HIGH,120)-LLV(LOW,120))*(-1)+0.91;
BSBAJRFXND:=(HHV(HIGH,180)-CLOSE)/(HHV(HIGH,180)-LLV(LOW,180))*(-1)+0.96;
FXNDJQ:=((WRFXND*8+SRFXND*8+SWRFXND*8+WSWRFXND+BSJRFXND+BSERJRFXND+BSBAJRFXND)/28-0.1)*185;
FXNDPH:=SMA(FXNDJQ,3,1);
FXNDQS:=(SMA(FXNDPH,8,1)-8)*1.2;

{=== 最终合成 TH 三线(同组8分量 ÷ 13/21/34) ===}
THKX:=(ZHND1+ZHND2+ZHND3+TDKZ+TDDZ+TDJZ+FXNDQS+BRQSX)/13;
THZX:=(ZHND1+ZHND2+ZHND3+TDKZ+TDDZ+TDJZ+FXNDQS+BRQSX)/21;
THMX:=(ZHND1+ZHND2+ZHND3+TDKZ+TDDZ+TDJZ+FXNDQS+BRQSX)/34;
THXHX:=(JRKZ+BRKZ+FXNDPH*2)/4,COLORRED;

{=== 选股信号(优化) ===}
{原版 (THKX AND THZX AND THMX)<10 恒真无效 -> 改为低位门槛 THMX<低位阈值}
{三线上穿在99.5%情形等价于上穿最快的THKX;保留三条件以兼容复合能为负时的排序翻转}
拈花指选股:CROSS(THXHX,THKX) AND CROSS(THXHX,THZX) AND CROSS(THXHX,THMX)
AND THMX<低位阈值
AND C>MA(C,5) AND C>REF(H,2)
AND VOL>MA(VOL,5)*放量倍数;

五、改动清单

  • 修bug恒真条件 (THKX AND THZX AND THMX)<10 → THMX<低位阈值(默认 5,可调 3~10)。

  • 加放量新增 VOL>MA(VOL,5)*放量倍数(默认 1.5x),抑制低量假突破(来自龙头启动回测结论)。

  • 参数区顶部抽出 低位阈值 / 放量倍数 两个旋钮,便于调参。

  • 注释各段加中文说明,保留三重 CROSS 并注明其等价性。

六、使用边界与说明

  • 本公式需 ≥180 根日K才能完整计算(最长用到 LLV/HHV(180));历史不足会退化。

  • 本次仅为结构性校准:基于 THMX 实际分布校准了"低位"门槛、并统计了信号频次,未跑前向收益回测。信号 236→60 只说明更"挑",不代表收益更优——需按 A 方案跑前向收益才能定论。

  • 仍是入场信号,无离场/止损规则,须自配(如跌破 THMX 或固定 -7% 止损)。

  • 低位阈值放量倍数 为可调旋钮:想多信号调大阈值/降倍数,想更严反之。


相关阅读

服务热线

18020657357

微信客服

微信客服