通达信特色MACD指标(MACD类)指标公式

核心逻辑

这是一个基于经典MACD指标的增强版可视化指标。核心原理是计算12日EMA与26日EMA的差值(DIFF),再计算DIFF的9日EMA(DEA),通过两者的差值绘制MACD柱状图。指标还包含:①低位金叉(DIFF上穿DEA且DIFF<-0.1)用于捕捉超跌反弹;②二次金叉(21天内第二次金叉且DEA<0)用于确认底部;③底背离/顶背离用于判断趋势反转;④在图表上标注死叉/金叉后第1、3、5、8、13、21等关键天数,帮助投资者把握时间窗口。

买卖信号

**买入信号:** - 低位金叉:DIFF上穿DEA,且DIFF值<-0.1(超跌反弹信号) - 二次金叉:21天内出现第二次金叉,且DEA<0(底部确认信号) - 底背离:股价创新低但DIFF未创新低后出现金叉(趋势反转信号) - 金叉买入:金叉时显示白色"1"字买入提示 **卖出信号:** - 顶背离:股价创新高但DIFF未创新高后出现死叉 - 死叉卖出:DIFF下穿DEA时显示绿色图标 - 死叉后关键天数:标注1、3、5、8、13、21等天数提醒可能变盘

用法

1. **基础用法**:DIFF上穿DEA(金叉)买入,下穿DEA(死叉)卖出 2. **低位金叉**:在DIFF<-0.1区域出现金叉时,是较强的买入信号 3. **二次金叉**:在下跌趋势中出现二次金叉,往往是趋势由空转多的重要信号 4. **背离信号**:底背离是买入机会,顶背离是卖出机会 5. **时间窗口**:关注死叉/金叉后第1、3、5、8、13、21、34、55、68天,这些天数常出现变盘 6. **颜色判断**:蓝色系柱状图表示多头力量,橙红色系表示空头力量

公式源码

