6

我想用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?

4

2 回答 2

7

三件事:

  1. 确保 TWS java 应用程序正在运行并且您已登录。
  2. 在 TWS 中,转到 Global Configuration > API,并确保选中“Enable Active and Socket Clients”。
  3. 在全局配置 > API 中,确保添加“127.0.0.1”作为受信任的 IP 地址(这假设您的 py 代码在运行 TWS java 应用程序的同一台机器上运行。
于 2014-08-31T19:28:43.733 回答
0

嘿,所以你需要做的是几件事。首先,您需要 Python 3.5 或更高版本。所以你的打印语句应该使用 ()。其次,您需要指定一个设置为本地计算机的 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)
于 2017-06-14T03:14:56.043 回答