[RFC] 优化待处理的取消/更新订单的实时调整

作者: JiajunWan创建于 2026年5月27日更新于 2026年9月17日
标签RFC

□ 内容

这是政策上的改进,而不是错误的修复。

目前飞行订单的现场核对政策处理SUPMITTED ' 订单和PENDING-CANCEL ' /`PENDING-UPDATE ' 订单,一旦在运行时间检查路径中重新试算预算已耗尽,则照此办理。 这对从未承认的提交是有效的,但对于模糊的取消/更新结果是过于激进的,因为命令可能已经超时,从未到达会场,或者在后续状态查询失败时到达会场.

具体的故障模式是网络中断或长期连通性问题,持续时间足够长,足以使 " inflight check retries " 用尽。 在这种情况下,即使会议地点从未确认取消/修改请求,但现场PENDING-CANCL ' 或PENDING-UPDATE ' 命令也可在当地标为`CANCELED ' 。 一旦这个合成终端状态被应用,后期会场恢复和调节无法再将本地秩序移动到真正的最终状态,因为订单已经被错误地关闭了.

对于那些待决国家来说,单靠重复试验并不能证明取消或修改命令的地点。 在那个时候强制进行一个合成终端事件可以产生一个比实际会场结果更确定的地方状态过渡.

□ 拟议更改

保持现有的`提交 ' 暂停行为。

对于PENDING-CENCL ' 和PENDING-UPDATE ' ,请记录一个警告并留待处理的命令,以便地点和解能够决定最终状态。

□为什么这更可取

  • 当会场结果仍然模糊不清时,避免错误的终端过渡。
  • 它防止连接中断 硬关闭命令当地 之前,场地 已经实际确认的结果。
  • 将和解作为有待取消/更新结果的真相来源。
  • 它保持Rust和Python的活执行行为一致.

□ 考虑

  • 未解决的待决订单可能被跟踪的时间可能更长,这比不正确解决这些订单更安全。
  • 我们也许希望今后能对尚未解决的秩序指标或警报采取后续行动,但这应与国家过渡政策本身分开。
  • 这一改变有意缩小范围,并不改变现有的`受助 ' 暂停行为。

□ 考虑的替代品

  1. 继续合成 " CANCELED " ,用于在重新尝试用尽之后等待取消/更新的命令。 很简单,但它可以歪曲 真正的会场状态。
  2. 为未解决的结果引入新的当地终端状态。 这增加了复杂性,而没有解决核心和解问题。
  3. 在收到取消/更新命令之前留待地点和解解决。 偏爱.

□ 相关执行说明

  • Rust:`梯度/寿命/弧度/管理者'
  • Python:`nautilus trader/live/execution engine.py'
  • 试验:速率/活率/测试/管理者.rs'、测试/单位 测试/活率/测试 执行-engine.py'、`测试/单位 测试/活率/测试-执行-命令-检查'。
  • 文件:文件/概念/活.md',docs/how to/confit live trading.md'

内容来源: nautechsystems/nautilus_trader