如何将两台不同电脑连接至同一IBGateway/TWS账户API?
跨机器连接TWS/IBGateway API故障排查方案
核心配置修正
首先必须处理你提到的关键选项:在TWS/IBGateway的API设置中,取消勾选"允许仅本地主机连接"(对应你截图中的选项)。这个选项默认开启时会直接拒绝所有非本机的API连接请求,是跨机器连接的首要障碍。
分步排查要点
1. 确认API配置细节
- 可信IP列表:确保副电脑的完整局域网IP(如192.168.1.105)已准确添加到TWS/IBGateway的API可信IP列表中,不要用通配符(如192.168.1.*),避免匹配异常。
- 端口一致性:核对主程序端口与代码中的端口:
- IBGateway实盘端口为4001,模拟盘为4002;TWS实盘7496,模拟盘7497,确保你使用的端口与账户类型匹配。
- 重启程序:所有配置修改完成后,必须重启TWS/IBGateway,否则新配置不会生效。
2. 网络与防火墙验证
- 局域网连通性:在副电脑终端执行以下命令,确认能访问主电脑:
- ping测试:
ping 主电脑IP,确保有稳定的数据包返回 - 端口开放测试:
- Windows:
Test-NetConnection 主电脑IP -Port 4001(PowerShell) - Linux/macOS:
telnet 主电脑IP 4001或nc -zv 主电脑IP 4001
如果端口测试失败,说明主电脑防火墙或网络设备拦截了请求。
- Windows:
- ping测试:
- 防火墙规则:
- 主电脑:添加入站规则,允许副电脑IP访问目标端口(4001),同时确保TWS/IBGateway程序被允许通过防火墙(不要只放行端口,要放行程序本身)。
- 副电脑:检查出站规则,是否阻止了对主电脑4001端口的连接。
3. 代码与连接参数修正
- 客户端ID唯一性:两台电脑的
clientId必须不同,比如主电脑用clientId=1,副电脑就要用clientId=2——相同ID会导致后连接的客户端踢掉前一个,甚至连接失败。 - 主机IP正确性:如果是同一局域网,必须使用主电脑的局域网IP(而非公网IP);如果是跨公网连接,还需要在主电脑的路由器上设置端口转发,将4001端口映射到主电脑局域网IP。
- 修正后的示例代码:
self.ib.connect(host="主电脑局域网IP", port=4001, clientId=2)
4. IBGateway专属注意事项
- 确保IBGateway已开启API访问:在设置中找到API选项,确认"Enable Active X and Socket Clients"已勾选。
- 权限设置:如果不需要交易权限,可勾选"Read-Only API"降低权限限制;若需要交易,确保账户已开通API交易权限。
内容的提问来源于stack exchange,提问作者Oshea Kaminski
相关产品推荐
相关产品推荐

