无法连接TWS求助:已启用Socket客户端且端口匹配仍失败
无法连接TWS的排查与解决方案
一、代码问题修正
你的Bot类中,ib是初始化方法内的局部变量,未绑定到类实例属性上,可能导致连接逻辑异常。修改后的代码如下:
import ibapi from ibapi.client import EClient from ibapi.wrapper import EWrapper class IBApi(EWrapper, EClient): def __init__(self): EClient.__init__(self, self) class Bot: def __init__(self): self.ib = IBApi() # 注意:TWS实盘默认端口为7496,模拟盘为7497,请匹配你的运行模式 self.ib.connect("127.0.0.1", 7497, 1) self.ib.run() bot = Bot()
二、TWS端口修改操作步骤
若需调整端口,按以下步骤操作:
- 打开TWS客户端,点击顶部菜单栏的
编辑→全局配置 - 在左侧导航栏选择
API→设置 - 找到
Socket端口输入框,填入目标端口号,确保Enable ActiveX and Socket Clients选项处于勾选状态 - 点击
应用→确定,重启TWS使设置生效
三、额外排查项
- 确认TWS已完成登录,未登录状态下API端口不会对外开放
- 检查系统防火墙或杀毒软件是否拦截了Python程序与TWS的端口通信
- 验证目标端口是否被其他程序占用:Windows可执行
netstat -ano | findstr :7497,Mac/Linux可执行lsof -i :7497查看占用情况 - 尝试更换API客户端ID(
connect方法的第三个参数),避免与其他已建立的API连接冲突
内容的提问来源于stack exchange,提问作者hrishikesh_bappu
相关产品推荐
相关产品推荐

