论坛里的大佬,你们好!
菜鸡我在研究阅读 vnpy_ctastrategy/engine.py 的 CtaEngine 类的 query_bar_from_datafeed() 函数时,
看到有这样的代码:
data = self.datafeed.query_history(req)
因为我有买 RQData,并且配置好了。
并且 CtpGateway 无法获得历史行情数据。
我的 trader/setting.py 的 "datafeed.name": "" 。
所以,这个 self.datafeed = vnpy_rqdata 。
但是为什么 vnpy_rqdata/rqdata_datafeed.py 里没有
def query_history(self, req: HistoryRequest) 函数呢?
这就会造成,我在 no_ui 的 run.py 中 运行 CatEngine.init_strategy(self, strategy_name: str) 函数
进一步调用 CatEngine.load_bar() 函数时,如下代码过不去。
data = self.datafeed.query_history(req)
我手动在 vnpy_rqdata/rqdata_datafeed.py 里添加如下函数后,用户策略正常在 simnow 跑了起来。
def query_history(self, req: HistoryRequest):
if req.interval == None:
return self.query_tick_history(req)
else:
return self.query_bar_history(req)
问题总结下:
我在尝试 VNPY 官方的 no_ui 的 run.py 时,
碰到 CtaEngine 类的 data = self.datafeed.query_history(req) ,找不到对应函数的问题。
我手动在 vnpy_rqdata/rqdata_datafeed.py 添加该函数后,用户策略正常运行。
想问,是不是,我调用的方式不对?