BUY 指令自动平仓 开仓顺序问题
BUY 指令实盘时发现 ,持有空仓1手
触发条件,但程序先开多仓,再触发平空仓 ,因为开多仓在平空仓前,没有平空资金不足,导致开多仓失败(显示资金不足), 请问如何修改?
If ( MarketPosition <> 1 && zhisun_xinhao )
{
Buy(Lots ,Max(Open,min_Low) );
}
If ( MarketPosition <> 1 && zhisun_xinhao )
{
Buytocover (Lots ,Max(Open,min_Low) ); --------如果增加这段代码,先进行平仓,可以吗?
Buy(Lots ,Max(Open,min_Low) );
}
您现在的问题,不是平仓指令和开仓指令发出去的顺序问题。因为即便是平仓指令先发出去再发开仓指令,两者之间的时间差,也无法等到平仓指令的资金回来,所以开仓指令还是会报资金不足的。
如果不改代码,用TB的监控器功能,开仓资金不足成交不了后,监控器接管重新下单,这样可行吗?
可以用监控器同步的
平空仓和开多仓的命令是同时发出的,因为回报不可能那么快,所以会出现资金不足的情况。解决办法:
(1)增加资金,这是最好最简单的选择;
(2)如果不能增加资金,但具备很强的编程能力,可以用A函数来写策略,每次平仓反手会等平仓指令成交后,再发出开仓指令;
(3)如果不会用A函数写策略,可以参考 http://www.tbquant.net/dist/index.html#/?navigate=&cid=510&position=toc48 案例8 试下