DIFF := EMA(CLOSE,8) - EMA(CLOSE,21);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA :=EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD:=2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线=
MID:=MA(CLOSE,60);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,60);//求M个周期内的收盘价的标准差
TOP:MID+2*TMP2;//布林通道上轨
BOTTOM:MID-2*TMP2,NOTEXT;//布林通道下轨
MA1:MA(C,13);
MA2:MA(C,60);
MA3:MA(C,120);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
LC :=REF(CLOSE,1);
RSI:=SMA(MAX(CLOSE-LC,0),7,1)/SMA(ABS(CLOSE-LC),7,1)*100;
J:=CROSS(DIFF,DEA);
S:=CROSSDOWN(DIFF,DEA);
N:=BARSLAST(CROSSDOWN(L,BOTTOM))+1;
B1:J&&SUM(J,N)=1&&EXIST(L<BOTTOM,BARSLAST(S)),NODRAW;
DB:BARSLAST(B1)+1,NODRAW;//金叉B
DC:SUMBARS(B1,2),NODRAW;//金叉C
DD:BARSLAST(J)+1,NODRAW;//金叉D
DE:REF(BARSLAST(S),DB)+DB,NODRAW;//死叉E
DF:REF(BARSLAST(S),DC)+DC,NODRAW;//死叉F
A:=S&&EXIST(H>TOP,DD)&&EXIST(K>80,DD)&&DEA>0&&MA2<MA3&&(REF(EXIST(MA2>MA3,REF(BARSLAST(B1),1)),DB)||NOT(REF(EXIST(MA2>MA3,REF(BARSLAST(B1),1)),DB))&&REF(DEA,DB)<REF(DEA,DC))&&EXIST(MA1<MA2,DD);
A,SK('A');
EXIST(C<BOTTOM,BARSSK)&&DIFF<0&&DEA<0&&J&&DEA>REF(DEA,REF(BARSLAST(J),1)),BP('A');
ISUP&&C>TOP&&C>REF(HHV(H,DD),BARSSK),BP('A');
N1:=BARSLAST(CROSS(H,TOP))+1;
B11:S&&SUM(S,N1)=1&&EXIST(H>TOP,BARSLAST(J)),NODRAW;
DB1:BARSLAST(B11)+1,NODRAW;//金叉B
DC1:SUMBARS(B11,2),NODRAW;//金叉C
DD1:BARSLAST(S)+1,NODRAW;//金叉D
DE1:REF(BARSLAST(J),DB1)+DB1,NODRAW;//死叉E
DF1:REF(BARSLAST(J),DC1)+DC1,NODRAW;//死叉F
A1:=J&&EXIST(L<BOTTOM,DD1)&&EXIST(K<20,DD1)&&DEA<0&&MA2>MA3&&(REF(EXIST(MA2<MA3,REF(BARSLAST(B11),1)),DB1)||NOT(REF(EXIST(MA2<MA3,REF(BARSLAST(B11),1)),DB1))&&REF(DEA,DB1)>REF(DEA,DC1))&&EXIST(MA1>MA2,DD1);
A1,BK('B');
EXIST(H>TOP,BARSBK)&&DIFF>0&&DEA>0&&S&&DEA<REF(DEA,REF(BARSLAST(S),1)),SP('B');
ISDOWN&&C<BOTTOM&&C<REF(LLV(L,DD1),BARSBK),SP('B');
//////////////////////////
NB:=BARSLAST(CROSS(H,TOP))+1;
金叉:=CROSS(MACD,0);
死叉:=CROSSDOWN(MACD,0);
B1B:=死叉&&SUM(死叉,NB)=1&&EXIST(H>TOP,BARSLAST(金叉));
DCB:BARSLAST(金叉)+1,NODRAW;//O
DBB:REF(BARSLAST(B1B),1)+2,NODRAW;//O
DDB:REF(BARSLAST(金叉),DBB)+DBB,NODRAW;
ZB:=(EXIST(H>TOP,DCB)&&EXIST(K>80,DCB))||EXIST(D>80,DCB),NODRAW;
AB:=死叉&&DEA>0&&ZB&&REF(MA2,DC)>REF(MA3,DC)&&C>MA3
&&REF(MA2,DBB)>REF(MA3,DBB)&&REF(EXIST(H>TOP,BARSLAST(金叉)+1),DBB)&&DEA<REF(DEA,DBB)&&EXIST(MA1<MA2,DBB);
AB,SK('C');
HHB:REF(HHV(H,DDB),BARSLAST(AB&&SKVOL=0)+1);
ISUP&&C>HHB&&C>TOP,BP('C');
XB:=COUNT(MA1<MA2&&MA2<MA3,BARSLAST(AB&&SKVOL=0))=1,NODRAW;
XDB:=BARSLAST(XB),NODRAW;
EXIST(RSI<20||DIFF>0,BARSLAST(XB))&&BARSLAST(XB)<BARSSK&&金叉&&DEA>REF(DEA,SUMBARS(金叉,2)),BP('C');
N1B:=BARSLAST(CROSSDOWN(L,BOTTOM))+1;
B11B:=金叉&&SUM(金叉,N1B)=1&&EXIST(L<BOTTOM,BARSLAST(死叉));
DC1B:BARSLAST(死叉)+1,NODRAW;//O
DB1B:REF(BARSLAST(B11B),1)+2,NODRAW;//O
DD1B:REF(BARSLAST(死叉),DB1B)+DB1B,NODRAW;
//&&C<MA3
Z1B:=(EXIST(L<BOTTOM,DC1B)&&EXIST(K<20,DC1B))||EXIST(D<20,DC1B),NODRAW;
A1B:=金叉&&DEA<0&&Z1B&&REF(MA2,DC1B)<REF(MA3,DC1B)
&&REF(MA2,DB1B)<REF(MA3,DB1B)&&REF(EXIST(L<BOTTOM,BARSLAST(死叉)+1),DB1B)&&DEA>REF(DEA,DB1B)&&EXIST(MA1>MA2,DB1B);
A1B,BK('D');
LLB:REF(LLV(L,DD1B),BARSLAST(A1B&&BKVOL=0)+1);
ISDOWN&&C<LLB&&C<BOTTOM,SP('D');
X1B:=COUNT(MA1>MA2&&MA2>MA3,BARSLAST(A1B&&BKVOL=0))=1,NODRAW;
XD1B:=BARSLAST(X1B),NODRAW;
EXIST(RSI>80||DIFF<0,BARSLAST(X1B))&&BARSLAST(X1B)<BARSBK&&死叉&&DEA<REF(DEA,SUMBARS(死叉,2)),SP('D');
AUTOFILTER;