下图中同时在运行的策略rb2210合约就是正常的,MA209合约行情录制就断掉了,数据库中去检索也确实没录上,也没有报错,有大神知道是什么原因嘛。
我把paper_account_data.json文件列表中的内容清空了就好了。
mark
为啥我这个y2205合约无法平仓呢?手动下单也不行。下单就报错,有大神知道问题出在哪里了嘛?
Traceback (most recent call last):
File "D:\VNPY\Lib\site-packages\vnpy\trader\ui\widget.py", line 969, in send_order
self.main_engine.send_order(req, gateway_name)
File "D:\VNPY\Lib\site-packages\vnpy_paperaccount\engine.py", line 191, in send_order
active_orders = self.active_orders[order.vt_symbol]
KeyError: 'y2205.DCE'
怎么加呢?我自己加了一个跑回测没问题,跑实盘模拟就不行报错,AttributeError: 'CtaEngine' object has no attribute 'get_size'。
我自己是参照 def get_pricetick(self)加的
def get_size(self):
return self.cta_engine.get_size(self)
以上回复也不完全对,self.load_bar(7)中的参数包含周末,所以参数要比self.am_daily = ArrayManager(size=7)中的size参数大两三天就行了。
终于找到原因了,self.load_bar(7)中的参数7是7个自然日是包含周末的,self.am_daily = ArrayManager(size=7)中的size=7是7根日K线,所以在ArrayManager中的self.count+=1初始化的时候7个自然日只能产生5根K线,5小于size的参数7,就无法初始化,需要策略挂两天后才能满足初始化的条件,self.count需要改成+=3或者更大的数来保证ArrayManager初始化成功。
sqlite里录制的数据量也是够的
是什么原因呢?有大师知道吗?
为啥我这个回测策略初始化还未完成,就开始产生交易信号了?
xiaohe wrote:
目前可以先用run.py启动,在add_app加载模块的时候把加载paper_account放在app的最前面试试
感谢大神,已经解决了。我再补充详细一点吧免得有些跟我一样的小白找很久才找到位置,在文件Lib\site-packages\vnstation\info.py文件中APP_INFO列表里面PaperAccount移到SpreadTrading前面(也就是放在app的最前面)再重新启动就可以了。
为什么我每次重启VNPY订阅的行情都是失败,要重新手动去加载一遍。
郭易燔 wrote:
删除用户名目录下的的.vntrader文件夹就可以了。重装是无法删除.vntrader文件夹的,需要手动删除。界面实现可能是开了1.5倍缩放功能,改成100%会好一点。
谢谢 已经解决了。
xiaohe wrote:
请删除.vntrader文件夹下对应的json文件,再重启。你这个应该是删除cta_strategy_data.json。如果删除重启还报同样的错,建议检查一下策略参数的类型。检查一下策略里是否有把str\bool\int\float以外的变量名,写到了parameters列表中,json文件保存不了这四种基础数据以外的类型,就会出错
新下载的也不行。。。
xiaohe wrote:
请删除.vntrader文件夹下对应的json文件,再重启。你这个应该是删除cta_strategy_data.json。如果删除重启还报同样的错,建议检查一下策略参数的类型。检查一下策略里是否有把str\bool\int\float以外的变量名,写到了parameters列表中,json文件保存不了这四种基础数据以外的类型,就会出错
谢谢回复,现在直接是VNPY更新失败后也打不开了,我下载了新的版本安装,结果免责声明弹出来的对话框太大了,我用笔记本电脑都点不到下面的同意按钮,建议软件多做一下屏幕自动适配方面的修订,之前进去用的时候也是各种功能窗口挤在一起都看不了。
Traceback (most recent call last):
File "d:\vn\lib\site-packages\vnpy\trader\ui\mainwindow.py", line 281, in open_widget
widget = widget_class(self.main_engine, self.event_engine)
File "d:\vn\lib\site-packages\vnpy_ctastrategy\ui\widget.py", line 38, in init
self.cta_engine.init_engine()
File "d:\vn\lib\site-packages\vnpy_ctastrategy\engine.py", line 112, in init_engine
self.load_strategy_data()
File "d:\vn\lib\site-packages\vnpy_ctastrategy\engine.py", line 831, in load_strategy_data
self.strategy_data = load_json(self.data_filename)
File "d:\vn\lib\site-packages\vnpy\trader\utility.py", line 100, in load_json
data = json.load(f)
File "d:\vn\lib\json__init.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "d:\vn\lib\json\init__.py", line 348, in loads
return _default_decoder.decode(s)
File "d:\vn\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "d:\vn\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 67 column 20 (char 1409)
跟29楼一样的问题,为什么计算K线的时候最新一根K线的收盘价不用呢?这样的话信号就晚了一根K线才发出,是有什么原因嘛?
self.fast_ma = am.close_array[-self.fast_window:-1].mean()
self.fast_ma_pre = am.close_array[-self.fast_window - 1:-2].mean()
请问一下计算均线为啥最新的数据不用呢,譬如self.fast_ma = am.close_array[-self.fast_window:].mean()这样写行不行呢
拿VNPY自带的策略,1分钟K线回测也是这个样子的,不知道实盘是不是这个情况呢?