跳转到内容

手动提交的 TWS 订单

TWS 手工订单不是普通 API 客户端提交的订单。默认情况下,普通 clientId 不应该随便接管这些订单。

如果确实要让 API 监控或管理 TWS 手工订单,需要使用 clientId=0 并调用 reqAutoOpenOrders(True)

app.connect("127.0.0.1", 7497, clientId=0)
app.reqAutoOpenOrders(True)

绑定成功后,TWS 可能通过 openOrder()orderStatus() 把手工订单推送给 API。部分情况下还会出现 orderBound(),告诉你某个 permId 被绑定到了哪个 clientId/orderId

风险说明
订单归属变复杂手工订单会被 API 看到和管理。
多客户端冲突其它程序也可能在监控订单。
撤单风险程序若自动处理回调,可能误撤手工订单。
编号语义变化手工订单被绑定后,会出现 API 侧 orderId

普通策略开发不需要这个接口。更稳的做法是:

  1. 策略程序使用非 0 的固定 clientId
  2. 程序只处理自己提交的订单。
  3. orderRef 标记策略来源。
  4. 手工订单由人工在 TWS 里管理。

只有当你在做统一订单监控、人工订单同步或半自动交易面板时,再考虑 clientId=0 + reqAutoOpenOrders(True)