好像还发现了一个bug。对于郑商所主力合约代码,比如AP9999.XZCE。获取的时候会自动转换成AP19999.XZCE。
代码中直接判断year=='9',然后就前面加1的方式有点问题。需要单独再加一个判断条件。
sean_vnpy wrote:
tonywang_efun wrote:
用IF9999.CFFEX试试,下图是聚宽对主力连续合约的代码定义,可以到他们的官网上找到,链接:
sean_vnpy wrote:
之前按照这个方案配置好貌似没有问题了,但是最近使用的时候发现会有如下报错?是不是哪个接口的配置改了?
22:01:31 ----------------------------------------
22:01:31 IF88.CFFEX-1m开始下载历史数据
22:01:31 数据下载失败,触发异常:
Traceback (most recent call last):
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 367, in run_downloading
data = mddata_client.query_history(req)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\trader\mddata\jqdata.py", line 139, in query_history
skip_paused=True
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\utils.py", line 229, in _wrapper
return func(*args, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\api.py", line 28, in get_price
return JQDataClient.instance().get_price(locals())
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 162, in <lambda>
return lambda kwargs: self(method, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 157, in call
raise err
Exception: 找不到标的IF88.CCFX谢谢,好久不用忘记聚宽是用的另外一套标的符号了。
不过换成了IF9999.CFFEX,但是在回测的时候总显示
历史数据加载完成,数据量:0
成交记录为空,无法计算后台已经提示auth success。感觉不是权限认证出了问题...
解决了。。。貌似是需要直接用代码回测就OK了,用界面点击加载数据、回测就会有问题,为什么界面不行还没研究明白。
tonywang_efun wrote:
用IF9999.CFFEX试试,下图是聚宽对主力连续合约的代码定义,可以到他们的官网上找到,链接:
sean_vnpy wrote:
之前按照这个方案配置好貌似没有问题了,但是最近使用的时候发现会有如下报错?是不是哪个接口的配置改了?
22:01:31 ----------------------------------------
22:01:31 IF88.CFFEX-1m开始下载历史数据
22:01:31 数据下载失败,触发异常:
Traceback (most recent call last):
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 367, in run_downloading
data = mddata_client.query_history(req)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\trader\mddata\jqdata.py", line 139, in query_history
skip_paused=True
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\utils.py", line 229, in _wrapper
return func(*args, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\api.py", line 28, in get_price
return JQDataClient.instance().get_price(locals())
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 162, in <lambda>
return lambda kwargs: self(method, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 157, in call
raise err
Exception: 找不到标的IF88.CCFX
谢谢,好久不用忘记聚宽是用的另外一套标的符号了。
不过换成了IF9999.CFFEX,但是在回测的时候总显示
历史数据加载完成,数据量:0
成交记录为空,无法计算
后台已经提示auth success。感觉不是权限认证出了问题...
之前按照这个方案配置好貌似没有问题了,但是最近使用的时候发现会有如下报错?是不是哪个接口的配置改了?
22:01:31 ----------------------------------------
22:01:31 IF88.CFFEX-1m开始下载历史数据
22:01:31 数据下载失败,触发异常:
Traceback (most recent call last):
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 367, in run_downloading
data = mddata_client.query_history(req)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\vnpy\trader\mddata\jqdata.py", line 139, in query_history
skip_paused=True
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\utils.py", line 229, in _wrapper
return func(*args, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\api.py", line 28, in get_price
return JQDataClient.instance().get_price(locals())
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 162, in <lambda>
return lambda kwargs: self(method, kwargs)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\jqdatasdk\client.py", line 157, in call
raise err
Exception: 找不到标的IF88.CCFX
用Python的交易员 wrote:
这个报错应该是你某个策略的variables参数里,有不是int/float/str/bool类型的数据,请检查下吧。
谢谢!删掉了配置文件,重新生成策略的时候,问题就解决了。
在策略运行的过程中,点击全部停止会触发下列错误,看了半天也每天看懂是什么原因,有大神能帮忙看一下吗?
Traceback (most recent call last):
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\trader\ui\mainwindow.py", line 253, in closeEvent
self.main_engine.close()
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\trader\engine.py", line 220, in close
engine.close()
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\app\cta_strategy\engine.py", line 116, in close
self.stop_all_strategies()
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\app\cta_strategy\engine.py", line 846, in stop_all_strategies
self.stop_strategy(strategy_name)
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\app\cta_strategy\engine.py", line 702, in stop_strategy
self.sync_strategy_data(strategy)
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\app\cta_strategy\engine.py", line 803, in sync_strategy_data
save_json(self.data_filename, self.strategy_data)
File "C:\Users\puir\Anaconda3\lib\site-packages\vnpy\trader\utility.py", line 109, in save_json
ensure_ascii=False
File "C:\Users\puir\Anaconda3\lib\json__init.py", line 179, in dump
for chunk in iterable:
File "C:\Users\puir\Anaconda3\lib\json\encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "C:\Users\puir\Anaconda3\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\Users\puir\Anaconda3\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\Users\puir\Anaconda3\lib\json\encoder.py", line 438, in _iterencode
o = _default(o)
File "C:\Users\puir\Anaconda3\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.class.name__} '
TypeError: Object of type time is not JSON serializable