跳转到内容

Order 对象字段速查

Order 对象决定订单怎么执行。它不是普通字典,而是 ibapi.order.Order 类的实例。Python API 源码里,常用字段的默认值大致是空字符串、False 或未设置值;真正有效的字段取决于订单类型和产品。

官方参考:IBKR Campus: Placing Orders using TWS Python API

字段示例中文意思
orderId18API 客户端侧订单编号,通常由 nextValidId() 起算。
actionBUY / SELL买入或卖出。
totalQuantity1委托数量。Python 新版 API 中部分数量字段可能是 Decimal。
orderTypeLMT / MKT / STP订单类型。
lmtPrice100.00限价单价格。
auxPrice95.00止损触发价、止损限价辅助价等。
tifDAY / GTC有效期。
transmitTrue是否把订单传给 TWS/IBKR 处理。
whatIfTrue / False是否只做订单影响预览。
accountDU...指定账户,多账户或顾问账户常用。
orderRefstrategy_a自定义订单备注,便于日志、排查和策略归因。
字段示例中文意思
parentId1001父订单 ID,括号单、止盈止损子单会用到。
outsideRthFalse是否允许常规交易时段外成交。
triggerMethod0止损/条件订单触发方式。
ocaGroupgroup_1OCA 分组,一组订单中一个成交后影响其他订单。
ocaType1OCA 处理方式,例如取消剩余订单或按比例减少。
goodAfterTime20260614 09:30:00 US/Eastern到指定时间以后才生效。
goodTillDate20260614 16:00:00 US/Eastern到指定时间后失效。
allOrNoneFalse是否要求全部成交,否则不成交。并非所有产品/交易所都支持。
minQty100最小成交数量。支持情况取决于产品和交易所。
hiddenFalse是否隐藏订单,支持情况取决于交易所。
discretionaryAmt0.05可裁量金额,允许订单在一定价格范围内执行。
trailStopPrice95.00追踪止损初始止损价。
trailingPercent1.0追踪止损百分比。
advancedErrorOverrideIBDBUYTX高级拒单覆盖标签,只有明确理解拒单含义时才使用。

不要给所有字段都填值。TWS 会按订单类型解析字段,多余字段可能被忽略,也可能导致订单无法通过校验。

from ibapi.order import Order
def limit_order(action: str, quantity: float, price: float) -> Order:
order = Order()
order.action = action
order.orderType = "LMT"
order.totalQuantity = quantity
order.lmtPrice = price
order.tif = "DAY"
order.transmit = True
order.orderRef = "IBKR_CN_DOCS_ORDERS_PROBE"
return order
orderType需要的价格字段说明
MKT市价成交,速度快但价格不可控。
LMTlmtPrice限价单,适合新手测试。
STPauxPrice到达止损触发价后变成市价单。
STP LMTauxPrice + lmtPrice到达触发价后提交限价单。
TRAILtrailStopPrice / trailingPercent追踪止损。
RELauxPrice 或相关路由字段相对订单,具体行为取决于产品和路由。

transmit=True 表示把订单交给 TWS/IBKR 处理。transmit=False 表示订单只发送到 TWS,但不传递到 IBKR 服务器;这类未传递订单只存在于该 TWS 会话中,重启后可能消失,也不适合作为生产系统的持久订单状态。

括号单会故意使用这个特性:父订单和止盈单先设为 transmit=False,最后一张止损单设为 transmit=True,让 TWS 一次性传递整组订单。

whatIf=True 表示只让 TWS 计算保证金、购买力和订单影响,不真正提交到市场。

order = limit_order("BUY", 1, 100.00)
order.whatIf = True
order.transmit = True

这里容易误解:transmit=True 在普通订单里表示提交订单;但在 whatIf=True 场景下,它是让 TWS 执行预览流程。真正避免提交的是 whatIf=True

  • orderRef 标记策略名、用户 ID 或业务单号,方便 TWS 订单监控和日志排查。
  • 多账户系统要显式设置 account,不要依赖界面默认账户。
  • 下单前先确认最小价格变动单位,避免 lmtPrice 不符合价格增量。
  • 复杂订单先用 what-if 检查风险和保证金,再决定是否正式提交。