Не удается подключиться к Interactive Brokers с помощью python

Я хочу подключиться к IB с помощью python, вот мой код:

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>

Почему я не могу подключиться к ИБ?


person Adel    schedule 12.03.2014    source источник


Ответы (2)


Три вещи:

  1. Убедитесь, что Java-приложение TWS запущено и вы вошли в систему.
  2. В TWS перейдите в раздел «Глобальная конфигурация» > «API» и убедитесь, что установлен флажок «Включить активные и сокетные клиенты».
  3. В Global Configuration > API убедитесь, что вы добавили «127.0.0.1» в качестве доверенного IP-адреса (это предполагает, что ваш py-код работает на том же компьютере, на котором запущено Java-приложение TWS.
person Donn Lee    schedule 31.08.2014
comment
Я застрял на той же проблеме в течение пары часов. Просто чтобы добавить к ответу Донны, убедитесь, что вы используете тот же порт сокета и идентификатор клиента, что и ваш TWS. Вы также можете отслеживать API-подключения в разделе «Справка» -> «Подключения к данным» в TWS. - person chogall; 08.12.2015
comment
Работал на меня. Спасибо!! - person Zanam; 01.01.2016

Эй, так что вам нужно сделать, это несколько вещей. Во-первых, вам нужен 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)
person Jeremy    schedule 14.06.2017