每日和每周重新认证
TWS / IB Gateway 不是可以永久不断线的后台服务。即使 API 设置正确,也必须面对每日重启、每周重新认证和 IBKR 服务器维护。
这不是代码 bug,而是平台运行规则。
两类认证问题
Section titled “两类认证问题”| 类型 | 含义 | 对 API 的影响 |
|---|---|---|
| Daily Reauthentication | 每日重启或自动退出后重新登录 | Socket 断开,程序需要重连并恢复订阅。 |
| Weekly Reauthentication | 每周需要人工完成登录认证 | 程序不能自动绕过,需要人工登录一次。 |
每日重启怎么理解
Section titled “每日重启怎么理解”每日重启通常可以在 Lock and Exit / 锁定并退出 中设置自动退出或自动重启时间。它的目的不是阻止 API 使用,而是让交易终端按平台规则刷新会话。
建议把自动重启时间设置在交易系统最不敏感的时段,并让程序知道这个时间窗口。例如,美股策略通常不要把 TWS 自动重启时间放在开盘、收盘、定时调仓或风控结算附近。
每周重新认证怎么理解
Section titled “每周重新认证怎么理解”每周重新认证属于登录安全流程。它通常表现为:
| 现象 | 说明 |
|---|---|
| TWS / IB Gateway 要求重新登录 | 需要人工完成账号、密码和双因素认证。 |
| API 程序无法自动恢复 | 程序不能绕过登录认证。 |
| 服务器上 Gateway 无法继续连接 | 需要运维人员进入服务器完成认证。 |
这类问题不是 clientId、reqId 或 Python 代码错误。排查时先确认 TWS / IB Gateway 是否已经完成登录,再看 API 连接代码。
对程序设计的要求
Section titled “对程序设计的要求”API 程序必须假设连接会断:
- 启动时先检查 TWS / IB Gateway 是否已登录。
- 收到断线错误后进入重连流程。
- 重连后重新请求账户、持仓、行情和未完成订单。
- 不要把一次连接成功当成永久可用。
程序侧设计建议
Section titled “程序侧设计建议”在实际系统里,重新认证要和连接管理、订单管理分开处理:
| 模块 | 需要做什么 |
|---|---|
| 连接管理 | 发现断线后重连,并等待新的 nextValidId()。 |
| 行情模块 | 重连后恢复必要订阅,避免重复订阅造成请求混乱。 |
| 订单模块 | 重连后重新拉取 open orders 和 executions,不凭本地缓存判断订单状态。 |
| 告警模块 | 每日重启和每周认证失败都应该通知人工处理。 |
| 风控模块 | 连接状态不明时停止自动下新单。 |
每日自动退出、自动重启和空闲锁定设置通常位于:
File / 文件 -> Global Configuration / 全局配置 -> Lock and Exit / 锁定并退出注意:这里不是每周重新认证页面。每周重新认证属于登录认证流程,通常会在登录或连接失败时出现提示,程序不能绕过。
官方文档说明,API 用户需要关注 Global Configuration -> Lock and Exit 中的自动退出和自动重启设置,并提示每周认证失败时需要人工重新登录。