我实测了沪深300 10个月的数据:信号数是 1个。
1个信号,不够用。
问题不是公式设计思路错了,是几个条件相互叠加之后,交集太小。
各条件单独看,其实都不稀有
把17个条件逐一拆开看单条件触发次数:
KDJ金叉:10,488次(约19%)
KDJ超卖拐头:7,041次(约13%)
站上五日线:28,001次(约52%)
C>O阳线:24,547次(约45%)
六十日线支撑:27,070次(约50%)
量比1~5倍:23,100次(约43%)
VOL>MA5×1.5:2,474次(约4.6%)
MACD底背离:127次(约0.24%)
MACD底背离本身就极少(127次),再叠加VOL>MA5×1.5(底背离当天同时放量到1.5倍于5日均量)——这两件事同时成立的概率极低,导致全公式交集只有1个信号。
真正的守门员是谁?
不是量比(23%满足),不是均线(50%满足),而是:
VOL>MA5×1.5——5日均量的1.5倍放量要求,本身就已经很严格。
原版公式同时要求三个量能条件:
放量:=VOL>REF(VOL,1)*1.5; {今日比昨日放量50%}
量比:=VOL/MA(VOL,10)>1 AND <5; {相对10日均量1~5倍}
量能条件:=放量 AND 量比 AND VOL>MA(VOL,5)*1.5;三个条件同时满足,约等于"今天不仅比昨天放量,还比5日均量放量50%,同时不能超过10日均量5倍"——这个组合在底背离当天极少出现。
而且还有一个问题:量比"1~5倍"这个上界在实际行情中几乎触不到,43%的样本满足——它基本上等价于"VOL/MA(VOL,10)>1",没有上限约束的意义。
优化版:松开量能约束,保留核心逻辑
思路:保留底背离这个真正的核心约束,量能条件适度放宽,让公式有信号可用。
{=== MACD底背离(原版核心条件,保留) ===}
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
A1:=BARSLAST(REF(CROSS(DIFF,DEA),1));
底背离:=REF(CLOSE,A1+1)>CLOSE AND DIFF>REF(DIFF,A1+1) AND CROSS(DIFF,DEA);
{=== KDJ双重确认(原版逻辑,OR关系保留) ===}
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K值:=SMA(RSV,3,1);
D值:=SMA(K值,3,1);
J值:=3*K值-2*D值;
KDJ超卖拐头:=REF(J值,1)<20 AND J值>REF(J值,1);
KDJ金叉:=CROSS(K值,D值);
KDJ条件:=KDJ超卖拐头 OR KDJ金叉;
{=== 均线条件(保留原版 OR 逻辑) ===}
MA5:=MA(CLOSE,5); CXHZB:=MA(CLOSE,10); MA60:=MA(CLOSE,60);
站上五日线:=CLOSE>MA5;
五日线拐头:=MA5>REF(MA5,1) AND MA5>CXHZB;
六十日线支撑:=CLOSE>MA60*0.95;
均线条件:=站上五日线 AND (五日线拐头 OR 六十日线支撑);
{=== 量能条件(关键优化:松开三重叠加) ===}
{原版三重叠加:VOL>昨*1.5 AND 量比1~5 AND VOL>MA5*1.5 → 信号归零}
{改为:只要量比>1.5倍(即VOL>MA(VOL,10)*1.5),灵活替代三重}
放量确认:=VOL>MA(VOL,10)*1.5;
{=== 信号 ===}
底背离增强版优化:底背离 AND KDJ条件 AND 均线条件 AND 放量确认 AND C>O;改动说明
量能部分:原版三重量能约束(VOL>昨×1.5 + 量比>1 + VOL>MA5×1.5)让信号归零。改为单一量比门槛(VOL>MA(VOL,10)×1.5),逻辑完整且信号可出现。
量比上限:去掉"1~5倍"的上界(5倍上限几乎永不触发),改为">1.5倍",既是有效约束又不至于杀死信号。
其余部分:底背离 / KDJ双确认 / 均线共振结构全部保留原版逻辑。
一句话总结
这个公式的核心逻辑没问题:底背离 + 动量确认 + 量能验证,三层共振。
问题是量能那三重约束叠在一起,把本来就已经很稀有的底背离信号彻底堵死了。
把三重量能约束合并成单一量比门槛,公式才能真正用起来。
原版不是不能用,是量能那一段写得过于严格,把核心信号给过滤没了。
