从盈透证券的 API 获取多个最后报价

kam*_*ino 6 api finance quantitative-finance python-3.x interactive-brokers

我有一个关于盈透证券的 Python API 的问题。

是否可以将多个资产和股票合约传递给 reqMktData() 函数并获得最后价格?(我可以在 reqMktData 中设置快照 = TRUE 以获得最后价格。您可以假设我已经订阅了适当的数据服务。)

为了正确看待事情,这就是我想要做的:

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

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

3) 转到步骤 1。

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

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

有什么建议?

bri*_*ian 1

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

速度问题可能是你想要太多数据(> 50/s)或者你使用的是旧版本的IB python api,检查connection.py for lock.acquire,我已经把它们全部删除了。此外,如果超过 10 秒没有交易,IB 将在发送快照之前等待交易。使用活动符号进行测试。

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