VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 36
声望: 0

我看到文档上说支持如下7种data feed,这些和IB有关么?现在我是默认使用了RQData(提示“找不到数据服务驱动vnpy_,使用默认的RQData数据服务”),但是如何直接从IB获取数据呢?应该用哪个feed?谢谢

RQData
Udata
TuShare
TQSDK
Wind
iFinD
Tinysoft

Member
avatar
加入于:
帖子: 1508
声望: 109

使用IB的话不需要配置datafeed,只要购买了对应的数据权限,下载时就会直接从IB接口那边获取历史数据

Member
avatar
加入于:
帖子: 36
声望: 0

我已经购买了数据,也连接了(如图),但是还是下载不了历史数据。我看代码种好像没有获取到合约,如下,代码应该是走到else里面去了。那么为啥我scribe了 ES这个合约,contract 却没有呢? 是什么动作才能i将合约添加到合约列表呢?

   def download_bar_data():
        vt_symbol: str = f"{symbol}.{exchange.value}"
        print("engine: query_bar_history:",vt_symbol)

        contract: Optional[ContractData] = self.main_engine.get_contract(vt_symbol)
        print("ContractData:", self.main_engine.get_contract(vt_symbol))
        if contract and contract.history_data:
            data: List[BarData] = self.main_engine.query_history(
                req, contract.gateway_name
            )
        # Otherwise use datafeed to query data
        else:
            print("engine: query_bar_history")

description

description

Member
avatar
加入于:
帖子: 1508
声望: 109

对于IB的合约,要先订阅一次行情(此时会自动查询该合约的信息),然后再去下载历史数据

Member
avatar
加入于:
帖子: 36
声望: 0

从我上面帖子的第一站图,是否可以证明已经订阅成功了?(行情已经显示出来)

Member
avatar
加入于:
帖子: 1508
声望: 109

两个图里代码不同,一个是202306,下面一个是20230619

Member
avatar
加入于:
帖子: 36
声望: 0

这个我是故意的,因为我记得下载数据的合约要加上具体日期。
不过两种格式我都试过,都不行的

Member
avatar
加入于:
帖子: 4799
声望: 290

可以自己去vnpy_datamanager的download_bar_data函数下打印看看是没找到合约信息就没去接口请求历史数据还是接口没返回历史数据。
ib很多历史数据都是要收费的

Member
avatar
加入于:
帖子: 36
声望: 0

搞定了。
原来是合约代码的问题;订阅的时候只需要指定几月份的合约,无需指定日期。获取数据的时候的合约需要指定日期。我在tws里面看到是截止日期是19日,不知为何实际上是16日。改了就好了

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

沪公网安备 31011502017034号

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