IB API reqHistoricalData()
方法提供了一个whatToShow
参数,该参数可以采用值表示您在TRADES,MIDPOINT,BID,ASK等上搜索数据。
但是,API的historicalData
回调(用于异步接收所请求的历史数据)不会返回相关的whatToShow
,因此无法确定正在查看的内容。是我要求的TRADES,BIDS或ASKS的生产线吗?
我绕过了这种明显的方法,即首先请求TRADES,等待所有消息返回,然后再请求BIDS,然后再次等待并请求ASKS。
有谁有更好的解决方案?
最佳答案
请正确使用tickerId字段,它是reqHistoricalData()方法中的第一个参数。当您通过回调获取历史数据时,您将通过historyData()将该ID作为第一个参数接收回来。
您只需要跟踪哪种tickerId与哪种数据类型(出价,询问或交易)相关联,即可在回调中进行识别。
例:
在要求时:
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
关于c++ - 如何识别从iBrokers API收到的HistoricalData的类型(whatToShow),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21759581/