IB Gateway 架构
IB Gateway 是 IBKR 提供的精简交易网关。它没有 TWS 那样完整的交易界面,但同样可以作为 TWS API 的 Socket 连接端。
从 API 架构看,IB Gateway 和 TWS 的核心位置相同:程序连接 IB Gateway,IB Gateway 再连接 IBKR 后端。它不是 REST API,也不是绕过登录认证的后台服务。
典型结构如下:
策略程序 / 后端服务 / 测试脚本 | | TCP Socket | 模拟账户常见端口 4002,真实账户常见端口 4001 vIB Gateway | | 登录、认证、账户会话、行情权限、订单路由 vIBKR 后端服务这意味着 IB Gateway 仍然需要账户登录、双因素认证、会话维护、API 端口配置和定期重新认证。它更轻量,但不是“装好后永远在线”的无状态服务。
适合什么场景
Section titled “适合什么场景”IB Gateway 更适合:
- 服务器上长期运行的策略程序。
- 后端服务连接模拟账户做自动化测试。
- 不需要频繁人工查看图形交易界面。
- 需要比 TWS 更轻量的客户端进程。
- 定时任务、风控服务、数据采集服务或交易辅助服务。
它不太适合第一天学习 TWS API 的新手。新手更容易通过 TWS 图形界面看懂账户、行情、订单状态和风险提示。
IB Gateway 的常见 API 端口和 TWS 不同:
| 账户环境 | IB Gateway 常见端口 | TWS 常见端口 |
|---|---|---|
| 模拟账户 | 4002 | 7497 |
| 真实账户 | 4001 | 7496 |
示例连接参数:
host = "127.0.0.1"port = 4002client_id = 910实际端口以 IB Gateway 配置页为准。如果设置页修改了端口,代码也必须同步修改。
和 TWS 相同的地方
Section titled “和 TWS 相同的地方”IB Gateway 和 TWS 使用同一套 TWS API 请求和回调模型:
| 相同点 | 说明 |
|---|---|
| Socket 连接 | 程序通过 TCP Socket 连接客户端 |
EClient | 请求仍然通过 EClient 方法发出 |
EWrapper | 返回结果仍然进入回调方法 |
| 异步模型 | 行情、订单、账户、错误码都不是同步返回 |
| API 设置 | 仍然需要启用 API、配置端口和连接权限 |
| 登录认证 | 仍然需要完成 IBKR 登录和双因素认证 |
| 权限规则 | 行情、交易、产品和账户权限规则不变 |
所以,从代码角度看,很多 TWS 示例只需要换端口就能连接 IB Gateway。真正不同的是运行方式、登录维护、进程守护和安全策略。
和 TWS 不同的地方
Section titled “和 TWS 不同的地方”主要区别在界面和部署定位:
| 对比项 | TWS | IB Gateway |
|---|---|---|
| 界面 | 完整交易界面 | 精简网关界面 |
| 手动观察 | 方便看订单、行情、提示 | 可观察的信息更少 |
| 设置核对 | 更直观 | 更偏后台 |
| 资源占用 | 更高 | 更轻 |
| 学习体验 | 更适合新手 | 更适合已有基础后部署 |
| 长期运行 | 不推荐作为首选 | 更适合服务器进程 |
建议先用 TWS 跑通 API 设置、连接、合约、行情、历史数据和订单流程,再迁移到 IB Gateway。
服务器运行要考虑什么
Section titled “服务器运行要考虑什么”把 IB Gateway 放到服务器上时,需要提前设计这些问题:
| 问题 | 说明 |
|---|---|
| 图形环境 | IB Gateway 仍然需要能显示登录窗口,Linux 常见做法是桌面环境、VNC 或远程桌面 |
| 登录维护 | 服务器重启、会话过期、重新认证都要有处理流程 |
| 双因素认证 | 需要确认谁来处理手机端确认或安全设备确认 |
| 进程守护 | 需要监控进程是否退出,并决定是否自动重启 |
| 断线重连 | 程序断线后要重新连接,并重新订阅行情或账户数据 |
| 日志保留 | API 日志和 Gateway 日志要方便定位问题 |
| 网络安全 | 不建议把 API 端口直接暴露到公网 |
| 账户隔离 | 开发和测试优先使用模拟账户 |
IB Gateway 的部署难点通常不在代码,而在登录、认证、重启、网络和监控。
远程连接安全
Section titled “远程连接安全”如果程序不和 IB Gateway 在同一台机器上,就会涉及远程连接:
| 配置项 | 说明 |
|---|---|
host | 填写 IB Gateway 所在机器的内网地址或受控网络地址 |
| 连接权限 | Gateway 设置页需要允许对应来源连接 |
| 可信 IP | 只允许可信机器连接 |
| 防火墙 | 只开放必要端口 |
| 网络通道 | 优先使用内网、VPN、SSH 隧道或受控代理 |
不建议把 4001 或 4002 直接开放到公网。TWS API 端口可以下单、查账户、读取敏感数据,必须按交易系统的安全级别保护。
什么时候选 IB Gateway
Section titled “什么时候选 IB Gateway”可以按目标选择:
| 目标 | 建议 |
|---|---|
| 学习 TWS API | 先用 TWS |
| 人工核对订单状态 | 先用 TWS |
| 编写和验证示例代码 | 先用 TWS,更容易观察 |
| 后端模拟账户测试 | 可以用 IB Gateway |
| 服务器长期运行 | 优先 IB Gateway |
| 自动化交易系统 | 通常用 IB Gateway,并配套监控和风控 |
IB Gateway 不是“更简单的 TWS”,而是更适合后台运行的 TWS API 网关。对新手来说,先理解 TWS,再迁移到 IB Gateway,会少很多排查成本。
官方 TWS API 文档入口: