1

IB APIreqHistoricalData()方法提供了一个whatToShow参数,该参数可以取值来表示您在 TRADES、MIDPOINT、BID、ASK 等方面寻找数据......

但是,提供用于异步接收请求的历史数据的 APIhistoricalData回调不会返回相关信息whatToShow,因此无法确定正在查看的内容。是我要求的交易、投标或要求的行吗???

我以明显的方式解决这个问题,即首先请求交易,等待全部消息返回,然后请求投标,然后再次等待并请求询问。

有没有人有更好的解决方案?

4

1 回答 1

1

请正确使用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
于 2014-02-14T05:41:56.527 回答