我想用python连接到IB,这是我的代码:
from ib.ext.Contract import Contract
from ib.ext.Order import Order
from ib.opt import Connection, message
def error_handler(msg):
print "Server Error: %s" % msg
def reply_handler(msg):
print "Server Response: %s, %s" % (msg.typeName, msg)
if __name__ == "__main__":
tws_conn = Connection.create(port=7496, clientId=100)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
每当我使用这段代码,我收到这个错误,这表明我不能连接到服务器:
Server Error: <error id=-1, errorCode=504, errorMsg=Not connected>
Server Response: error, <error id=-1, errorCode=504, errorMsg=Not connected>
为什么我不能连接到IB?
三件事:
- 确保TWS java应用程序正在运行并且您已经登录。
- 在TWS中,转到全局配置> API,并确保勾选"启用活动和套接字客户端"。
- 在全局配置> API中,确保添加"127.0.0.1"作为可信IP地址(这假设您的py代码运行在运行TWS java应用程序的同一台机器上)。
嘿,你需要做的是几件事。首先,您需要Python 3.5或更高版本。所以你的print语句应该使用()。其次,您需要指定一个IP地址,该地址设置为您的本地计算机。第三,享受。我用这个得到:
服务器版本:76
TWS连接时间:20170613 21:10:55 MST
from ib.ext.Contract import Contract
from ib.ext.Order import Order
from ib.opt import Connection, message
def error_handler(msg):
print("Server Error: %s" % msg)
def reply_handler(msg):
print("Server Response: %s, %s" % (msg.typeName, msg))
if __name__ == "__main__":
tws_conn = Connection.create("127.0.0.1", port=7496, clientId=100)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)