DIFF :EMA(CLOSE,12) – EMA(CLOSE,26);
DEA :EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
J:CROSS(DIFF,DEA),NODRAW;
S:CROSSDOWN(DIFF,DEA),NODRAW;
HH1:CROSS(EVERY(MACD>0,5),0.5),NODRAW;
LL1:CROSS(EVERY(MACD<0,5),0.5),NODRAW;
AA:COUNT(HH1,BARSLAST(LL1)+1)=1&&HH1,NODRAW;
BB:COUNT(LL1,BARSLAST(HH1)+1)=1&&LL1,NODRAW;
T1:=BACKSET(REFX(AA,4),LLVBARS(L,BARSLAST(REFX(BB,4))+1)+1);
T2:=BACKSET(REFX(BB,4),HHVBARS(H,BARSLAST(REFX(AA,4))+1)+1);
JCC:=REFX(AA,4);
SCC:=REFX(BB,4);
N1:=BARSLAST(JCC)+1;
N2:=BARSLAST(SCC)+1;
HH:=VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(H,N1));//上次MACD红柱期间合约最大值
HH2:=VALUEWHEN(CROSSDOWN(DIFF,DEA),REF(HH,1));//上上次MACD红柱期间合约最大值
MHD:=VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(MACD,N1));//上次MACD红柱期间MACD最大值
MHD2:=VALUEWHEN(CROSSDOWN(DIFF,DEA),REF(MHD,1));//上上次MACD红柱期间MACD最大值
LL:=VALUEWHEN(CROSS(DIFF,DEA),LLV(L,N2));//上次MACD绿柱期间合约最小值
LL2:=VALUEWHEN(CROSS(DIFF,DEA),REF(LL,1));//上上次MACD绿柱期间合约最小值
MLD:=VALUEWHEN(CROSS(DIFF,DEA),LLV(MACD,N2));//上次MACD绿柱期间MACD最小值
MLD2:=VALUEWHEN(CROSS(DIFF,DEA),REF(MLD,1));//上上次MACD绿柱期间MACD最小值
A:=CROSSDOWN(DIFF,DEA)&&HH>HH2&&MHD<MHD2;//顶背离
B:=CROSS(DIFF,DEA)&&LL<LL2&&MLD>MLD2;//底背离
DRAWICON(A,MACD,5),VALIGN0;
DRAWICON(B,MACD,4);