我的本意是通过IB去获取历史数据,所以我是这样写的:
main_engine.add_gateway(IbGateway)
# 设置IB网关的连接参数
ib_setting = {
"TWS地址": "127.0.0.1",
"TWS端口": 7497,
"客户号": 1,
"交易账户":"abcd"
}
main_engine.connect(ib_setting, "IB")
ib_api=main_engine.get_gateway('IB')
history= ib_api.query_history(req=HistoryRequest(
symbol='APPL',
exchange=Exchange.SMART,
start=datetime(2021, 1, 1)
))
print(history)
因为目前我们账户还是在开发阶段,所以相当于是测试,并没有真正的买卖合约。运行后报错:
Traceback (most recent call last):
File "D:\ibwork\ibWithVN\run.py", line 52, in <module>
main()
File "D:\ibwork\ibWithVN\run.py", line 36, in main
history= ib_api.query_history(req=HistoryRequest(
File "C:\veighna_studio\lib\site-packages\vnpy_ib\ib_gateway.py", line 250, in query_history
return self.api.query_history(req)
File "C:\veighna_studio\lib\site-packages\vnpy_ib\ib_gateway.py", line 1003, in query_history
contract: ContractData = self.contracts[req.vt_symbol]
KeyError: 'APPL.SMART'
ERROR -1 2104 市场数据农场连接正常:hfarm
ERROR -1 2104 市场数据农场连接正常:usfarm.nj
ERROR -1 2104 市场数据农场连接正常:jfarm
ERROR -1 2104 市场数据农场连接正常:usfuture
ERROR -1 2104 市场数据农场连接正常:cashfarm
ERROR -1 2104 市场数据农场连接正常:eufarmnj
ERROR -1 2104 市场数据农场连接正常:usfarm
ERROR -1 2106 历史市场数据农场连接正常:euhmds
ERROR -1 2106 历史市场数据农场连接正常:fundfarm
ERROR -1 2106 历史市场数据农场连接正常:ushmds
ERROR -1 2158 Sec-def数据农场连接正常:secdefil
请问我们哪里不正确?历史数据必须是持股的吗?
另外一个问题就是,如果写自己的datafeed模块?有没有文档