Получение нескольких последних ценовых котировок из API Interactive Brokers - PullRequest
0 голосов
/ 16 мая 2018

У меня есть вопрос относительно Python API интерактивных брокеров.

Может ли несколько контрактов на активы и акции быть переданы в функцию reqMktData () и получить последние цены? (Я могу установить snapshots = TRUE в reqMktData, чтобы получить последнюю цену. Вы можете предположить, что я подписался на соответствующие службы данных.)

Чтобы представить вещи в перспективе, вот что я пытаюсь сделать:

1) Позвоните в reqMktData, получите последние цены для нескольких активов .

2) Подайте данные в мой механизм прогнозирования и сделайте что-нибудь

3) Перейти к шагу 1.

Когда я связался с Interactive Brokers, они сказали: "Одновременно в reqMktData () может быть передан только один контракт, поэтому при запросе данных в реальном времени нет функции массового запроса."

Очевидно, что один из способов обойти это - сделать цикл, но это слишком медленно. Еще один способ сделать это - многопоточность, но это много работы, плюс я не могу позволить себе дополнительные расходы на новый компьютер. Я не заинтересован ни в одном из них.

Есть предложения?

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете указать только 1 контракт в каждом вызове reqMktData. Там нет выбора, кроме как использовать цикл какого-то типа. Скорость не должна быть проблемой, поскольку вы можете делать до 50 запросов в секунду, а может быть даже больше для снимков.

Скорость может заключаться в том, что вам нужно слишком много данных (> 50 / с) или вы используете старую версию API Python IB, проверьте файл connection.py для lock.acquire, я удалил все их. Также, если в течение> 10 секунд сделки не было, IB будет ждать сделки перед отправкой снимка. Тест с активными символами.

Однако вам нужно запросить данные потокового вещания, установив для снимка значение false и просто отслеживать последнюю цену в потоке. Вы можете передавать до 100 тикеров с минимальными значениями по умолчанию. Вы держите их отдельно, используя уникальные идентификаторы тикеров.

...