为什么取消后期货订单还是成交了?
了解期货取消请求与确认取消为什么不同、pending cancel 与成交如何发生竞争,以及发送替代订单前应检查哪些记录。
直接答案
点击取消只是发送请求,并不能证明期货订单已经消失。在交易场所确认 Cancelled 前,剩余数量仍需要核对,而且取消最终生效前可能已经发生成交。
Pending cancel与Cancelled是不同状态
CME Globex区分Pending Cancel Confirmation和Cancelled。
Pending表示平台已收到取消请求,但交易引擎尚未确认取消。
Cancelled表示请求已经成功处理,订单已从订单簿移除。
当用户说“我在成交前取消了”时,应先检查这一差别。
只看点击时间不够。
应看交易场所确认的订单状态。
快速市场会产生消息竞争
假设有5份卖出限价正在等待。
5份仍为working时点击取消。
取消确认前,兼容买方到达订单。
如果先成交2份,账户已经有2份完成交易。
之后剩余3份可以成功取消。
后来的取消确认不会删除之前的成交。
部分成交容易让最终状态产生误解
假设原订单为10份。
取消流程前后成交3份。
最终记录可能是:
只看最终Cancelled标签,可能误以为什么都没有成交。
应同时核对累计成交和剩余数量。
为什么期货订单会在多个价格成交说明累计成交核对。
- 累计成交:3
- 取消剩余:7
- 最终working:0
Cancel reject也是可能结果
取消是一项修改订单状态的请求。
CME订单协议支持无法处理取消请求时返回reject。
订单状态或请求标识问题都可能导致取消失败。
不要把界面动画或灰掉的按钮当作交易所确认。
查看经纪商日志或执行报告,确认取消是成功、拒绝还是仍在等待。
不知道旧订单状态时不要发送替代订单
假设取消5份订单后,在确认旧订单最终状态前又发送新的5份。
如果旧订单在取消竞争中成交2份,新订单又成交5份,实际敞口可能变成7份。
原本想保持5份,结果反而增加了持仓。
应按下面方式核对:
最终持仓 = 之前持仓 + 所有已确认成交。
取消数量不是交易,不计入持仓。
网络和界面时差会隐藏真实顺序
订单界面、经纪商服务器、订单网关、撮合引擎和市场数据不是同一个时钟。
其他消息路径已经发生成交时,屏幕仍可能显示Pending Cancel。
即使交易所成交事件更早,成交提醒也可能在点击取消后才到达。
重建顺序时使用交易所或经纪商时间戳。
不要把弹窗出现顺序当作事件发生顺序。
市场状态可以限制取消行为
订单功能会随市场状态变化。
CME Globex区分pre-open、open、pause、closed、maintenance,并分别定义订单输入、修改和取消能力。
不要假设open市场中的取消经验在所有时段都一样。
确认准确市场状态和当前规则。
期货市场全天24小时开放吗?说明时段边界的重要性。 [!TRYMARK] 重建一次取消竞争 从working 10份订单开始。假设取消确认前成交3份,剩余7份取消。写出累计成交、取消数量、最终working数量和持仓变化。
使用取消检查清单
记录准确合约和订单ID。
记录原始数量与累计成交。
记录取消请求时间。
等待取消确认或最终状态。
检查是否返回cancel reject。
分开核对剩余数量和成交数量。
发送替代订单前确认净持仓。
使用经纪商或交易所时间,而不是屏幕提醒顺序。
本文解释订单状态机制,不保证任何特定经纪商的取消处理速度。
常见问题
点击取消后期货订单还能成交吗?
如果成交发生在取消最终生效前,或消息到达界面的顺序不同,就可能出现这种情况。应检查交易场所确认时间和状态。
Pending cancel是什么意思?
表示取消请求已收到,但订单尚未进入确认的Cancelled状态。
显示Cancelled就表示没有成交吗?
不是。订单可能先部分成交,再取消剩余数量。应检查累计成交。
点击取消后可以马上重新发送同样订单吗?
应先确认旧订单的最终状态和成交,否则旧订单成交加上新订单可能造成超过预期的持仓。