VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 2
声望: 0

我的本意是通过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模块?有没有文档

Member
avatar
加入于:
帖子: 5372
声望: 326

要先订阅合约
合约代码填写格式可以参考ib_gateway.py顶部注释,或者直接填写conid
参考已存在的datafeed文件即可
ib接口提供历史数据,如果只交易这一个接口无需额外对接数据服务

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】