用途
ibkr-trading 是一个关于使用 Interactive Brokers(盈透证券)TWS API 与 Python 库 ib_async 构建生产级算法交易系统的知识库。它面向需要把交易策略落地为可长期稳定运行的自动化程序的开发者,围绕连接、行情、下单、容错与部署等环节提供参考。
主要能力
知识库按主题组织为若干参考文档:
- tws-api-architecture.md:TWS API 10.45、Gateway 与 TWS 的差异、Client Portal、ib_async 配置、clientId 策略与官方文档。
- event-driven-data.md:reqMktData、reqRealTimeBars、reqTickByTickData、keepUpToDate、OHLCV 构建、pacing 限制与历史数据。
- order-execution.md:订单类型、括号订单、生命周期状态、execDetails 监控、竞态条件与错误码。
- reconnection-resilience.md:每日重置、IBC 自动化、重连模式、心跳、Windows 部署与社区资源。
- venue-boundary-failure-modes.md:静默失败层,包括异步拒绝入口(errorEvent 到生命周期)、价格/tick 一致性(110/135,来自 ContractDetails 的 minTick)、面向欧盟零售实体的外汇作为 CFD 路由(201/200/2127/366)、数据合约与订单合约的区分,以及使用规范手数单位与转换率回退的 NaN 安全规模计算。
使用方式
资料给出的快速上手路径为:
- 连接:IB Gateway(无头、资源占用更低)+ IBC(自动化生命周期)。
- 库:pip install ib_async(ib_insync 的 asyncio 原生后继)。
- 数据:reqRealTimeBars 获取实时 5 秒 bar 并在本地聚合。
- 订单:使用 transmit=False 模式的括号订单。
- 韧性:disconnectedEvent + 指数退避重连。
- 部署:IBC + Windows 任务计划程序实现自动重启。
随后逐步加固:重连后缺失成交时增加 reqExecutions() 对账;出现 pacing 违规时增加 asyncio.Semaphore 限流请求队列;隔夜崩溃时增加 IBC 自动重启 + 心跳监控;状态漂移时通过 reqPositions() 定期对账持仓与订单。若订单已触发但从未生效、规模错误或在无错误情况下被拒绝,则查阅 venue-boundary-failure-modes.md。
适用场景
- 使用 ib_async 连接 TWS 或 IB Gateway。
- 实现实时行情订阅。
- 设计订单执行逻辑(括号订单、订单生命周期)。
- 处理历史数据请求的 pacing 违规。
- 为 7×24 生产机器人构建重连韧性。
- 在 Windows 上通过 IBC + 任务计划程序部署 IB 交易系统。
- 调试 TWS API 错误码(110、135、162、200、201、354、366、1100-1102)。
- 根据账户实体把外汇/金属符号转换为正确的合约类型(现货 vs CFD)。
- 从价格计算订单规模,避免 NaN/0.0/单位/tick 陷阱导致的静默错误规模或拒单。
关键决策点
资料列出若干默认选择与升级条件:连接目标默认 IB Gateway,需要可视化调试时用 TWS;Python 库默认 ib_async,需要当日新特性时用 ibapi;实时数据默认 reqRealTimeBars(5 秒 bar),需要 tick 精度时用 reqTickByTickData(最多 3 个);图表数据默认 keepUpToDate,网络敏感环境用 reqRealTimeBars + 聚合;历史数据默认 reqHistoricalData + 限流,批量回填用带 Semaphore 的分块请求;订单类型默认括号(父单 + 止盈 + 止损),需要移动止损用 TRAIL,需要算法单用 Adaptive;生命周期管理默认 IBC + 任务计划程序,有 Docker 时用 gnzsnz/ib-gateway-docker;whatToShow 默认 TRADES,外汇用 MIDPOINT,回测用 ADJUSTED_LAST。
限制
资料未提供该知识库的具体收费、价格、平台支持范围或效果保证等信息,这些内容暂未提供。