我把代码原封不动跑了一遍回测,出来的数字让我不忍心告诉他。
先说结论,不绕弯子。
过去10个月,沪深300里触发这个公式的股票:66次。
这66次之后,10个交易日平均跌了 -7.9%,胜率只有 32%。
随便闭眼买沪深300指数同期拿着不动,都比这个收益好。
公式名字叫"龙头启动",信号条件是一根K线同时贯穿四根均线粘合区,再配合放量。说实话,第一次看到代码我也觉得挺像样的。
但行情不会因为你"看起来有道理"就给你发钱。
为什么它会亏钱?
你仔细看它的逻辑,本质是一个趋势突破型工具。
四线粘合 = 市场在积蓄能量;一根K线贯穿 = 启动信号。按照设计,它应该用在趋势明确、宽度充足的行情里。
问题是,过去这10个月,沪深300是什么行情?
防御板块轮动 + 主线持续退潮 = 典型的熊市结构。
在这种行情里,所谓的"突破"十个有九个是假的——价格冲一下马上跌回来,被反复收割。
我加了一个条件测试:只在"站上60日线的股票占比超过50%"的时候才触发公式。结果整个10个月只出了1个信号。
这个1,不是公式失灵了,而是它正确地告诉你:这段时间不该做。
但原版代码没有这个判断,所以它一直在熊市里不断发出假信号。
原版还有两个硬伤
第一,没有成交量确认。放量是验证真假突破最简单最有效的手段,原版完全没写。
第二,没有离场规则。只有买信号,没有止损/止盈逻辑,在熊市里拿着不动就是慢性失血。
优化版:熊市要过滤,牛市才做
核心改动三处:
① 激活那个被算出来却从来没用的"BRQR"变量——要求从低位启动(50~85区间),不要高位追涨。
② 加上放量:今日成交量超过5日均量的1.5倍。假突破通常是缩量的,真突破有资金跟随,这个条件肉眼可见地降低了假信号比例。
③ 加上大盘多头过滤:沪深300指数在60日均线上方才做,不在空头趋势里硬做。
JQJJ:=(CLOSE*2+HIGH+LOW+OPEN)/5; JXS1:=(EMA(JQJJ,4)+MA(JQJJ,8)+MA(JQJJ,16))/3; JXS2:=(EMA(JQJJ,9)+MA(JQJJ,18)+MA(JQJJ,36))/3; JXS3:=(EMA(JQJJ,13)+MA(JQJJ,26)+MA(JQJJ,52))/3; JXS4:=(EMA(JQJJ,24)+MA(JQJJ,48)+MA(JQJJ,96))/3; BRQR:=EMA(100*(CLOSE-LLV(LOW,100))/(HHV(HIGH,100)-LLV(LOW,100)),5); SSSG:=MAX(MAX(JXS1,JXS2),MAX(JXS3,JXS4)); SSXG:=MIN(MIN(JXS1,JXS2),MIN(JXS3,JXS4)); 粘合:=(SSSG-SSXG)/SSXG<0.04; 穿线:=HIGH>SSSG AND LOW<SSXG; 多头:=JXS1>REF(JXS1,1) AND JXS2>REF(JXS2,1) AND JXS4>REF(JXS4,2); 强收:=CLOSE>OPEN AND (HIGH-CLOSE)/(CLOSE-OPEN)<0.2; 放量:=VOL>MA(VOL,5)*1.5; 低位启动:=BRQR>50 AND BRQR<85; 大盘多头:=INDEXC>MA(INDEXC,60); 龙头启动优化:粘合 AND 穿线 AND 多头 AND 强收 AND 放量 AND 低位启动 AND 大盘多头;
一句话总结
这个公式本身设计不差,但它需要大盘配合才能生效。
在熊市里,它不是"辅助决策的工具",而是"反复亏钱的加速器"。
加一个大盘宽度过滤、一个放量条件、一个低位启动约束——熊市自动熄火,牛市精准出击。
工具本身没有错,错的是在错误的市场阶段使用它。
