开拓者期货期权程序化系统交易论坛

标题: 软件 [打印本页]

作者: gongdacsl    时间: 2018-3-12 13:18:13     标题: 软件

管理们,您们好,

请先查阅下面的代码
Params
               
Begin

If (!AA_CallAuctionFilter()) Return;

If (BarStatus == 2)
   {
        If (A_GetOpenOrderCount()==2) Return;//如果委托单数量是2,则退出。
       
    if (A_Getopenordercount()<>2)//如果委托单数量不是2,则开始执行。
           {
            A_DeleteOrder();
            A_SendOrder(Enum_buy, Enum_Entry, 1, 2162);
            A_SendOrder(Enum_Sell, Enum_Exit, 1, 2154);
            }
    }
       
End

我先
手动委托
2158卖出,
2150买入,

然后
加载程序//程序不会执行,因为两个委托


2158成交
//只剩下2150买入这一个委托,那么程序就必须先撤掉这个委托,然后重新委托
2154买入
2162卖出
然后重新等待

但可以看到这个程序竟然重复撤单

再次测试后,竟然无限委托了。

能否告知这个程序有无逻辑错误?原因是什么?


作者: gongdacsl    时间: 2018-3-12 13:21:57

抱歉,应该2162和2154互换。

期待您们的大力帮助。
作者: 小米    时间: 2018-3-13 11:01:27

需要使用全局变量来控制撤单 与发单 的委托次数。。
因为委托出去到回报返回到本地,是需要时间的,这个过程中,可能已经有新的tick进来,再次运算,发现当前条件仍满足于是再次委托 。。而事实上之前的委托可能已经到了交易所或是在返回的中途了,这样就会导致重复委托的结果 。。





欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2