//中间变量
HC长:REF(HHV(C,M),1);//长周期收盘价高点
LC长:REF(LLV(C,M),1);//长周期收盘价低点
HC短:REF(HHV(C,M1),1);//短周期收盘价高点
LC短:REF(LLV(C,M1),1);//短周期收盘价低点
手数:=SS;
//开平仓条件
长周期开多平空信号:=C>HC长;
长周期开空平多信号:=C<HC长;
平多条件:=C<LC短 ;
平空条件:=C>HC短 ;
开多条件:=C>HC短 ;
开空条件:=C<LC短 ;
//意图:
多单:在长周期发出开多信号起,到长周期发出平仓信号止,在短周期上只做多不做空;
空单:在长周期发出开空信号起,到长周期发出平仓信号止,在短周期上只做空不做多。
//交易系统:
(怎样在这里加入限制条件,即长周期开多平空条件成立起直到长周期开空平多条件成立止,进行如下操作)
平多:SELL( 平多条件 AND HOLDING>0,手数,LIMITR,C);
开多:BUY( 开多条件 AND HOLDING<=0,手数,LIMITR,C);
(怎样在这里加入限制条件,即长周期开空平多条件成立起直到长周期开多平空条件成立止,进行如下操作)
平空:SELLSHORT(平空条件 AND HOLDING<0,手数,LIMITR,C);
开空:BUYSHORT(开空条件 AND HOLDING>=0,手数,LIMITR,C);
平多条件:=C<LC短 ;
平空条件:=C>HC短 ;
开多条件:=C>HC短 ;
开空条件:=C<LC短 ;
这4个是对应短周期条件吗?
前面的定义代码不变,后面得要这样改
variable:n=0;
variable:m=0;
if 长周期开多平空信号:=C>HC长 then begin
n:=1;
m:=0;
end
if 长周期开空平多信号:=C<HC长 then begin
m:=1;
n:=0;
end
平多条件:=C<LC短 ;
平空条件:=C>HC短 ;
开多条件:=C>HC短 ;
开空条件:=C<LC短 ;
//意图:
//多单:在长周期发出开多信号起,到长周期发出平仓信号止,在短周期上只做多不做空;
//空单:在长周期发出开空信号起,到长周期发出平仓信号止,在短周期上只做空不做多。
//交易系统:
//(怎样在这里加入限制条件,即长周期开多平空条件成立起直到长周期开空平多条件成立止,进行如下操作)
if n=1 then begin
平多:SELL( 平多条件 AND HOLDING>0,手数,LIMITR,C);
开多:BUY( 开多条件 AND HOLDING<=0,手数,LIMITR,C);
end
//(怎样在这里加入限制条件,即长周期开空平多条件成立起直到长周期开多平空条件成立止,进行如下操作)
if m=1 then begin
平空:SELLSHORT(平空条件 AND HOLDING<0,手数,LIMITR,C);
开空:BUYSHORT(开空条件 AND HOLDING>=0,手数,LIMITR,C);
end
你好,测试了一下,基本实现了设想,但是在长周期开仓条件和短周期平仓条件重合时,不出现信号,既不平仓也不能重新开仓,必须等到下一次长周期开仓条件成立时,再出现信号,请问哪里需要修改??
你好,测试了一下,基本实现了设想,但是在长周期开仓条件和短周期平仓条件重合时,不出现信号,既不平仓也不能重新开仓,必须等到下一次长周期开仓条件成立时,再出现信号,请问哪里需要修改??
上面说的不对,应该是在长周期开仓条件和短周期平仓条件重合时,不出现信号,既不平仓也不能重新开仓,要等到这个短周期平仓后,才能再回到正常的开平仓规则中,会造成重合的那个长周期条件的那个时间段没有交易,始终持有前一个短周期仓位,这样会逆向持仓很长时间。