Поток данных API Interactive Brokers возвращает только значения NaN.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Поток данных API Interactive Brokers возвращает только значения NaN.

Сообщение Anonymous »

У меня есть класс, который создает несколько потоков рыночных данных и сохраняет их в массиве. Затем другая функция того же класса обращается к массиву и запрашивает данные из потоков, но все значения выводятся как NaN.

Вот пример:

Код: Выделить всё

 from ib_insync import *

class Trading:
def __init__(...):
self.dataStreams = []
self.conn = IB()  #establish connecting to the api
self.tickers = [('BMW', 'IBIS'), ('BAYN', 'IBIS'),  .. ]

def _stream_data(self): # this function established the data stream and appends it to an array
for contract in self.tickers:
stock = Stock(contract[0], contract[1], 'EUR')
stream = self.conn.reqMktData(stock, '', False, False)
self.dataStreams.append(stream)
self.conn.sleep(1)

def start(self):
self._stream_data()  # fill the datastream array
print(self.dataStreams[0].last + self.dataStreams[1].last)  # so this should return the sum of two prices, but it does not
Итак, когда я инициализирую вышеуказанный класс в интерпретаторе:

Код: Выделить всё

 strategy = Trading()
strategy.start()

Код: Выделить всё

strategy.start()
выведет NaN, поскольку данные из потоков поступают как NaN. Однако если я получу доступ к массиву потоков данных из объекта стратегии следующим образом:

Код: Выделить всё

strategy.dataStreams[0].last
последнюю цену он напечатает правильно.

Я думаю, что эта проблема связана с природой IB API работает асинхронно, но у меня недостаточно опыта, чтобы найти обходной путь.
Мне нужно создать в классе другие функции, чтобы иметь возможность извлекать данные из потоков и выполнять вычисления.

Можно ли сделать по приведенной выше логике? или мне нужно переместить потоки данных в отдельный класс и инициализировать его отдельно, чтобы иметь возможность доступа к данным?

Подробнее здесь: https://stackoverflow.com/questions/564 ... nan-values
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поток данных API Interactive Brokers возвращает только значения NaN.
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • API TWS Interactive Brokers — как исправить «Для запроса не найдено определение безопасности»?
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Разместите заказ в Interactive Brokers, используя запрос API
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • API Interactive Brokers IB_INSYNC – почему я могу отправлять только один ордер за раз
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Веб-API Interactive Brokers – Размещение ордеров
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»