具体下需求,存在很多种状态。
例如
当第一次开多后,后面触发平多动作后,仓位为0,再次触发开多信号时,不开多?
当第一次开多后,后面触发开多动作后,是否继续加开仓?
等等。。。。
1,图表不支持锁仓,必须一个方向的仓位平多才能反向开仓。
2,后台可以锁仓,用TYPEBAR判断上次信号
if TYPEBAR(1,1) and 开空条件 then tbuyshort()//上次开仓信号是开多,这次开空
通过全局变量标记开仓仓位进行限制,
VARIABLE:flag=0;//初始值是0,第一次开场可能存在空头,或者是多头。所以初始值为0时,在其他条件满足是同样开仓。(进入第一次开仓后flag状态只有正负两种)
if c>o and (flag=0 or flag=1) then begin
sell(1,1,MARKET);
BUYSHORT(1,1,MARKET);
flag:=-1;//开仓后将flag置为反向标志位。避免再次开仓。直到开多头仓位,才能被置为1.
end
if c<o and (flag=0 or flag=-1) then begin
sellSHORT(1,1,MARKET);
BUY(1,1,MARKET);
flag:=1;
end