0,LINETHICK2;
DIFF1:=EMA(CLOSE,12)-EMA(CLOSE,26),COLORFFFFFF,LINETHICK2;
DEA1:=EMA(DIFF1,9),COLORYELLOW,LINETHICK2;
macd1:=2*(DIFF1-DEA1);
MACD2:=EMA(MACD1,5);
STICKLINE(MACD1>MACD2 AND MACD1>0,0,MACD1,3,0),COLOR000055;
STICKLINE(MACD1>MACD2 AND MACD1>0,0,MACD1,2.5,0),COLOR000077;
STICKLINE(MACD1>MACD2 AND MACD1>0,0,MACD1,1.5,0),COLOR000099;
STICKLINE(MACD1>MACD2 AND MACD1>0,0,MACD1,1,0),COLOR0000FF;
STICKLINE(MACD1>MACD2 AND MACD1<0,0,MACD1,3,0),COLOR222222;
STICKLINE(MACD1>MACD2 AND MACD1<0,0,MACD1,2.5,0),COLOR444444;
STICKLINE(MACD1>MACD2 AND MACD1<0,0,MACD1,1.5,0),COLOR666666;
STICKLINE(MACD1>MACD2 AND MACD1<0,0,MACD1,0,0),COLOR999999;
STICKLINE(MACD1<MACD2,0,MACD1,3,0),COLORA80000;
STICKLINE(MACD1<MACD2,0,MACD1,2.5,0),COLORB80000;
STICKLINE(MACD1<MACD2,0,MACD1,1.5,0),COLOREC1000;
STICKLINE(MACD1<MACD2,0,MACD1,1,0),COLORFF4600;
STICKLINE(MACD1<MACD2,0,MACD1,0,0),COLORFFAA00;
低位金叉:=crOSS(DIFF1,DEA1) AND DIFF1<-0.1;
STICKLINE(低位金叉,0,DIFF1,3,0),COLOR002222;
STICKLINE(低位金叉,0,DIFF1,2.5,0),COLOR006666;
STICKLINE(低位金叉,0,DIFF1,1.5,0),COLOR009999;
STICKLINE(低位金叉,0,DIFF1,1,0),COLOR00FFFF;
DRAWTEXT(低位金叉,0.2,' 低位金叉'),COLOR00FF88;
JCCOUNT:=COUNT(CROSS(DIFF1,DEA1),BARSLAST(DEA1>=0));
二次金叉:=CROSS(DIFF1,DEA1) AND DEA1<0 AND COUNT(JCCOUNT=2,21)=1;
STICKLINE(二次金叉,MACD1,-0.01,3,0),COLOR440044;
STICKLINE(二次金叉,MACD1,-0.01,2.5,0),COLOR660066;
STICKLINE(二次金叉,MACD1,-0.01,1.5,0),COLOR990099;
STICKLINE(二次金叉,MACD1,-0.01,1,0),COLORFF00FF;
DRAWTEXT(二次金叉,DEA1*1.3,' 二次金叉'),COLORYELLOW;
A1:=BARSLAST(REF(CROSS(DIFF1,DEA1),1));
底背离:=REF(CLOSE,A1+1)>CLOSE AND DIFF1>REF(DIFF1,A1+1) AND CROSS(DIFF1,DEA1);
STICKLINE(底背离,0,0.03,6,0),COLOR00FF00;
DRAWLINE(A1=0,DEA1,底背离,DEA1,0),COLORRED,LINETHICK1;
DRAWTEXT(底背离,0.03,' 底背离'),COLORFF00FF;
A2:=BARSLAST(REF(CROSS(DEA1,DIFF1),1));
顶背离:=REF(CLOSE,A2+1)<CLOSE AND REF(DIFF1,A2+1)>DIFF1 AND CROSS(DEA1,DIFF1);
DRAWLINE(A2=0,DEA1,顶背离,DEA1,0),COLORFF8800,LINETHICK1;
DRAWTEXT(顶背离,-0.02,' 顶背离'),COLORFFFF00;
DIFF:DIFF1,COLOR009922,LINETHICK2;
DEA:DEA1,COLORYELLOW,LINETHICK2;
ZT:=CROSS(DEA,DIFF);
LS0:=BARSLAST(ZT);
S1:=IF(1,LS0=1,ZT) AND IF(1,DIFF<DEA,0);
DRAWTEXT(S1 AND DIFF>0,DIFF*0.8,'1'),COLOR00FF00;
DRAWTEXT(S1 AND DIFF<0,DIFF*1.8,'1'),COLOR00FF00;
S3:=IF(3,LS0=3,ZT) AND IF(3,DIFF<DEA,0);
DRAWTEXT(S3 AND DIFF>0,DIFF*0.8,'3'),COLOR00FF00;
DRAWTEXT(S3 AND DIFF<0,DIFF*1.4,'3'),COLOR00FF00;
S5:=IF(5,LS0=5,ZT) AND IF(5,DIFF<DEA,0);
DRAWTEXT(S5 AND DIFF>0,DIFF*0.8,'5'),COLOR00FF00;
DRAWTEXT(S5 AND DIFF<0,DIFF*1.4,'5'),COLOR00FF00;
S8:=IF(8,LS0=8,ZT) AND IF(8,DIFF<DEA,0);
DRAWTEXT(S8 AND DIFF>0,DIFF*0.8,'8'),COLOR00FF00;
DRAWTEXT(S8 AND DIFF<0,DIFF*1.8,'8'),COLOR00FF00;
S13:=IF(13,LS0=13,ZT) AND IF(8,DIFF<DEA,0);
DRAWTEXT(S13 AND DIFF>0,DIFF*0.8,'13'),COLOR00FF00;
DRAWTEXT(S13 AND DIFF<0,DIFF*1.2,'13'),COLOR00FF00;
S21:=IF(21,LS0=21,ZT) AND IF(21,DIFF<DEA,0);
DRAWTEXT(S21 AND DIFF>0,DIFF*0.8,'21'),COLOR00FF00;
DRAWTEXT(S21 AND DIFF<0,DIFF*1.2,'21'),COLOR00FF00;
S26:=IF(26,LS0=26,ZT) AND IF(26,DIFF<DEA,0);
DRAWTEXT(S26 AND DIFF>0,DIFF*0.8,'26'),COLOR00FF00;
DRAWTEXT(S26 AND DIFF<0,DIFF*1.2,'26'),COLOR00FF00;
S29:=IF(29,LS0=29,ZT) AND IF(29,DIFF<DEA,0);
DRAWTEXT(S29 AND DIFF>0,DIFF*0.8,'29'),COLOR00FF00;
DRAWTEXT(S29 AND DIFF<0,DIFF*1.2,'29'),COLOR00FF00;
S34:=IF(34,LS0=34,ZT) AND IF(34,DIFF<DEA,0);
DRAWTEXT(S34 AND DIFF>0,DIFF*0.8,'34'),COLOR00FF00;
DRAWTEXT(S34 AND DIFF<0,DIFF*1.8,'34'),COLOR00FF00;
S55:=IF(55,LS0=55,ZT) AND IF(55,DIFF<DEA,0);
DRAWTEXT(S55 AND DIFF>0,DIFF*0.8,'55'),COLOR00FF00;
DRAWTEXT(S55 AND DIFF<0,DIFF*1.8,'55'),COLOR00FF00;
S68:=IF(68,LS0=68,ZT) AND IF(68,DIFF<DEA,0);
DRAWTEXT(S68 AND DIFF>0,DIFF*0.8,'68'),COLOR00FF00;
DRAWTEXT(S68 AND DIFF<0,DIFF*1.8,'68'),COLOR00FF00;
ZTJ:=CROSS(DIFF,DEA);
LSJ:=BARSLAST(ZTJ);
SJ1:=IF(1,LSJ=1,ZTJ) AND IF(1,DIFF>DEA,0);
DRAWTEXT(SJ1 AND DIFF>0,DIFF*1.2,'1'),COLORFFFFFF;
DRAWTEXT(SJ1 AND DIFF<0,DIFF*0.8,'1'),COLORFFFFFF;
SJ3:=IF(3,LSJ=3,LSJ) AND IF(3,DIFF>DEA,0);
DRAWTEXT(SJ3 AND DIFF>0,DIFF*1.2,'3'),COLORFFFFFF;
DRAWTEXT(SJ3 AND DIFF<0,DIFF*0.8,'3'),COLORFFFFFF;
SJ5:=IF(5,LSJ=5,ZTJ) AND IF(5,DIFF>DEA,0);
DRAWTEXT(SJ5 AND DIFF>0,DIFF*1.2,'5'),COLORFFFFFF;
DRAWTEXT(SJ5 AND DIFF<0,DIFF*0.8,'5'),COLORFFFFFF;
SJ8:=IF(8,LSJ=8,ZTJ) AND IF(8,DIFF>DEA,0);
DRAWTEXT(SJ8 AND DIFF>0,DIFF*1.2,'8'),COLORFFFFFF;
DRAWTEXT(SJ8 AND DIFF<0,DIFF*0.8,'8'),COLORFFFFFF;
SJ13:=IF(13,LSJ=13,ZTJ) AND IF(8,DIFF>DEA,0);
DRAWTEXT(SJ13 AND DIFF>0,DIFF*1.2,'13'),COLORFFFFFF;
DRAWTEXT(SJ13 AND DIFF<0,DIFF*0.8,'13'),COLORFFFFFF;
SJ18:=IF(18,LSJ=18,ZTJ) AND IF(8,DIFF>DEA,0);
DRAWTEXT(SJ18 AND DIFF>0,DIFF*1.2,'18'),COLORFFFFFF;
DRAWTEXT(SJ18 AND DIFF<0,DIFF*0.8,'18'),COLORFFFFFF;
SJ21:=IF(21,LSJ=21,ZTJ) AND IF(21,DIFF>DEA,0);
DRAWTEXT(SJ21 AND DIFF>0,DIFF*1.2,'21'),COLORFFFFFF;
DRAWTEXT(SJ21 AND DIFF<0,DIFF*0.8,'21'),COLORFFFFFF;
SJ26:=IF(26,LSJ=26,ZTJ) AND IF(26,DIFF>DEA,0);
DRAWTEXT(SJ26 AND DIFF>0,DIFF*1.2,'26'),COLORFFFFFF;
DRAWTEXT(SJ26 AND DIFF<0,DIFF*0.8,'26'),COLORFFFFFF;
SJ29:=IF(29,LSJ=29,ZTJ) AND IF(29,DIFF>DEA,0);
DRAWTEXT(SJ29 AND DIFF>0,DIFF*1.2,'29'),COLORFFFFFF;
DRAWTEXT(SJ29 AND DIFF<0,DIFF*0.8,'29'),COLORFFFFFF;
SJ34:=IF(34,LSJ=34,ZTJ) AND IF(34,DIFF>DEA,0);
DRAWTEXT(SJ34 AND DIFF>0,DIFF*1.2,'34'),COLORFFFFFF;
DRAWTEXT(SJ34 AND DIFF<0,DIFF*0.8,'34'),COLORFFFFFF;
SJ47:=IF(47,LSJ=47,ZTJ) AND IF(47,DIFF>DEA,0);
DRAWTEXT(SJ47 AND DIFF>0,DIFF*1.2,'47'),COLORFFFFFF;
DRAWTEXT(SJ47 AND DIFF<0,DIFF*0.8,'47'),COLORFFFFFF;
SJ55:=IF(55,LSJ=55,ZTJ) AND IF(55,DIFF>DEA,0);
DRAWTEXT(SJ55 AND DIFF>0,DIFF*1.2,'55'),COLORFFFFFF;
DRAWTEXT(SJ55 AND DIFF<0,DIFF*0.8,'55'),COLORFFFFFF;
SJ60:=IF(60,LSJ=60,ZTJ) AND IF(60,DIFF>DEA,0);
DRAWTEXT(SJ60 AND DIFF>0,DIFF*1.2,'63'),COLORFFFFFF;
DRAWTEXT(SJ60 AND DIFF<0,DIFF*0.8,'63'),COLORFFFFFF;
SJ68:=IF(68,LSJ=68,ZTJ) AND IF(68,DIFF>DEA,0);
DRAWTEXT(SJ68 AND DIFF>0,DIFF*1.2,'68'),COLORFFFFFF;
DRAWTEXT(SJ68 AND DIFF<0,DIFF*0.8,'68'),COLORFFFFFF;
DRAWICON(CROSS(MACD,0),MACD,1);
DRAWICON(CROSS(DIFF,DEA),DIFF,1);
DRAWICON(CROSS(DEA,DIFF),DEA,2);