Интерактивные боркеры - запрос рыночных данных - PullRequest
0 голосов
/ 26 мая 2020

У меня небольшая катастрофа, пытаясь сделать что-то простое - короче говоря, заставить работать ib api. Я хотел бы получить текущие рыночные цены на акции на LSE, я подписался на правильный рыночный канал и запустил этот код:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
import threading
import time

from ibapi.contract import Contract

class IBapi(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self)
    def tickPrice(self, reqId, tickType, price, attrib):
        if tickType == 2 and reqId == 1:
            print('The current ask price is: ', price)

def run_loop():
    app.run()

app = IBapi()

app.connect('127.0.0.1', 7497, 4002)

#Start the socket in a thread
api_thread = threading.Thread(target=run_loop, daemon=True)
api_thread.start()

time.sleep(1) #Sleep interval to allow time for connection to server

#Create contract object
apple_contract = Contract()
apple_contract.symbol = 'BARC'
apple_contract.secType = 'STK'
apple_contract.exchange = 'LSE'
apple_contract.currency = 'GBP'

#Request Market Data
app.reqMktData(1, apple_contract, '', False, False, [])

time.sleep(10) #Sleep interval to allow time for incoming price data
app.disconnect()

Однако я получаю эту ошибку:

The current ask price is:  -100.0
unhandled exception in EReader thread
Traceback (most recent call last):
  File "C:\TWS API\source\pythonclient\ibapi\reader.py", line 34, in run
    data = self.conn.recvMsg()
  File "C:\TWS API\source\pythonclient\ibapi\connection.py", line 99, in recvMsg
    buf = self._recvAllMsg()
  File "C:\TWS API\source\pythonclient\ibapi\connection.py", line 119, in _recvAllMsg
    buf = self.socket.recv(4096)
OSError: [WinError 10038] An operation was attempted on something that is not a socket

Если кто может помочь, буду очень признателен! Спасибо,

1 Ответ

0 голосов
/ 27 мая 2020

Я предполагаю, что -100 из-за того, что биржа закрыта. Ошибка может быть проигнорирована, см. { ссылка }

Кажется, ваш код работает нормально, даже если он немного неортодоксальный.

...