跳转到内容

每日和每周重新认证

TWS / IB Gateway 不是可以永久不断线的后台服务。即使 API 设置正确,也必须面对每日重启、每周重新认证和 IBKR 服务器维护。

这不是代码 bug,而是平台运行规则。

类型含义对 API 的影响
Daily Reauthentication每日重启或自动退出后重新登录Socket 断开,程序需要重连并恢复订阅。
Weekly Reauthentication每周需要人工完成登录认证程序不能自动绕过,需要人工登录一次。

每日重启通常可以在 Lock and Exit / 锁定并退出 中设置自动退出或自动重启时间。它的目的不是阻止 API 使用,而是让交易终端按平台规则刷新会话。

建议把自动重启时间设置在交易系统最不敏感的时段,并让程序知道这个时间窗口。例如,美股策略通常不要把 TWS 自动重启时间放在开盘、收盘、定时调仓或风控结算附近。

每周重新认证属于登录安全流程。它通常表现为:

现象说明
TWS / IB Gateway 要求重新登录需要人工完成账号、密码和双因素认证。
API 程序无法自动恢复程序不能绕过登录认证。
服务器上 Gateway 无法继续连接需要运维人员进入服务器完成认证。

这类问题不是 clientIdreqId 或 Python 代码错误。排查时先确认 TWS / IB Gateway 是否已经完成登录,再看 API 连接代码。

API 程序必须假设连接会断:

  • 启动时先检查 TWS / IB Gateway 是否已登录。
  • 收到断线错误后进入重连流程。
  • 重连后重新请求账户、持仓、行情和未完成订单。
  • 不要把一次连接成功当成永久可用。

在实际系统里,重新认证要和连接管理、订单管理分开处理:

模块需要做什么
连接管理发现断线后重连,并等待新的 nextValidId()
行情模块重连后恢复必要订阅,避免重复订阅造成请求混乱。
订单模块重连后重新拉取 open orders 和 executions,不凭本地缓存判断订单状态。
告警模块每日重启和每周认证失败都应该通知人工处理。
风控模块连接状态不明时停止自动下新单。

每日自动退出、自动重启和空闲锁定设置通常位于:

File / 文件 -> Global Configuration / 全局配置 -> Lock and Exit / 锁定并退出

注意:这里不是每周重新认证页面。每周重新认证属于登录认证流程,通常会在登录或连接失败时出现提示,程序不能绕过。

官方文档说明,API 用户需要关注 Global Configuration -> Lock and Exit 中的自动退出和自动重启设置,并提示每周认证失败时需要人工重新登录。