1、当RQData终端用户为标准版本时,RiceQuant只会为终端用户提供分钟和日线K线数据两种类型的数据,
当我们CTA回测功能界面中选择K线周期为1h,w时,界面会报告如下错误:
15:41:40 rb2005.SHFE-1h开始下载历史数据
15:42:02 数据下载失败,触发异常:
Traceback (most recent call last):
File "D:\ProgramFiles\VnStudio\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 381, in run_downloading
data = rqdata_client.query_history(req)
File "D:\ProgramFiles\VnStudio\lib\site-packages\vnpy\trader\rqdata.py", line 136, in query_history
adjust_type="none"
File "D:\ProgramFiles\VnStudio\lib\site-packages\rqdatac\decorators.py", line 131, in wrap
return func(args, **kwargs)
File "D:\ProgramFiles\VnStudio\lib\site-packages\rqdatac\services\get_price.py", line 124, in get_price
pf = get_minbar(order_book_ids, start_date, end_date, fields, duration, market)
File "D:\ProgramFiles\VnStudio\lib\site-packages\rqdatac\services\get_price.py", line 450, in get_minbar
data = [(obid, {k: np.frombuffer(v) for k, v in d.items()}) for obid, d in data]
TypeError: 'NoneType' object is not iterable
错误估计:当data = rqdata_client.query_history(req)执行后,data中的记录为空时,表头数据不存在导致的后续代码错误,建议增加这种特殊情况的处理代码。软件的品质体现在细节处,vnpy应该能够做到!
2、该界面缺少一个对用户已经下载过合约数据的记录、查询、选择和删除功能,已经下载的合约应该保存到数据库或者文件中,其中应该含有合约代码、合约名称、K线类型、开始和截止时间,以列表的形式显示,这样用户就不会不知道哪个合约下载过,哪个周期有没有下载过了,完全靠记忆操作的话,还要计算机干什么?建议增加一个已经下载过数据的合约信息列表界面。