You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ib_insync订单对象中获取合约ID(conID)

获取订单的合约ID(conId)

在ib_insync中,Order对象本身不直接存储合约ID,但每个订单都关联了Contract实例,通过订单的contract属性就能拿到合约的conId(注意字段是小写d)。另外,openTrades()返回的Trade对象也直接包含contract属性,可以直接提取合约ID。

以下是修改后的代码示例:

from ib_insync import IB, util

# 启动事件循环
util.startLoop()

# 初始化IB实例并连接TWS
ib = IB()
ib.connect("127.0.0.1", 7491, clientId=4)

# 遍历订单,提取每个订单的conId
orders = ib.orders()
for order in orders:
    # 确保订单已关联合约,避免空引用报错
    if order.contract:
        print(f"订单ID {order.orderId} 对应的合约ID: {order.contract.conId}")

# 遍历未平仓交易,提取conId
open_trades = ib.openTrades()
for trade in open_trades:
    print(f"未平仓交易订单ID {trade.order.orderId} 对应的合约ID: {trade.contract.conId}")

# 断开连接
ib.disconnect()

注意事项

  • 字段名是conId(小写d),要严格匹配ib_insync的属性命名。
  • 部分未关联合约的订单(比如未提交的空订单)可能没有contract属性,加判断可避免运行时错误。

内容的提问来源于stack exchange,提问作者khrizz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:20:02