Array<Integer> orderIds;
Global Bool ret(False);
If(A_GetOpenOrderCount(0) > 0)
            {
                ret = A_GetUnFillOrderIDs(orderIds, "", 0);
                Integer k;
                For k = 0 To GetArraySize(orderIds) - 1
                {
                    ret = A_DeleteOrderEx(orderIds[k]);
                    Print("A_Delete撤单成功:" + IIFString(ret, "True", "False"));
                    PlotBool("撤单成功", ret, High);
                }
            }
Vars
    Global Bool ret(False);
    
    Array<Integer> orderIds;
Events
    OnInit()
    {
        A_SubscribeTradeByCreateId(Enum_Trade_Source_Manual);
    }
    OnOrder(OrderRef ord)
    {
        If(ord.status==Enum_Declared)
        {
            CreateTimer(1000,datetimeadd(currentdate+CurrentTime,10));  
            print(TimeToString(currenttime));
            print("启动撤单监控");
        }
    }
    OnTimer(Integer id,Integer millsecs)
    {
        {print("启动timer");
            //撤账户的所有未成交单
            If(A_GetOpenOrderCount(0) > 0)
            {
                //获取未完成的报单数组
                ret = A_GetUnFillOrderIDs(orderIds, "", 0);
                Integer k;
                For k = 0 To GetArraySize(orderIds) - 1
                {
                    ret = A_DeleteOrderEx(orderIds[k]);
                    print(timetostring(CurrentTime));
                    Print("A_Delete撤单成功:" + IIFString(ret, "True", "False"));
                    PlotBool("撤单成功", ret, High);
                }
            }
        }    
        StopTimer(id);
    }
这是测试用的代码

你给的代码无法通过编译 也没有具体的测试场景
我补全了代码和测试场景 测出来是没有问题的
如果你还解决不了问题,请补全完整的测试代码和测试场景,我再复现看看
目前来看,应该是你的代码和测试环境的问题,请再仔细检查一下
新开策略,没有其他多余的代码,完完整整用了上面您的测试代码,还是不行,依旧撤单成功却返回false
这是期货公司要求的流控,不允许频繁撤单。
手动发一个单,过了十来秒或者一分钟以上,才启动自动交易,也是撤单成功却返回false
消息中心记录呢?建议你print把currenttime也输出一下,然后找消息中心的记录,根据时间进行比对,截图发上来


测试代码是你上面发的吗?我试一下
是的
应该是权限控制问题

你的消息中心应该有这个报错
这个意思就是,一个委托单,发出去5秒内不允许撤单
是的,有这个报错,但是报错之后,撤单成功了,为什么还是返回false的呢?
返回false是因为之前却是出现撤单失败了啊
后来又撤单成功和之前的撤单失败又没关系,又不会抹掉之前的撤单失败记录
非完整代码
Vars
Global Bool ret(False);
Array<Integer> orderIds;
OnBar(ArrayRef<Integer> indexs)
    {
        if(BarStatus == 2)
        {
            //撤账户的所有未成交单
            If(A_GetOpenOrderCount(0) > 0)
            {
                //获取未完成的报单数组
                ret = A_GetUnFillOrderIDs(orderIds, "", 0);
                Integer k;
                For k = 0 To GetArraySize(orderIds) - 1
                {
                    ret = A_DeleteOrderEx(orderIds[k]);
                    Print("A_Delete撤单成功:" + IIFString(ret, "True", "False"));
                    PlotBool("撤单成功", ret, High);
                }
            }
}