先给结论,再讲道理:"零轴上二次金叉"的精髓在于第一次金叉后不死叉(或极短时间死叉后快速金叉),说明多头力量极其强劲。原版用 COUNT 只数次数,不要求两次金叉之间的"间隔"和"DIF位置",导致高位钝化区的假信号大量混入。 源码要求DIF和DEA在零轴上方,且20天内金叉次数≥2,但不限制两次金叉的间隔和DIF高度。 以下为基于源码逻辑的主观结构评分,未经历史数据验证,仅作拆解参考。 系列编号:本文为「1000个公式拆解」系列 · MACD系 · 第 5 篇(5/1000)。 COUNT(金叉,20)>=2 只保证"出现了2次",但不管这2次之间发生了什么。如果第一次金叉在DIF=0.5处,随后死叉到DIF=0.3,再金叉到DIF=0.6——这还算健康。但如果DIF已经到了2.0的高位再"二次金叉",本质就是追涨。 当DIF远超零轴(如>1.5),MACD柱状图已经极度扩张,此时再出现金叉,往往是主力在高位制造"多头延续"的假象,方便出货。原版公式完全不限制DIF的高度。 真正的"二次金叉"应该是洗盘后快速再次拉升,间隔应该在5-10个交易日内。如果间隔20天,那已经是两波独立行情了,不叫"二次"。 零轴附近首金叉后洗盘 ✓ 上升趋势中继 △ 需DIF低位 DIF高位钝化区 ✗ 修复思路:限制第一次金叉在零轴附近(DIF<0.8),两次金叉间隔5-15天,当前DIF不高(<1.2),过滤高位钝化信号。 用法:寻找DIF在零轴附近首次金叉后,经过5-15天小幅洗盘(不死叉或极短死叉),再次金叉的标的。 确认:二次金叉当日或次日放量上涨,且DIF持续上行,可视为介入点。 止损:DIF再次死叉且跌破零轴,说明多头衰竭,应止损。 启发一:COUNT 只数数,不辨结构。量化"二次"必须用 BARSLAST 控制间隔。 启发二:DIF 的高度决定信号质量。零轴附近的金叉是"启动",高位金叉是"尾声"。 启发三:真正的二次金叉,中间隔着的是"洗盘"不是"反转"。死叉深度不能太大。一、原版源码长这样
DIF:=EMA(C,12)-EMA(C,26);
DEA:=EMA(DIF,9);
金叉:=CROSS(DIF,DEA);
零轴上:=DIF>0 AND DEA>0;
二次金叉:=COUNT(金叉,20)>=2;
选股:零轴上 AND 二次金叉;
二、公式体检评分表
评分项 得分 说明 语法完整性 95 通达信可运行,无语法错误 逻辑完整度 50 COUNT只数次数不辨结构,高位钝化信号混入 信号可用性 55 DIF高位区的二次金叉多为诱多 三、问题一:COUNT不辨结构
四、问题二:DIF高位钝化是陷阱
五、问题三:两次金叉间隔无限制
六、适用环境
七、修复版源码
{=== MACD零轴上二次金叉 · 修复版(通达信可运行)===}
DIF:=EMA(C,12)-EMA(C,26);
DEA:=EMA(DIF,9);
金叉:=CROSS(DIF,DEA);
死叉:=CROSS(DEA,DIF);
{=== 改动1:第一次金叉的位置(DIF在零轴附近,不超过0.8)===}
首金叉:=REF(金叉,1) AND REF(DIF,1)<0.8 AND REF(DIF,1)>0;
{=== 改动2:两次金叉间隔5-15天 ===}
间隔合理:=BARSLAST(金叉)>=5 AND BARSLAST(金叉)<=15;
{=== 改动3:当前DIF不能太高(防止高位钝化)===}
DIF不高:=DIF<1.2;
{=== 改动4:零轴上方 ===}
零轴上:=DIF>0 AND DEA>0;
{=== 改动5:排除ST及数据不足 ===}
排雷:=NOT(NAMELIKE('ST') OR NAMELIKE('*ST')) AND COUNT(C>0,60)=60;
选股:零轴上 AND 首金叉 AND 间隔合理 AND DIF不高 AND 排雷;八、实战操作建议
九、三条启发
MACD零轴上二次金叉选股公式:我拆源码时发现COUNT只数次数不辨结构(附修复版)
风险提示:本文通达信指标公式仅作技术教学与研究使用,不构成任何投资建议。股市有风险,入市需谨慎,不可直接依据公式信号交易。
拆这个公式时,我停在了第7行:COUNT(金叉,20)>=2。这行的意思是"过去20天里,金叉出现了至少2次"。听起来很合理——零轴上方两次金叉,说明主力洗盘后再次拉升。但 COUNT 函数只数"次数",不辨"结构"。如果两次金叉中间夹了一个死叉,COUNT 照样数到2,但这时DIF可能已经高位钝化了。

