撤开仓单,报“撤单失败”该怎么处理逻辑

我在onorder中if((ord.status == Enum_Filled || ord.status == Enum_FillPart) && ord.combOffset == Enum_Entry)这个条件时,会撤单;1.用A_DeleteOrderEx(first_sell);直接撤,就会有“撤单失败:未到同一委托时间间隔”的这种报错;2.用下面这段去重的代码去判断撤单,就会有撤单很慢,甚至不撤单的情况;而且看账户记录,开仓单还是申报状态,后面有撤单原因,看日志也发撤单反馈成功了,但是不扯单// 安全撤单: 状态校验Bool SafeDeleteOrder(Integer orderId, String tag = ""){ // 2) 状态已为终态, 无需撤单, 记账去重 If(IsOrderCancelable(orderId) == False) { LogFile("SafeDeleteOrder状态已为终态, 无需撤单"); Return False; } Bool succ = A_DeleteOrderEx(orderId, "safeCancel"); If(succ) { LogFile("SafeDeleteOrder撤单成功 tag=" + tag + ", id=" + Text(orderId) + ", 累计成功=" + Text(gCancelOk)); }Else { gCancelFail = gCancelFail + 1; LogFile("SafeDeleteOrder撤单失败 tag=" + tag + ", id=" + Text(orderId) + ", 累计失败=" + Text(gCancelFail)); } Return succ;}请大神给指导一下这种情况应该怎么处理才能避免,即能第一时间撤单开仓单,又能避免报撤单失败的错误

使用一个map缓存当前order的id编号和当前时间,A函数撤单前判断是否时间间隔5s,这个是软件层的同一订单撤单限制,或者撤单信息先存储起来,放到一个大于5s的定时器中处理撤单