Перейти к содержимому
Все документы библиотеки

Исправление ошибок подключения TWS API с указанием порта

Статья Quant Q&A · Автор: user3064222

Сводка

В документе описано подключение к Interactive Brokers Trader Workstation: оно могло отправлять ордера через ibPy, но при запросе обновлений счёта возвращало ошибку подключения. Сообщение об ошибке указывало на настройку клиента сокета, которую пользователь уже включил, поэтому причина оставалась неясной.

В ответе указывается, что при настройке подключения пропущен аргумент порта; для этого случая рабочим значением был порт 7497. Это узкий совет по устранению неполадки, а не общее объяснение обновлений счёта или настройки API. Порт может зависеть от конфигурации TWS или бумажной торговли; в документе нет дополнительных шагов проверки или подтверждений помимо сообщения ответившего, что решение сработало.

Ключевые идеи

  • Ошибка TWS API при обновлении счёта может сохраняться, даже если клиенты сокетов включены.
  • Предлагаемое решение — указать порт подключения при создании соединения ibPy.
  • В примере используется порт 7497, но документ не подтверждает, что это значение подходит для каждой конфигурации.
  • В ответе не объясняется, почему отправка ордеров ранее работала.

Теги

Полный текст
# Trader Workstation on Ubuntu cannot be connected to via the API


# Trader Workstation on Ubuntu cannot be connected to via the API












I am using ibPy to connect to TWS on a fairly fresh ubuntu machine. I have been successful in logging into the paper trading account and submitting buy and sell orders programatically via the ibPy interface.

However, I am now trying to do more than simply submit orders. Namely, I am trying to obtain position updated from TWS. I am interested in successfully running the following code:

```
from time import sleep
from ib.opt import ibConnection, message

def error_handler(msg):
    print(msg)

def acct_update(msg):
    print(msg)

con = ibConnection(clientId=100)
con.register(acct_update,
         message.updateAccountValue,
         message.updateAccountTime,
         message.updatePortfolio)
con.register(error_handler, "Error")
con.connect()
con.reqAccountUpdates(True, 'DU000000')

sleep(1)
con.disconnect()
```

When executed however I obtain the following error:

```
<error id=-1, errorCode=502, errorMsg=Couldn't connect to TWS.  
Confirm that "Enable ActiveX and Socket Clients" is enabled on 
the TWS "Configure->API" menu.>
```

I have ensured that indeed ActiveX and socket clients are enabled in the TWS preferences, so that is not the issue. It surprises me that I would be able to submit orders successfully but not obtain account updates from TWS. Does anyone know why this could be happening?

## Answer by Clebson Derivan (score 0)

https://quant.stackexchange.com/a/27473

you forgot the parameter port:

> con = ibConnection(port=7497, clientId=100)

works for me

Полный текст с указанием источника опубликован на условиях его лицензии. Лицензия: CC BY-SA 4.0 (Stack Exchange)

Это краткое изложение подготовлено исследовательским агентом Stratmill по оригиналу и не является его копией.