//中间变量
INPUT:M(50,5,300,30),N(1.25,0.1,10,0.1),D(20,1,100,1),SS(1,1,100,1);
VARIABLE:X:=50;
MID : MA(CLOSE,M);//布林中轨
UPPER:=MID + N*STD(CLOSE,M);//布林上轨
LOWER:=MID - N*STD(CLOSE,M);//布林下轨
LAST_UPPER:REF(UPPER,1);
LAST_LOWER:REF(LOWER,1);
HCD:=REF(HHV(C,D),1);//20周期收盘价高点
LCD:=REF(LLV(C,D),1);//20周期收盘价低点
KCZQS:=ENTERBARS+1,NOAXIS;//开仓至今的周期数
IF HOLDING=0 THEN
AA:=50;
ELSE
IF HOLDING<>O AND KCZQS<40 THEN
AA:=51-KCZQS;
ELSE
IF HOLDING<>O AND KCZQS>=40 THEN
AA:=10;
MACC:=MA(CLOSE,AA);
LAST_MACC:REF(MACC,1),COLORGREEN,LINETHICK2;
LAST_CLOSE:=REF(CLOSE,1);
P_KD:=MAX(OPEN,HCD);
P_KK:=MIN(OPEN,LCD);
P_DDCC:=MIN(OPEN,LAST_MACC);
P_KDCC:=MAX(OPEN,LAST_MACC);
//交易条件
KDTJ:=LAST_CLOSE>HCD AND HIGH>LAST_UPPER;//收盘价大于30周期收盘价最高值,且最高价上穿上轨
KKTJ:=LAST_CLOSE<LCD AND LOW<LAST_LOWER;//收盘价小于30周期收盘价最高值,且最低价下穿下轨
DDCCTJ:=LAST_CLOSE<LAST_MACC AND LAST_MACC<LAST_UPPER; //多单出场条件
KDCCTJ:=LAST_CLOSE>LAST_MACC AND LAST_MACC>LAST_LOWER; //空单出场条件
//交易系统
//离场
IF DDCCTJ THEN BEGIN
SELL(HOLDING>0,SS,STOPR,P_DDCC); //平多信号
END
IF KDCCTJ THEN BEGIN
SELLSHORT(HOLDING<0,SS,STOPR,P_KDCC); //平空信号
END
//入场
IF KDTJ THEN BEGIN
BUY(HOLDING=0,SS,STOPR,P_KD); //开多信号
END
IF KKTJ THEN BEGIN
BUYSHORT(HOLDING=0,SS,STOPR,P_KK); //开空信号
END
KDTJ:=LAST_CLOSE>HCD AND HIGH>LAST_UPPER;//收盘价大于30周期收盘价最高值,且最高价上穿上轨
KKTJ:=LAST_CLOSE<LCD AND LOW<LAST_LOWER;//收盘价小于30周期收盘价最高值,且最低价下穿下轨
这里文字写错了,应是20周期。。