【发布时间】:2019-05-30 05:59:20
【问题描述】:
我正在开发 IB Gateway 并希望获取历史数据。 因为我已经完成了 IB Gateway 软件启用 API 的步骤。
我为此使用 python 笔记本。 现在我正在运行这段代码,我可以导入给定的库,但是其余的代码给了我这个错误。重要的是建立了连接,因为我提到了客户端 ID 1。然后它被创建并可以在 IB 网关应用程序上看到。
我的代码在这里。
from ib_insync import *
#util.startLoop() # uncomment this line when in a notebook
ib = IB()
ib.connect('127.0.0.1', 5021, clientId=1)
bars = ib.reqHistoricalData(
contract=Stock('TSLA', 'SMART', 'USD'),
endDateTime='',
durationStr='30 D',
barSizeSetting='1 hour',
whatToShow='TRADES',
useRTH=True)
print(bars)
这是错误。
Peer closed connection
clientId 1 already in use?
API connection failed: CancelledError()
如果我取消注释第二行 (util.startLoop()) it adds one more error about timeout..,我正在使用笔记本
需要帮助才能完成这项工作。
非常感谢
【问题讨论】:
-
IB 的实际错误是什么?您确定您订阅了数据并且没有运行并行帐户吗?如果您运行一个包含实时数据的生产帐户和一个仅使用一个数据订阅进行测试的演示帐户,您将不会获得后者的数据。
-
您只能使用唯一的 clientId 进行连接。如果您已经连接,请更改它。在某些情况下,断开连接不起作用或需要很长时间,因此只需更改 clientId。我不使用 ib_insync 但这里有作者的用户组groups.io/g/insync