
本教程详细介绍了如何在使用 `ib_insync` 库与盈透证券TWS API交互时,从交易对象中获取关联的合约ID (conID)。通过利用 `ib.openTrades()` 方法返回的 `Trade` 对象,用户可以方便地访问每个交易中包含的 `contract` 属性,进而提取出唯一的合约标识符 `conId`,从而有效地将订单或交易与具体的金融工具关联起来。
在使用 ib_insync 库进行自动化交易时,经常需要将执行的订单或当前的交易头寸与其所代表的金融合约进行关联。盈透证券API中的合约ID (conID) 是一个唯一的整数标识符,用于精确识别一个特定的金融工具(如股票、期货、期权等)。虽然 ib.orders() 方法返回的 Order 对象本身可能不直接包含 conId 属性,但通过 ib.openTrades() 方法获取的 Trade 对象则提供了这种直接的关联。
Trade 对象在 ib_insync 中代表了一个活跃的订单或一个已建立的头寸。每个 Trade 对象都包含一个 contract 属性,这个属性是一个 Contract 对象实例,它详细描述了该交易涉及的金融工具。从这个 Contract 对象中,我们可以轻松地获取到 conId。
以下是使用 ib_insync 连接到 TWS/Gateway 并从开放交易中提取合约 ID 的详细步骤和代码示例:
from ib_insync import IB, util, Contract
# 1. 启动 asyncio 事件循环
util.startLoop()
# 2. 创建 IB 实例
ib = IB()
try:
# 3. 连接到 TWS/Gateway
# 确保 TWS 或 IB Gateway 正在运行,并且端口和 clientId 正确
# 默认端口 TWS: 7496, Gateway: 7497 (实时), 4001 (模拟)
ib.connect("127.0.0.1", 7496, clientId=4)
print("成功连接到盈透证券 TWS/Gateway。")
# 4. 获取所有开放交易
# openTrades() 返回一个 Trade 对象的列表
openTrades = ib.openTrades()
print(f"检测到 {len(openTrades)} 个开放交易。")
if not openTrades:
print("当前没有开放的交易。")
else:
# 5. 遍历开放交易以访问合约 ID
for trade in openTrades:
# 每个 trade 对象都有一个关联的 contract 属性
contract = trade.contract
# 从 contract 对象中打印合约 ID (conId)
print(f"--------------------------------------------------")
print(f"交易 ID: {trade.order.orderId}") # 打印关联的订单ID
print(f"合约符号: {contract.symbol}")
print(f"合约类型: {contract.secType}")
print(f"合约交易所: {contract.exchange}")
print(f"合约 ID (conID): {contract.conId}")
print(f"交易状态: {trade.orderStatus.status}") # 打印订单状态
print(f"--------------------------------------------------")
except Exception as e:
print(f"连接或操作过程中发生错误: {e}")
finally:
# 6. 断开与 TWS/Gateway 的连接
if ib.isConnected():
ib.disconnect()
print("已断开与盈透证券 TWS/Gateway 的连接。")
通过 ib_insync 库的 ib.openTrades() 方法,我们可以高效地获取到所有活跃交易的 Trade 对象。每个 Trade 对象都包含一个 contract 属性,通过访问 trade.contract.conId,用户可以轻松地获取到与该交易关联的唯一合约 ID。这种方法是 ib_insync 中连接交易与具体金融工具的关键途径,对于构建复杂的交易策略和管理交易数据至关重要。
以上就是使用 ib_insync 获取交易合约 ID (conID) 的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号