Возникли проблемы при извлечении данных из нескольких контрактов через ib_insyn c в Interactive Brokers - PullRequest
0 голосов
/ 23 марта 2020

Я создал два контракта с помощью функции Forex в пакете ib_insyn c, и я пытаюсь извлечь данные из обоих тикеров в моем списке, однако я получаю только данные первого контракта. Пожалуйста, дайте мне знать, если я что-то упустил

from ib_insync import *
import asyncio


async def get_data(contract, time_frame):
    while True:
       bars = ib.reqHistoricalData(
           contract, endDateTime='', durationStr='60 S',
           barSizeSetting=time_frame, whatToShow='MIDPOINT', useRTH=True)
           print('contract: {0}, timeframe: {1}'.format(contract, time_frame))
       df = util.df(bars)
       print(df.tail(1))
       await asyncio.sleep(1)


loop = asyncio.get_event_loop()

ib = IB()
util.patchAsyncio()
ib.connect('127.0.0.1', 4002, clientId=9999)

requests = []

symbols = ['AUDUSD', 'EURUSD']
time_frames = ['1 min', '5 mins', '10 mins', '15 mins']

try:
    for symbol in symbols:
        for time_frame in time_frames:
            contract = Forex(symbol)
            requests.append(get_data(contract, time_frame))
    # loop.run_forever()
        loop.run_until_complete(asyncio.gather(*requests))
finally:
    loop.run_until_complete(loop.shutdown_asyncgens())
    loop.close()
...