跳转到内容

Client Portal Web API 会话背景

Client Portal Web API 的会话模型来自 IBKR 平台本身:Client Portal 网站既能做账户管理和报表,也能进入交易相关功能;而交易功能必须连接 IBKR 后端交易系统。

因此,API 中会出现两层会话:

层级中文理解
外层 Portal session登录 Client Portal 后的基础 Web 会话。
内层 brokerage session具备交易、行情和 /iserver 权限的交易会话。

IBKR 允许用户在 Client Portal 中做一些非交易操作,例如查看报表、管理资料、查看部分组合信息。这些能力不一定要求占用交易会话。

但交易、实时行情、订单和很多 /iserver 功能需要进入 brokerage session。brokerage session 会占用用户名的交易连接,因此它不能随意多开。

TWS 本身就是交易平台。登录 TWS 并连接交易服务时,它会占用该用户名的 brokerage session。

如果同一用户名已经在 TWS 中保持交易会话,再尝试让 Client Portal API 建立 brokerage session,可能出现竞争会话。反过来也一样:Client Portal API 已经占用 brokerage session 时,再登录 TWS 可能会把 API 的交易会话挤掉。

资源是否通常需要 brokerage session
/iserver 下的订单、行情、成交、合约交易功能需要
Client Portal API WebSocket 中的实时行情、订单、成交 topic需要
部分 /portfolio 或账户资料类 endpoint不一定需要
报表、账户管理、非交易类 Client Portal 功能视 endpoint 而定
  • 启动程序时先检查 /sso/validate,再检查 /iserver/auth/status
  • 只有需要交易、行情或 /iserver 功能时,再初始化 brokerage session。
  • 如果程序要和 TWS 同时运行,最好使用不同 IBKR 用户名。
  • 业务日志要记录认证状态变化,但不要记录账号密码、2FA 内容或完整 session cookie。