最近IBKR在HK和JP地区强推PassKey验证密钥,要求8月31日前需要配置通行密钥才能进行交易。
但之前量化系统运行于Linux服务器的docker中,通过VNC输入验证码或是手机过2FA校验即可,而docker环境不断提示插入USB密钥,因此需要一个比较新的方法让PassKey校验穿透到服务器环境完成验证。
RDP登录
先手动配置RDP远程桌面,然后启动时需要勾选如下三个勾选框。
下载Stable版本IBKR Gateway
不建议下载和安装latest版本,总会有一些奇怪的bug。强烈建议下载并安装stable版本。
穿透验证密钥
首先在本地登入ibkr网页,然后添加验证密钥到Windows本地。
配置后对于后续登入ibkr网页都不用掏手机了,某种意义上的便利了一些。
然后RDP即可拉起本机认证,输入密码即可穿透认证远程服务器的ib gateway实例。
脚本
在QuantAda的开源代码库中提供了IBC的启动脚本,只需要安装ib gateway stable版本并与IBC放置于同一个文件夹即可。
强烈建议将该bat创建桌面快捷方式,这样双击就能运行了。
IBC在2026年9月1日被设置成了只读,作者已退休。如果后续用不了IBC的话,估计我会把资产都转移到富途等其他券商,目前开源框架已支持接入富途牛牛。
配置
- 将
config.sample.ini复制到%USERPROFILE%\Documents\IBC\config-<实例名>.ini,例如config-live.ini、config-paper.ini或任意业务名称。
若多套新旧 Gateway 版本同时存在,可把配置放进数字版本子目录,例如%USERPROFILE%\Documents\IBC\1045\config-live.ini;数字目录名会固定该实例使用的 Gateway 版本。 - 在受保护的副本中填写
IbLoginId、IbPassword。 - 每个配置文件对应独立的设置目录和日志目录,目录名来自
config-后的实例名。 OverrideTwsApiPort默认留空;如需指定端口,在实例副本中填写实际 Gateway API 端口。- 在 Gateway API 设置中把 QuantAda 主机加入
TrustedIPs,并按实际端口限制防火墙来源。模板将未知来源连接设为拒绝。
批量启动
以下两种目录结构均可:
1 | 方案一:把 StartGateways.bat 放入 IBCWin-3.24.2 根目录 |
方案二中,脚本会自动寻找同级唯一且包含 scripts\DisplayBannerAndLaunch.bat 的 IBCWin-* 目录。如果同级存在多个 IBC 版本,必须显式设置 IBC_PATH,避免自动选错 IBC 主程序。
然后运行:
1 | StartGateways.bat |
脚本会递归遍历 %USERPROFILE%\Documents\IBC\config-*.ini,为每个文件创建独立设置/日志目录并并行启动 IBC Gateway。直接放在配置根目录的文件使用 IBC_TWS_MAJOR_VRSN 或自动探测到的数值最高有效版本;位于数字目录下的文件优先使用该目录版本,因此新旧版本可以共存。版本探测同时兼容 Jts\ibgateway\<版本>\jars 和旧式 Jts\<版本>\jars 布局。交易模式由每个 INI 的 TradingMode 决定,批处理不会强制改成 live。IBC 安装根目录、Gateway 安装根目录、默认版本和配置目录分别可用 IBC_PATH、IBC_TWS_PATH、IBC_TWS_MAJOR_VRSN、IBC_CONFIG_DIR 覆盖。
先用 StartGateways.bat /DRYRUN 检查发现的配置和路径。正常启动时脚本会根据 Java 命令行中的配置文件路径跳过已运行实例,并拒绝本次扫描中重复的实例键;任务计划程序仍应选择“如果任务已在运行则不启动新实例”。
额外配置
尽管

开放端口
在windows服务器上,右键开始菜单,选择“终端管理员”,执行如下命令即可针对某IP开放4001端口。
1 | $QuantAdaSourceIp = "xx.xx.xx.xx" |
看到API客户端为已连接时,即配置完毕。