DIFF := EMA(CLOSE,12) - EMA(CLOSE,26),RGB(255,255,255);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA),COLORSTICK;
DEA1:EMA(DEA,0);
//面积
JC5:=CROSS(DIFF,DEA),NODRAW;
SC5:=CROSSDOWN(DIFF,DEA),NODRAW;
金叉面积:REFX(SC5,1)||ISLASTBAR&&MACD>0,NODRAW;//
死叉面积:REFX(JC5,1)||ISLASTBAR&&MACD<0,NODRAW;//
N111:=BARSLAST(JC5)+1,NODRAW;
N222:=BARSLAST(SC5)+1,NODRAW;
TJ:=BACKSET(ISLASTBAR,SUMBARS(REFX(SC5,1)||ISLASTBAR&&MACD>0,5)+2);
//MACD面积背离
J:=CROSS(DIFF,DEA);
S:=CROSSDOWN(DIFF,DEA);
DRAWTEXT(TJ&&S&&SUM(DIFF,BARSLAST(J)+1)=16&&PERIOD<=21);
// 增加MACD值过滤条件
X1:=BARSLAST(CROSS(DIFF,DEA) AND MACD>0)+1;
// 金叉且MACD>0
X2:=BARSLAST(CROSSDOWN(DIFF,DEA) AND MACD<0)+1;
// 死叉且MACD<0
DRAWLINE3(TJ&&X1=1,LLV(L,X2),LLVBARS(L,X2),
X2=1||ISLASTBAR,HHV(H,X1),HHVBARS(H,X1),0),RGB(222,0,222),LINETHICK1;//连线
DRAWLINE3(TJ&&X2=1,HHV(H,X1),HHVBARS(H,X1),
X1=1||ISLASTBAR,LLV(L,X2),LLVBARS(L,X2),0),RGB(0,222,0),LINETHICK1;//连线
// 增加MACD值过滤后的标记逻辑
T1:=BACKSET(X1=1||ISLASTBAR&&MACD<0&&CROSS(DIFF,DEA),LLVBARS(L,X2)+1),LINETHICK2;
T2:=BACKSET(X2=1||ISLASTBAR&&MACD>0&&CROSSDOWN(DIFF,DEA),HHVBARS(H,X1)+1),COLORRED,LINETHICK2;
ZX:(T1+T2)/2,COLORRED,LINETHICK2;
DRAWTEXT(TJ&&BARSLASTCOUNT(T1)=1,L,'低'),VALIGN0,RGB(0,255,0),FONTSIZE12,LINETHICK2;// 低
DRAWTEXT(TJ&&BARSLASTCOUNT(T2)=1,H,'高'),RGB(255,255,0),FONTSIZE12,LINETHICK2;// 高
DRAWHORIZONTALLINE(TJ&&BARSLASTCOUNT(T1)=1,L,RGB(0,111,155)),LINETHICK2;//水平线
DRAWHORIZONTALLINE(TJ&&BARSLASTCOUNT(T2)=1,H,RGB(155,0,0)),LINETHICK2;//水平线
SN1:=BARSLAST(T1)+1;
SN2:=BARSLAST(T2)+1;
DRAWLINE3(ISLASTBAR&&MIN(SN1,SN2)=SN2&&L>REF(L,SN2-1),REF(L,SN2-1),SN2-1,ISLASTBAR,H,0,0),COLORRED,LINETHICK2;//红色↗↗【未走完反弹一笔】
DRAWLINE3(ISLASTBAR&&MIN(SN1,SN2)=SN1&&HREF(D111,NNHA) AND NNHA<=M-3,NNHA,IF(REF(G2,NNLA)0,NNA,M-2) ,NODRAW;
H1A:=REF(H,NNNA)=HHV(H,M-1);
L1A:=REF(L,NNNA)=LLV(L,M-1);
FG01A:=CROSS(BACKSET(H1A,NNNA+1)=1,0.5),NODRAW;//只设置前面第M-1个
FD01A:=CROSS(BACKSET(L1A,NNNA+1)=1,0.5) ,NODRAW;
FG02A:=FG01A=FD01A AND G2>D111,NODRAW;
FD02A:=FG01A=FD01A AND G2=M-2,M-2,BARSLAST(FD01A)))) AND FD02A=0 ,NODRAW;
FD0A:=FD01A AND IF(FD02A=1,L=LLV(L,BARSLAST(REF(FG01A,1))+1),L=LLV(L,IF(BARSLAST(H=HHV(L,M))>=M-2,M-2,BARSLAST(FG01A)))) AND FG02A=0 ,NODRAW;
//高低点间周期
GTA:=BARSLAST(FG0A),NODRAW;
DTA:=BARSLAST(FD0A),NODRAW;
//第一次处理高低点间多余的点
LLLLA:=DTA=0 AND REF(DTA,1)REF(L,REF(DTA,1)+1),NODRAW;
FG1A:=BACKSET(REFX(GTA,1)=0 AND GTA=REF(H,GTA),GTA+1),NODRAW;
FD1A:=BACKSET(REFX(DTA,1)=0 AND DTAREF(D111,BARSLAST(L=LLV(L,M))),BARSLAST(L=LLV(L,M))REF(L,REF(DTA,1)+1),1,0),NODRAW;
//再次周期
GT1A:=BARSLAST(FG11A<>1 AND FG1A<>1 AND FG0A),NODRAW;
DT1A:=BARSLAST(FD11A<>1 AND FD1A<>1 AND FD0A),NODRAW;
SFD2A:=BACKSET(REFX(GT1A,1)=0 AND DT1A<3 AND GT1A-DT1A<4 AND REF(L,DT1A)>LLV(L,GT1A+M-2),DT1A+1),NODRAW;
FG2AA:=BACKSET(REFX(GT1A,1)=0 AND DT1A<3 AND GT1A-DT1A<4 AND REF(L,DT1A)<=LLV(L,GT1A+M-2) AND REF(H,GT1A)>HHV(H,GT1A+M-2),GT1A+1),NODRAW;
FG2BA:=IF(GT1A=0 AND DT1A<4 AND REF(GT1A,1)-DT1A<4 AND REF(L,DT1A)<=LLV(L,REF(GT1A,1)+M-1) AND H>HHV(H,REF(GT1A,1)+M-1),1,0),NODRAW;
FG2C:=BACKSET(REFX(DT1A,1)=0 AND GT1A<3 AND DT1A-GT1A<4 AND REF(H,GT1A)=HHV(L,DT1A+M-2) AND REF(L,DT1A)>LLV(L,DT1A+M-2),DT1A+1),NODRAW;
FD2BA:=IF(DT1A=0 AND GT1A<4 AND REF(DT1A,1)-GT1A<4 AND REF(H,GT1A)>=HHV(H,REF(DT1A,1)+6) AND L>LLV(L,REF(DT1A,1)+M-1),1,0),NODRAW;
TTTTTTA:= H=REF(L,REF(DT1A,1)+1),1,0),NODRAW;
//前短后长,前低后高(去低);
FD231A:=BACKSET(REFX(GT1A,1)=0 AND DT1A>3 AND GT1A>DT1A AND GT1A-DT1A<4 AND REFX(H,1)>REF(H,GT1A) AND REF(L,DT1A)>REF(LLV(L,10),DT1A),DT1A+1),NODRAW;
FG23A:=BACKSET(REFX(GT1A,1)=0 AND DT1A>3 AND GT1A>DT1A AND GT1A-DT1A<4 AND REFX(H,1)>REF(H,GT1A) AND (REF(H,GT1A)3 AND DT1A>GT1A AND DT1A-GT1A<4 AND REFX(L,1)3 AND DT1A>GT1A AND DT1A-GT1A<4 AND REFX(L,1)REF(LLV(L,13),DT1A) OR REF(FG231A,GT1A)=0),DT1A+1),NODRAW;
//前短后长,去3;
FDD23A:=REF(H,GT1A)3 AND GT1A>DT1A AND GT1A-DT1A<4 AND REFX(H,1)LLV(L,DT1A+5),DT1A+1),NODRAW;
FG24A:=BACKSET(REFX(DT1A,1)=0 AND GT1A>3 AND DT1A>GT1A AND DT1A-GT1A<4 AND REFX(L,1)>LLV(L,DT1A+3) AND REF(H,GT1A)1 AND FG23A<>1 AND FG231A<>1 AND FG24A<>1 AND FG2AA<>1 AND FG2AA<>1 AND FG2BA<>1 AND GT1A=0),NODRAW;
DT2A:=BARSLAST(FD21A<>1 AND FD23A<>1 AND FD231A<>1 AND FD24A<>1 AND FD2AA<>1 AND FD2AA<>1 AND FD2BA<>1 AND DT1A=0),NODRAW;
FG3A:=BACKSET(REFX(GT2A,1)=0 AND GT2A=REF(H,GT2A),GT2A+1),NODRAW;
FD3A:=BACKSET(REFX(DT2A,1)=0 AND DT2AREF(L,REF(DT2A,1)+1),1,0),NODRAW;
GT3A:=BARSLAST(GT2A=0 AND FG3A<>1 AND FG31A<>1),NODRAW;
DT3A:=BARSLAST(DT2A=0 AND FD3A<>1 AND FD31A<>1),NODRAW;
FG4A:=BACKSET(REFX(GT3A,1)=0 AND GT3A=REF(H,GT3A),GT3A+1),NODRAW;
FD4A:=BACKSET(REFX(DT3A,1)=0 AND DT3AREF(L,REF(DT3A,1)+1),1,0),NODRAW;
HHHA:=GT3A=0 AND FG31A<>1 AND FG3A<>1,PRECIS0,NODRAW;
LLLA:=DT3A=0 AND FD31A<>1 AND FD3A<>1,PRECIS0,NODRAW;
TT:=BACKSET(ISLASTBAR,SUMBARS(CROSS(HHHA,LLLA),5)+1);
DRAWLINE1(TT&&LLLA,L,HHHA,H,0),RGB(200,200,0),LINETHICK1;//红色↗↗↗
DRAWLINE1(TT&&HHHA,H,LLLA,L,0),RGB(0,77,255),LINETHICK1;//绿色↘↘↘
DRAWTEXT(CROSS(TT&&HHHA,LLLA)&&NOT(CROSS(TT&&HHHA,LLLA)&&HREF(L,SUMBARS(CROSS(TT&&LLLA,HHHA),2))),L,'底'),ALIGN1,VALIGN0,RGB(255,111,255),FONTSIZE22;
//高.低.顶.底
DRAWTEXT(CROSS(TT&&HHHA,LLLA)&&HREF(L,SUMBARS(CROSS(TT&&LLLA,HHHA),2)),L,'底多'),ALIGN1,VALIGN2,RGB(255,0,0),FONTSIZE22;//最近底>上次底,H,'底多')
DRAWTEXT(TJ&&BARSLASTCOUNT(T1)=1&&L>REF(L,SUMBARS(TJ&&BARSLASTCOUNT(T1)=1,2)),L,'低'),ALIGN1,VALIGN2,RGB(0,255,0),FONTSIZE22;//最近高<上次高,H,'高空')
DRAWTEXT(TJ&&BARSLASTCOUNT(T2)=1&&H上次低,H,'低多')