[PEL] 复制代码
INPUT:N(3,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
//中间变量
INPUT:K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),手数(1,1,10000,1);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
浮动区间:=MAX(HH-LL,HC-LL);//RANGE
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
//交易条件
开多条件:=C>上轨 AND HOLDING=0;
开空条件:=C<下轨 AND HOLDING=0;
TCD:NOT(MARK);
//交易系统
开多:BUY(开多条件 AND TCD,手数,MARKET);
开空:BUYSHORT(开空条件 AND TCD ,手数,MARKET);
if MARK then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end