我正在尝试从IBrokers下载数据,但目前遇到错误。我不知道如何解决它。
注意: 我没有订阅实时报价,但我确实得到了延迟的市场数据。
我的步骤是:
security = twsSTK("AAPL")
is.twsContract(security)
1 真
security_copy= twsEquity('AAPL')
reqMktData(tws,security)
错误输出:
TWS消息:2 1 162历史市场数据服务错误消息:否 岛屿 STK TWS 的市场数据权限 消息: 2 1 366 否 找到股票代码 ID 的历史数据查询:1 TWS 消息:2 1 10168 请求的市场数据未订阅。延迟的市场数据不是 启用
历史数据功能似乎也存在问题。
data_AAPL=reqHistoricalData(tws, security)
我也尝试了链接中的示例
IBrokersRef() # IBrokers Reference Card in PDF viewer
tws <- twsConnect() # make a new connection to the TWS
reqCurrentTime(tws) # check the server's timestamp
contract <- twsEquity('IBKR','SMART','ISLAND') # equity specification
reqHistoricalData(tws,contract) # request historical data
结果:
等待TWS在IBKR上的回复....失败。空警告消息:在 errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106, :历史市场数据
服务 错误消息:无市场数据 岛屿的权限
根据TWS文档(此处(,可以使用reqMarketDataType(4(获取延迟市场数据。
话虽如此,我建议使用Ewald de Wit&Co的ib_insync软件包。
下面是我用来获取延迟市场数据的代码示例:
from ib_insync import *
util.startLoop()
ib = IB()
ib.sleep(2)
ib.connect('127.0.0.1', port=7490, clientId=12) # NB: Non default port could be 7498 on your machine by default when using TWS
ib.reqMarketDataType(4) # This line is the one that counts to get delayed data without subscription if available