以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]多空交替开仓  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=155221)

--  作者:sidadeapu
--  发布时间:2017/6/19 16:34:55
--  [求助]多空交替开仓
请教如果上次开多,这次只能开空;如果上次开空,这次只能开多。先谢了。
--  作者:wenarm
--  发布时间:2017/6/19 17:00:03
--  

具体下需求,存在很多种状态。

例如

当第一次开多后,后面触发平多动作后,仓位为0,再次触发开多信号时,不开多?

当第一次开多后,后面触发开多动作后,是否继续加开仓?

等等。。。。

 


--  作者:pyd
--  发布时间:2017/6/19 17:02:40
--  

1,图表不支持锁仓,必须一个方向的仓位平多才能反向开仓。

2,后台可以锁仓,用TYPEBAR判断上次信号

if TYPEBAR(1,1) and 开空条件 then tbuyshort()//上次开仓信号是开多,这次开空


--  作者:sidadeapu
--  发布时间:2017/6/19 17:18:46
--  
不存在加仓和锁仓的问题,就是当第一次开多后,后面触发平多动作后,仓位为0,再次触发开多信号时,忽略信号不开多,直至触发开空条件。也就是交易结果顺序是:开多,平多,开空,平空,开多,平多,开空,平空.....。
--  作者:wenarm
--  发布时间:2017/6/19 17:42:26
--  

通过全局变量标记开仓仓位进行限制,

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