不一定。币安现货cancelReplace包含撤旧单和下新单两个动作,可能出现部分成功。界面上只有一个报错提示,不足以判断旧单仍然挂着,或者新单完全没有建立。
撤单和新单要分开看结果
响应中的cancelResult与newOrderResult分别记录两个动作的结果。撤单成功、新单失败时,旧单已经取消,而计划替换的新单没有成功建立。若原本依赖旧单执行卖出,此时可能出现没有对应新挂单的空档。
另一种结果是撤单失败而新单成功。允许撤单失败后继续尝试下单的模式下,新单可能已经建立,旧单则需要单独查询,不能凭整次请求报错就认为市场上没有新增委托。
报错后别直接重复整组动作
处理时应保留旧单编号、新单客户端编号和完整响应,分别检查cancelResponse与newOrderResponse。某个字段显示失败,还要查看对应错误信息;整体成功或失败的布尔值会丢失这里最重要的区别。
例如,撤单已成功,新单因会立即吃单而被拒绝,再盲目重复撤旧单,只会继续针对已取消的订单操作。若新单已成功,却换一个编号重新补单,则可能扩大原本计划的委托数量。
订单修改与撤销需要同时跟踪新旧标识;交易操作风险中的重复提交也适用于撤改单。恢复前先查清两笔订单的状态和成交量,再按剩余意图处理,不把报错简单归结为全部未执行。
原创文章,作者:eastbtc,如若转载,请注明出处:https://www.eastbtc.com/exchange/cex/29505.html