通达信优化MACD背离副图指标公式源码
该公式包含三个核心功能:
1. MACD底背离/顶背离预警
- 自动识别直接底背离、隔峰底背离、直接顶背离、隔峰顶背离
- 显示“下跌钝化”“上涨钝化”“消失”“底背离”“顶背离”文字提示
- 用红色/绿色柱线标记背离状态
2. 多周期均线系统
- 计算DI(4-13EMA差值)及其5/10/20/30/60/90/120/250EMA
- 当所有均线向上且满足条件时,显示红色柱线
3. 风险系数与交叉信号
- 显示风险系数柱线(黄色/绿色)
- 在DIFF与CTY金叉/死叉位置显示图标
使用方法:直接加载到副图,观察红色/绿色柱线及文字提示判断背离,结合风险系数柱线颜色变化辅助决策。
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIF,9);
MACD:=(DIF-DEA)*2,COLORSTICK;
{底部结构预警}
死叉:=CROSS(DEA,DIF);
N1:=BARSLAST(死叉),NODRAW;{最近一次死叉的位置}
N2:=REF(BARSLAST(死叉),N1+1),NODRAW;{倒数第二次死叉与倒数第一次死叉的区间}
N3:=REF(BARSLAST(死叉),N2+N1+2),NODRAW;{倒数第三次死叉与倒数第二次死叉的区间}
CL1:=LLV(C,N1+1),NODRAW;{最近一次死叉后,最低收盘价}
DIFL1:=LLV(DIF,N1+1),NODRAW;
CL2:=REF(CL1,N1+1),NODRAW;{倒数第二次死叉与倒数第一次死叉之间的最低收盘价}
DIFL2:=REF(DIFL1,N1+1),NODRAW;
CL3:=REF(CL2,N1+1),NODRAW;{倒数第三次死叉与倒数第二次死叉之间的最低收盘价}
DIFL3:=REF(DIFL2,N1+1),NODRAW;
PDIFL2:=IF(DIFL2>0,INTPART(LOG(DIFL2))-1,INTPART(LOG(-DIFL2))-1);
MDIFL2:=INTPART(DIFL2/POW(10,PDIFL2));
PDIFL3:=IF(DIFL3>0,INTPART(LOG(DIFL3))-1,INTPART(LOG(-DIFL3))-1);
MDIFL3:=INTPART(DIFL3/POW(10,PDIFL3));
MDIFB2:=INTPART(DIF/POW(10,PDIFL2));
MDIFB3:=INTPART(DIF/POW(10,PDIFL3));
直接底背离:=(CL1<CL2 ) AND (MDIFB2>MDIFL2) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB2<=REF(MDIFB2,1);
隔峰底背离:=(CL1<CL3 AND CL3<CL2 ) AND (MDIFB3>MDIFL3) AND (MACD<0 AND REF(MACD,1)<0) AND MDIFB3<=REF(MDIFB3,1);
B:=直接底背离 OR 隔峰底背离,NODRAW;
BG:=((MDIFB2>REF(MDIFB2,1))*REF(直接底背离,1)) OR ((MDIFB3>REF(MDIFB3,1))*REF(隔峰底背离,1)),NODRAW;
底背离消失:=(REF(直接底背离,1) AND DIFL1<=DIFL2 ) OR (REF(隔峰底背离,1) AND DIFL1<=DIFL3);
DRAWTEXT(TFILTER(B,MACD>0,1),(DIF+MACD),'下跌钝化'),COLORRED;
STICKLINE(B OR BG,DIF,DEA,1,0),COLORRED;
DRAWTEXT(TFILTER(底背离消失,B,1),(DIF+MACD),'消失'),COLORYELLOW;
DRAWTEXT(TFILTER(BG,MACD>0,1),DIF*1.1,'底背离'),COLOR0000FF;
底背结构形成:TFILTER(BG,MACD>0,1),NODRAW;
{顶部结构预警}
金叉:=CROSS(DIF,DEA);
M1:=BARSLAST(金叉),NODRAW;{最近一次金叉的位置}
M2:=REF(BARSLAST(金叉),M1+1),NODRAW;{倒数第二次金叉与倒数第一次金叉的区间}
M3:=REF(BARSLAST(金叉),M2+M1+2),NODRAW;{倒数第三次金叉与倒数第二次金叉的区间}
CH1:=HHV(C,M1+1),NODRAW;{最近一次金叉后,最高收盘价}
DIFH1:=HHV(DIF,M1+1),NODRAW;
CH2:=REF(CH1,M1+1),NODRAW;{倒数第二次金叉与倒数第一次金叉之间的最高收盘价}
DIFH2:=REF(DIFH1,M1+1),NODRAW;
CH3:=REF(CH2,M1+1),NODRAW;{倒数第三次金叉与倒数第二次金叉之间的最高收盘价}
DIFH3:=REF(DIFH2,M1+1),NODRAW;
PDIFH2:=IF(DIFH2>0,INTPART(LOG(DIFH2))-1,INTPART(LOG(-DIFH2))-1);
MDIFH2:=INTPART(DIFH2/POW(10,PDIFH2));
PDIFH3:=IF(DIFH3>0,INTPART(LOG(DIFH3))-1,INTPART(LOG(-DIFH3))-1);
MDIFH3:=INTPART(DIFH3/POW(10,PDIFH3));
MDIFT2:=INTPART(DIF/POW(10,PDIFH2));
MDIFT3:=INTPART(DIF/POW(10,PDIFH3));
直接顶背离:=(CH1>CH2 ) AND (MDIFT2<MDIFH2) AND (MACD>0 AND REF(MACD,1)>0) AND MDIFT2>=REF(MDIFT2,1);
隔峰顶背离:=(CH1>CH3 AND CH3>CH2 ) AND (MDIFT3<MDIFH3) AND (MACD>0 AND REF(MACD,1)>0) AND MDIFT3>=REF(MDIFT3,1);
T:=直接顶背离 OR 隔峰顶背离,NODRAW;
TG:=((MDIFT2<REF(MDIFT2,1))*REF(直接顶背离,1)) OR ((MDIFT3<REF(MDIFT3,1))*REF(隔峰顶背离,1)),NODRAW;
顶背离消失:=(REF(直接顶背离,1) AND DIFH1>=DIFH2 ) OR (REF(隔峰顶背离,1) AND DIFH1>=DIFH3);
DRAWTEXT(TFILTER(T,MACD<0,1),(DIF+MACD),'上涨钝化'),COLORGREEN;
DRAWTEXT(TFILTER(顶背离消失,T,1),(DIF+MACD),'消失'),COLORYELLOW;
STICKLINE(T OR TG,DIF,DEA,1,0),COLORGREEN;
DRAWTEXT(TFILTER(TG,MACD<0,1),DIF*1.02,'顶背离'),COLORMAGENTA;
顶背结构形成:TFILTER(TG,MACD<0,1),NODRAW;
DI:=EMA(CLOSE,4)-EMA(CLOSE,13),COLORMAGENTA,LINETHICK2;
D1:=EMA(DI,5),COLORGRAY;
D2:=EMA(DI,10),COLORGRAY;
D3:=EMA(DI,20),COLORGRAY;
D4:=EMA(DI,30),COLORGRAY;
D5:=EMA(DI,60),COLORGRAY;
D6:=EMA(DI,90),COLORGRAY;
D7:=EMA(DI,120),COLORGRAY;
D8:=EMA(DI,250),COLORGRAY;
AA:STICKLINE(DI>=REF(DI,1) AND D1>=REF(D1,1) AND D2>=REF(D2,1) AND D3>=REF(D3,1) AND
D4>=REF(D4,1) AND D5>=REF(D5,1) AND D6>=REF(D6,1) AND D7>=REF(D7,1) AND
D8>=REF(D8,1) AND C>EMA(C,11) AND DI>-0.8,DI,0,2,0),COLORRED;0,LINETHICK2;
DIFF:EMA(CLOSE,6) - EMA(CLOSE,13),LINESTICK,COLORYELLOW;
IF(DIFF>=REF(DIFF,1),DIFF,DRAWNULL),COLORRED,LINETHICK3;
CTY:EMA(DIFF,5);
A:=MACD;
G:=MA(MACD,2);
J:=MA(MACD,3);
J1:=MA(MACD,5);
STICKLINE(CROSS(MA(A,1),G),0.07,0,2,0),COLORLIMAGENTA,LINETHICK2;
STICKLINE(CROSS(MA(A,1),G),0.09,0,1,0),COLORYELLOW;
VAR13:=IF(YEAR>=2018 AND MONTH>=11 AND DAY>=1,0,1);
CXH:=(MA(C,1)+MA(C,3)+MA(C,5)+MA(C,7)+MA(C,9))/5;
BB:=(MA(C,2)+MA(C,4)+MA(C,6)+MA(C,8)+MA(C,10))/5;
CC:=EMA(CXH,2);
DD:=EMA(BB,5);
VAR14:=MAX(EMA(CXH,2)-EMA(BB,5),0)*1.2;
VAR15:=EMA(VAR14,5);
SS:=EMA(VAR15,2);
风险系数:=(VAR15-SS)/10*VAR13;
STICKLINE(VAR15>REF(VAR15,1) AND VAR13,VAR15,0,2,0),COLOR0099FF;
STICKLINE(VAR15>REF(VAR15,1) AND VAR13,VAR15,SS,3.5,0),COLORYELLOW;
STICKLINE(VAR15<REF(VAR15,1) AND VAR13,0,VAR15,2,0),COLORGREEN;
STICKLINE(VAR15<REF(VAR15,1) AND VAR13,VAR15,SS,3.5,0),COLORFFCC33;
WB:=CROSS(DIFF,CTY);
WS:=CROSS(CTY,DIFF);
DRAWICON(WB,(CTY * 1.02),42);
DRAWICON(WS,(CTY * 1.01),43);

