从Interactive Brokers的API获取多个最后价格报价

时间:2018-05-16 15:13:31

标签: python-3.x api finance quantitative-finance interactive-brokers

我对Interactive Brokers的Python API有疑问。

可以将 多个 资产和股票合约传递到reqMktData()函数并获取最后价格吗? (我可以在reqMktData中设置snapshots = TRUE以获取最后的价格。您可以假设我订阅了相应的数据服务。)

为了正确看待事情,我正在努力做到这一点:

1)致电reqMktData,获取 多个资产 的最新价格。

2)将数据输入我的预测引擎,并做一些事情

3)转到步骤1.

当我联系盈透证券时,他们说: “一次只能将一个合同传递给reqMktData(),因此在请求实时数据时没有批量请求功能。”

显然,解决这个问题的一种方法是做一个循环,但这太慢了。另一种方法是通过多线程,但这是很多工作,而且我负担不起新计算机的额外费用。我对这两者都不感兴趣。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您只能在每个reqMktData调用中指定1个合约。除了使用某种类型的循环之外别无选择。速度不应该是一个问题,因为你可以每秒最多发出50个请求,对于快照甚至可能更多。

速度问题可能是您需要太多数据(> 50 / s)或您正在使用旧版本的IB python api,请检查connection.py中的lock.acquire,I&删除了所有这些内容。此外,如果没有超过10秒的交易,IB将在发送快照之前等待交易。用活动符号测试。

但是,您应该做的是通过将快照设置为false来请求实时流数据,并且只跟踪流中的最后价格。您可以使用默认最小值流式传输最多100个代码。您可以使用唯一的股票代码ID将它们分开。