F:=macd.DIF;
D:=MacD.DEA;
M:=MACD.MACD;
HT:=BArslAST(crOSS(F,D));
HT1:=SUMBARS(HT=0,2);
LT:=BARSLAST(CROSS(D,F));
LT1:=SUMBARS(LT=0,2);
H1:=BARSLAST(H=HHV(H,HT+1));
H2:=REF(H1,LT)+CONST(LT);
H3:=REF(H1,LT1-1)+CONST(LT1);
L1:=BARSLAST(L=LLV(L,LT+1));
L2:=REF(L1,HT1-1)+CONST(HT1);
L3:=REF(L1,HT)+CONST(HT);
DRAWLINE(CURRBARSCOUNT=CONST(H2)+1,H,CONST(M)>0 AND CURRBARSCOUNT=CONST(H1)+1,H,1),COLORRED;
DRAWLINE(CURRBARSCOUNT=CONST(L2),L,CONST(M)>0 AND CURRBARSCOUNT=CONST(L1)+1,L,1),COLORYELLOW;
DRAWLINE(CURRBARSCOUNT=CONST(H3),H,CONST(M)<0 AND CURRBARSCOUNT=CONST(H1)+1,H,1),COLORRED;
DRAWLINE(CURRBARSCOUNT=CONST(L3)+1,L,CONST(M)<0 AND CURRBARSCOUNT=CONST(L1)+1,L,1),COLORYELLOW;
N1:=1;
AX:=REF(H,N1)=HHV(H,2*N1+1);
B1:=FILTER(AX,N1);
C1:=BACKSET(B1,N1+1);
D1:=FILTER(C1,N1);{高点}
A2X:=REF(L,N1)=LLV(L,2*N1+1);
B2:=FILTER(A2X,N1);
C2:=BACKSET(B2,N1+1);
D2:=FILTER(C2,N1);{低点}
E1:=(REF(LLV(L,2*N1),1)+REF(HHV(H,2*N1),1))/2; E2:=(H+L)/2;{高低点出现在同一k线上时可作取舍}
H11:=(D1 AND NOT(D2 AND E1>=E2)) OR ISLASTBAR OR BARSCOUNT(C)=1;
L11:=(D2 AND NOT(D1 AND E1<E2)); H21:=D1 AND NOT(D2 AND E1>=E2);
X1:=REF(BARSLAST(H11),1)+1; F1:=BACKSET(H11 AND COUNT(L11,X1)>0,LLVBARS
(IF(L11,L,10000),X1));
G1:=F1>REF(F1,1); I1:=BACKSET(G1,2); LD:=I1>REF(I1,1);{过滤后低点}
L21:=LD OR ISLASTBAR OR BARSCOUNT(C)=1;
X2:=REF(BARSLAST(L21),1)+1; F2:=BACKSET(L21 AND COUNT(H21,X2)>0,HHVBARS
(IF(H21,H,0),X2));
G2:=F2>REF(F2,1); I2:=BACKSET(G2,2); HD:=I2>REF(I2,1);{过滤后高点}
R1:=BACKSET(ISLASTBAR,BARSLAST(HD)+1); S1:=R1>REF(R1,1); {前一高}
T1:=BACKSET(ISLASTBAR,BARSLAST(LD)+1); U1:=T1>REF(T1,1); {前一低}
R2:=BACKSET(S1,REF(BARSLAST(HD),1)+2); S2:=R2>REF(R2,1); {前二高}
T2:=BACKSET(U1,REF(BARSLAST(LD),1)+2); U2:=T2>REF(T2,1); {前二低}
T3:=BACKSET(U2,REF(BARSLAST(LD),1)+2); U3:=T3>REF(T3,1); {前三低}
T4:=BACKSET(U3,REF(BARSLAST(LD),1)+2); U4:=T4>REF(T4,1); {前四低}
R3:=BACKSET(S2,REF(BARSLAST(HD),1)+2); S3:=R3>REF(R3,1); {前三高}
R4:=BACKSET(S3,REF(BARSLAST(HD),1)+2); S4:=R4>REF(R4,1); {前四高}
短期压力:DRAWLINE(S2,H,S1,H,1),COLORRED;
短期支撑:DRAWLINE(U2,L,U1,L,1),COLORGREEN;
A77:=(2*C+H+L)/4;
支撑:LLV(A77,21),COLORMAGENTA,DOTLINE;
压力:HHV(A77,21),COLORGREEN,DOTLINE;
IF(C>压力 OR 压力>REF(压力,1),压力,DRAWNULL),COLORRED,LINETHICK1;
DRAWTEXT(ISLASTBAR,压力,'压力'),COLORGREEN;
DRAWTEXT(ISLASTBAR,支撑,'支撑'),COLORMAGENTA;