Как определить тип (whatToShow) HistoricalData, полученного из API iBrokers

IB API reqHistoricalData() Метод предлагает whatToShow Аргумент, который может принимать значения, обозначающие, что вы ищете данные по TRADES, MIDPOINT, BID, ASK и т. д.

Тем не менее, API historicalData обратный вызов, предоставленный для асинхронного получения запрошенных исторических данных, не возвращает соответствующие whatToShow делая невозможным выяснить, на что человек смотрит. Это линия для ТОРГОВ, BIDS или ЗАПРОСОВ, которые я просил ???

Я обхожу это очевидным способом, а именно: сначала запрашиваю TRADES, ожидая возвращения всех сообщений и затем запрашивая BIDS, затем снова ожидаю и запрашиваю ASKS.

У кого-нибудь есть лучшее решение?

1

Решение

Пожалуйста, используйте tickerId правильно поле, которое является первым параметром в методе reqHistoricalData (). Когда вы получите исторические данные с обратными вызовами, вы получите этот идентификатор обратно в качестве первого параметра с помощью historyData ().

Вам просто нужно отслеживать, какой tickerId связан с каким типом данных (bid, ask или trade), чтобы идентифицировать его при обратном вызове.

Пример:

При запросе:

reqHistoricalData(1, ..whatToShow = Bid,...);
reqHistoricalData(2, ..whatToShow = Ask,...);

Обработка обратных вызовов:

historicalData(int reqId,....)
if(reqId == 1)
//This is the data built of bids as per request1

else if(reqId == 2)
//This is the data built of asks as per request2
1

Другие решения

Других решений пока нет …