智能订单重新提交
Maintain and resubmit orders when connection is restored 的意思是:连接中断期间收到的订单,在连接恢复后是否由 TWS 自动维护或重新提交。
官方位置:
Global Configuration / 全局配置 -> API -> Settings / 设置官方文档说明:
- TWS
10.28及以上,该设置默认启用。 - TWS / IB Gateway
10.40开始,API 设置里提供Maintain and resubmit orders when connection is restored。 - 如果 TWS 在断线期间被关闭,订单会被删除,不会因为该设置而保留。
新手怎么理解
Section titled “新手怎么理解”这个设置只处理“连接恢复后 TWS 是否帮你维护或重新提交订单”。
它不是完整的订单容灾系统。
程序仍然应该在重连后主动同步:
- 未完成订单。
- 订单状态。
- 成交记录。
- 持仓变化。
自动重新提交可能带来行为不确定性。尤其是网络刚恢复、价格快速变化、策略状态已经改变时,程序必须确认订单是否还符合策略意图。
程序侧必须做的同步
Section titled “程序侧必须做的同步”连接恢复后,不要只依赖本地内存里的订单状态。建议按顺序处理:
| 步骤 | 目的 |
|---|---|
等待新的 nextValidId() | 确认 API 会话恢复。 |
| 请求 open orders | 获取仍在市场中的订单。 |
| 请求 executions | 获取断线期间可能已经成交的记录。 |
| 刷新 positions | 用实际持仓校验策略状态。 |
| 判断是否撤单或补单 | 先确认市场和账户状态,再决定动作。 |
如果程序在断线前已经发出订单,但没有收到最终状态,恢复后必须用 TWS 返回的订单状态和成交记录作为准,不要凭“本地以为已经提交成功”继续下一个动作。
官方文档说明,该设置在 TWS 10.28 及以上默认启用;从 TWS / IB Gateway 10.40 开始,API 设置页提供该选项。