未来函数检测结果如下:
该公式没有未来函数
定制指标公式、软件请联系QQ或微信同号:88652583
DIF赋值:收盘价的12日指数移动平均-收盘价的26日指数移动平均
DEA赋值:DIF的9日指数移动平均
MACD赋值:(DIF-DEA)*2,COLORSTICK
死叉赋值:DEA上穿DIF
N1赋值:上次死叉距今天数,NODRAW
N2赋值:N1+1日前的上次死叉距今天数,NODRAW
N3赋值:N2+N1+2日前的上次死叉距今天数,NODRAW
CL1赋值:N1+1日内收盘价的最低值,NODRAW
DIFL1赋值:N1+1日内DIF的最低值,NODRAW
CL2赋值:N1+1日前的CL1,NODRAW
DIFL2赋值:N1+1日前的DIFL1,NODRAW
CL3赋值:N1+1日前的CL2,NODRAW
DIFL3赋值:N1+1日前的DIFL2,NODRAW
PDIFL2赋值:如果DIFL2>0,返回DIFL2的对数的整数部分-1,否则返回-DIFL2的对数的整数部分-1
MDIFL2赋值:DIFL2/10的PDIFL2乘幂的整数部分
PDIFL3赋值:如果DIFL3>0,返回DIFL3的对数的整数部分-1,否则返回-DIFL3的对数的整数部分-1
MDIFL3赋值:DIFL3/10的PDIFL3乘幂的整数部分
MDIFB2赋值:DIF/10的PDIFL2乘幂的整数部分
MDIFB3赋值:DIF/10的PDIFL3乘幂的整数部分
直接底背离赋值:(CL1MDIFL2) AND (MACD<0 AND 1日前的MACD<0) AND MDIFB2<=1日前的MDIFB2
隔峰底背离赋值:(CL1MDIFL3) AND (MACD<0 AND 1日前的MACD<0) AND MDIFB3<=1日前的MDIFB3
B赋值:直接底背离 OR 隔峰底背离,NODRAW
BG赋值:((MDIFB2>1日前的MDIFB2)*1日前的直接底背离) OR ((MDIFB3>1日前的MDIFB3)*1日前的隔峰底背离),NODRAW
底背离消失赋值:(1日前的直接底背离 AND DIFL1<=DIFL2 ) OR (1日前的隔峰底背离 AND DIFL1<=DIFL3)
当满足条件信号过滤(多头)时,在(DIF+MACD)位置书写文字,画红色
当满足条件BORBG时,在DIF和DEA位置之间画柱状线,宽度为1,0不为0则画空心柱.,画红色
当满足条件信号过滤(多头)时,在(DIF+MACD)位置书写文字,画黄色
当满足条件信号过滤(多头)时,在DIF*1.1位置书写文字,COLOR0000FF
输出底背结构形成:信号过滤(多头),NODRAW
金叉赋值:DIF上穿DEA
M1赋值:上次金叉距今天数,NODRAW
M2赋值:M1+1日前的上次金叉距今天数,NODRAW
M3赋值:M2+M1+2日前的上次金叉距今天数,NODRAW
CH1赋值:M1+1日内收盘价的最高值,NODRAW
DIFH1赋值:M1+1日内DIF的最高值,NODRAW
CH2赋值:M1+1日前的CH1,NODRAW
DIFH2赋值:M1+1日前的DIFH1,NODRAW
CH3赋值:M1+1日前的CH2,NODRAW
DIFH3赋值:M1+1日前的DIFH2,NODRAW
PDIFH2赋值:如果DIFH2>0,返回DIFH2的对数的整数部分-1,否则返回-DIFH2的对数的整数部分-1
MDIFH2赋值:DIFH2/10的PDIFH2乘幂的整数部分
PDIFH3赋值:如果DIFH3>0,返回DIFH3的对数的整数部分-1,否则返回-DIFH3的对数的整数部分-1
MDIFH3赋值:DIFH3/10的PDIFH3乘幂的整数部分
MDIFT2赋值:DIF/10的PDIFH2乘幂的整数部分
MDIFT3赋值:DIF/10的PDIFH3乘幂的整数部分
直接顶背离赋值:(CH1>CH2 ) AND (MDIFT20 AND 1日前的MACD>0) AND MDIFT2>=1日前的MDIFT2
隔峰顶背离赋值:(CH1>CH3 AND CH3>CH2 ) AND (MDIFT30 AND 1日前的MACD>0) AND MDIFT3>=1日前的MDIFT3
T赋值:直接顶背离 OR 隔峰顶背离,NODRAW
TG赋值:((MDIFT2<1日前的MDIFT2)*1日前的直接顶背离) OR ((MDIFT3<1日前的MDIFT3)*1日前的隔峰顶背离),NODRAW
顶背离消失赋值:(1日前的直接顶背离 AND DIFH1>=DIFH2 ) OR (1日前的隔峰顶背离 AND DIFH1>=DIFH3)
当满足条件信号过滤(多头)时,在(DIF+MACD)位置书写文字,画绿色
当满足条件信号过滤(多头)时,在(DIF+MACD)位置书写文字,画黄色
当满足条件TORTG时,在DIF和DEA位置之间画柱状线,宽度为1,0不为0则画空心柱.,画绿色
当满足条件信号过滤(多头)时,在DIF*1.02位置书写文字,画洋红色
输出顶背结构形成:信号过滤(多头),NODRAW
DI赋值:收盘价的4日指数移动平均-收盘价的13日指数移动平均,画洋红色,线宽为2
D1赋值:DI的5日指数移动平均,画深灰色
D2赋值:DI的10日指数移动平均,画深灰色
D3赋值:DI的20日指数移动平均,画深灰色
D4赋值:DI的30日指数移动平均,画深灰色
D5赋值:DI的60日指数移动平均,画深灰色
D6赋值:DI的90日指数移动平均,画深灰色
D7赋值:DI的120日指数移动平均,画深灰色
D8赋值:DI的250日指数移动平均,画深灰色
输出AA:当满足条件DI>=1日前的DIANDD1>=1日前的D1ANDD2>=1日前的D2ANDD3>=1日前的D3ANDD4>=1日前的D4ANDD5>=1日前的D5ANDD6>=1日前的D6ANDD7>=1日前的D7ANDD8>=1日前的D8ANDC>收盘价的11日指数移动平均ANDD时,在>-0.8和DI位置之间画柱状线,宽度为0,2不为0则画空心柱.,画红色
0,线宽为2
输出DIFF:收盘价的6日指数移动平均 - 收盘价的13日指数移动平均,LINESTICK,画黄色
如果DIFF>=1日前的DIFF,返回DIFF,否则返回无效数,画红色,线宽为3
输出CTY:DIFF的5日指数移动平均
A赋值:MACD
G赋值:MACD的2日简单移动平均
J赋值:MACD的3日简单移动平均
J1赋值:MACD的5日简单移动平均
当满足条件A的1日简单移动平均上穿G时,在0.07和0位置之间画柱状线,宽度为2,0不为0则画空心柱.,画淡洋红色,线宽为2
当满足条件A的1日简单移动平均上穿G时,在0.09和0位置之间画柱状线,宽度为1,0不为0则画空心柱.,画黄色
VAR13赋值:如果年份>=2018ANDMONTH>=11ANDDAY>=1,返回0,否则返回1
CXH赋值:(收盘价的1日简单移动平均+收盘价的3日简单移动平均+收盘价的5日简单移动平均+收盘价的7日简单移动平均+收盘价的9日简单移动平均)/5
BB赋值:(收盘价的2日简单移动平均+收盘价的4日简单移动平均+收盘价的6日简单移动平均+收盘价的8日简单移动平均+收盘价的10日简单移动平均)/5
CC赋值:CXH的2日指数移动平均
DD赋值:BB的5日指数移动平均
VAR14赋值:CXH的2日指数移动平均-BB的5日指数移动平均和0的较大值*1.2
VAR15赋值:VAR14的5日指数移动平均
SS赋值:VAR15的2日指数移动平均
风险系数赋值:(VAR15-SS)/10*VAR13
当满足条件VAR15>1日前的VAR15ANDVAR13时,在VAR15和0位置之间画柱状线,宽度为2,0不为0则画空心柱.,COLOR0099FF
当满足条件VAR15>1日前的VAR15ANDVAR13时,在VAR15和SS位置之间画柱状线,宽度为3.5,0不为0则画空心柱.,画黄色
当满足条件VAR15<1日前的VAR15ANDVAR13时,在0和VAR15位置之间画柱状线,宽度为2,0不为0则画空心柱.,画绿色
当满足条件VAR15<1日前的VAR15ANDVAR13时,在VAR15和SS位置之间画柱状线,宽度为3.5,0不为0则画空心柱.,COLORFFCC33
WB赋值:DIFF上穿CTY
WS赋值:CTY上穿DIFF
当满足条件WB时,在(CTY*1.02)位置画42号图标
当满足条件WS时,在(CTY*1.01)位置画43号图标