代码逻辑是收盘前N分钟 你要是在收盘前N分钟内开仓,它自然也会触发平仓了。代码仅适用于小周期,
另外默认参数是三分钟,也不是五分钟。
[PEL] 复制代码
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
手数:=1;
//交易条件
开多平空条件:=CROSS(K,D);//开多平空条件
开空平多条件:=CROSS(D,K);//开空平多条件
INPUT:N(5,1,200,1);//N是提前的分钟数
MARK:=0;//用于记录当前是否满足某个收盘K结束前N分钟的变量
FOR I=0 TO 3 DO //循环遍历每个收盘时间来进行判断。这里可以调整I起始位置 来控制需要处理的收盘节点。
BEGIN
abb:=timetot0(CLOSETIME(I))-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时,在一个K上对应一个固定值
abb3:=timetot0(CLOSETIME(I))-timetot0(dynainfo(207)),NODRAW;//当前时间(当前的北京时间)距离收盘K时间 , 在最新K上会一直变动。因为这个返回的是具体秒数
IF (abb<N*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and abb3>=0 and abb3<N*60) THEN MARK:=1;
END
if MARK then //兼顾实际交易时候的信号和历史回测信号
begin
收盘平多:sell(holding>0,holding,market);
收盘平空:sellshort(holding<0,holding,market);
end
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件 and not(MARK),手数,MARKET);
开空:BUYSHORT(开空平多条件 and not(MARK),手数,MARKET);
|