[PEL] 复制代码 INPUT:X(20,1,100,1),SS(1,1,10000,1);
X周期高点:REF(HHV(H,X),1);//X是参数,自行调整
X周期低点:REF(LLV(L,X),1);
手数:=SS;
//交易条件:
开多平空条件:=CLOSE>X周期高点 and open<X周期高点;
开空平多条件:=CLOSE<X周期低点 and open>X周期高点;
//交易系统
//收盘平多:sell(平仓时间 and holding>0, 0, thisclose);
//收盘平空:sellshort(平仓时间 and holding<0,0,thisclose);
if 开多平空条件=1 then BEGIN
平空:sellshort(开多平空条件 and holding<0, 手数,MARKET);
开多:buy(开多平空条件 and holding=0, 手数,MARKET);
END
if 开空平多条件=1 then BEGIN
平多:sell(开空平多条件 and holding>0,手数,MARKET);
开空:buyshort(开空平多条件 and holding=0,手数,MARKET);
END
//多头部分************************
//止盈
IF (C-AVGENTERPRICE)/AVGENTERPRICE>0.2 THEN BEGIN
SELL(1,HOLDING,MARKET);
END
//止损
IF (AVGENTERPRICE-C)/AVGENTERPRICE>0.05 THEN BEGIN
SELL(1,HOLDING,MARKET);
END
//空头部分************************
//参考多头部分自行实现
//收盘前平仓,如果是小周期建议直接指定k线时间。例如1分钟周期时,指定185900,即
//if time=185900 then begin
// sell(1,holding,MARKET);
// sellshort(1,holding,MARKET);
//end
//如果是大周期,可以使用固定时间间隔模式的情况下,使用下面逻辑实现。
//abb2:timetot0(dynainfo(207))-timetot0(ref(time,1)),NODRAW;//K线已经进行过的时间
M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
//M15:T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
if (M1<=DYNAINFO(207) and ISLASTBAR) or (time=190000 and not(ISLASTBAR)) then begin //注意:6.23 以后版本,图表上使用islastbar函数,请勿勾选仅刷最后一根K
sell(1,holding,MARKET);
sellshort(1,holding,MARKET);
end |