//准备需要的中间变量
INPUT:n1(5,5,10,1),n2(8,8,10,1),n3(13,13,20,1),ss(1,1,10,1);
//均线
ma1:ma(c,n1);
ma2:ma(c,n2);
ma3:ma(c,n3);
//MACD
DIFF := floor(EMA(CLOSE,12) - EMA(CLOSE,26));
DEA := floor(EMA(DIFF,9));
//KD
RSV:=(CLOSE-LLV(LOW,13))/(HHV(HIGH,13)-LLV(LOW,13))*100;
K:=floor(SMA(RSV,5,1));
D:=floor(SMA(K,5,1));
//持仓手数;
手数:=ss;
//空头进场
M1:=(EXIST(CROSS(MA2,MA1),3)) or (EXIST(CROSS(MA3,MA2),3));
M2:=(EXIST(CROSS(D,K),3) AND DIFF<DEA) OR (EXIST(CROSS(DEA,DIFF),3) AND K<D);
M3:=M1 AND M2 AND REF(ISDOWN OR ISEQUAL ,1);
//空头平仓
EE:=REF(C>REF(HIGH,1),1)&&HIGH>=OPEN+6*MINDIFF;
FF:=REF(C>REF(HIGH,1),2)&&REF(HIGH<OPEN+6*MINDIFF,1)&&HIGH>=REF(OPEN,1)+6*MINDIFF;
JJ:=EE OR FF;
//多头进场
M5:=(EXIST(CROSS(MA1,MA2),3)) OR (EXIST(CROSS(MA2,MA3),3));
M6:=(EXIST(CROSS(K,D),3) AND DIFF>DEA) OR (EXIST(CROSS(DIFF,DEA),3) AND K>D);
M7:=M5 AND M6 AND REF(ISUP OR ISEQUAL,1);
//多头平仓
GG:=REF(C<REF(LOW,1),1)&&LOW<=OPEN-6*MINDIFF;
HH:=REF(C<REF(LOW,1),2)&&REF(LOW>OPEN-6*MINDIFF,1)&&LOW<=REF(OPEN,1)-6*MINDIFF;
XX:=GG OR HH;
//出仓线
CC:OPEN+6,LINEDASH,COLORBLUE;//空出仓线
DD:OPEN-6,LINEDOT,COLORGREEN;//多出仓线
//开仓与平仓条件
平空条件:=(JJ and time>094500 and time<162500);
平多条件:=(XX and time>094500 and time<162500);
开空条件:=(M3 and time>094500 and time<160000);
开多条件:=(M7 and time>094500 and time<160000);
//开仓信号过滤
AA:DRAWICON(FILTER(开多条件,5),OPEN+1,1);
BB:DRAWICON(FILTER(开空条件,5),OPEN-1,2);
//平仓信号输出
WW:DRAWICON(EE,OPEN+6,4);
ZZ:DRAWICON(GG,OPEN-6,5);
//平仓
平空:SELLSHORT(平空条件 AND HOLDING<0,0,THISCLOSE);
平多:SELL(平多条件 AND HOLDING>0,0,THISCLOSE);
开空:BUYSHORT(BB AND HOLDING=0,手数,THISCLOSE);
开多:BUY(AA AND HOLDING=0,手数,THISCLOSE);
//强平
平多1:SELL( TIME>162600 AND HOLDING>0,0,THISCLOSE);
平空1:SELLSHORT(TIME>162600 AND HOLDING>0,0,THISCLOSE);