实时撤单成功,却返回false

 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);
                }
            }

实时行情,A函数撤单成功,却返回false
下单操作:A_SendOrder()、撤单操作:A_DeleteOrderEx(),下单和撤单成功,却返回false
A_SendOrderEx总是返回False
A_SendOrderEx函数下单返回False
如何确保A_DeleteOrder(oid[0]撤单成功
A_SendOrder 返回值不成功
主连合约888用A_DeleteOrder撤单不成功
A_sendorderex 没有执行,返回值是false,委托列表是空
使用A_Buy/A_Sell/A_DeleteAccountOrder下模拟柜台股票单, 不管成功失败返回值都是False
A函数发单成交但返回值为False

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);
                }
            }

}