主连合约888用A_DeleteOrder撤单不成功
2022-04-20 15:24

实验代码如下:
Params
    //此处添加参数

Vars
    //此处添加变量
    Global Integer Ordered;
    Global Integer OrderId;
    Global String gMapSymbol;
Defs
    //此处添加公式函数
    
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
    }
    OnReady()
    {
        Array<String> Symbols;
        GetLayerOrderMapSymbols(Symbols);
        gMapSymbol = Symbols[0];
    }
    OnTimer(Integer id,Integer millsecs)
    {
        Bool Ret = A_DeleteOrder(OrderId);
        FileAppend("C:\\debug.txt", Text(SystemDateTime) + gMapSymbol + " ====delet:OrderId:" + Text(OrderId)
            + ",Ret:" + IIFString(Ret, "True", "False"));
    }
    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        If(Ordered == 0)
        {
            Ordered = 1;
            Array<Integer> OrderIds;
            A_SendOrderEx(gMapSymbol, Enum_Buy, Enum_Entry, 2, 0, OrderIds);
            OrderId = OrderIds[0];
            FileAppend("C:\\debug.txt", Text(SystemDateTime) + gMapSymbol + " ==== OrderId:" + Text(OrderId));
            CreateTimer(5000, 0, 1);
        }
    }

现象:映射主力合约,下单能成功,5S后撤单不成功(但是Ret的值照样为True)。如果直接加载在具体合约上,撤单成功。

问题:系统是不是要加一个函数对具体合约撤单,把gMapSymbol传进去。

 

评论区
superfafa

确实换成A_DeleteOrderEx就可以了。

2022-04-21 15:30
superfafa

需要的,图表中用Buy(lots, theoryprc, Enum_Signal_NotSend);记录信号,实际发单用A函数。

既然有对具体合约的开单:A_SendOrderEx(gMapSymbol, Enum_Buy, Enum_Entry, KaiVol, OrderPrc, OrderIds);

应该就有对应的对具体合约的撤单:A_DeleteOrder(gMapSymbol,OrderId);

如果目前没有,可不可以提这样的需求?

2022-04-20 18:41
顶部