vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 34
声望: 0

如题:我在某个策略中有如下的操作:
1.在on_trade中获取了交易价格self.trade_price = trade.price

  1. 在on_bar中定义了某个变量,在self.pos != 0时,计算A/self.trade_price

在多次回测中没有任何问题,但在优化时出现了除数为0的报错,几乎每一套参数都报了这个错。
我在优化时,发现vnpy是多线程同时跑多个参数组合,那么这些组合之间会不会访问内存出错,或者说有没有防止内存出错的机制?
如果说不知内存冲突,我也没有其他地方可以修改self.trade_price的值,那么可能造成这个后果的错误是什么,有经验的人可以告知一下吗?

Administrator
avatar
加入于:
帖子: 5091
声望: 293

报错贴个图?

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

强行把条件改成self.pos != 0 and self.trade_price != 0 所以能跑了
因为一些原因 不太方便再修改源代码再跑 不过那条报错我记得挺清楚的 ZeroDivisonError

Member
avatar
加入于:
帖子: 3118
声望: 181

可以print一下trade.price = 0的时间,查看一下你的数据,看是否有问题

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

查到原因了 是因为我用的是螺纹钢主力连续合约 米筐前复权版本 RB888的数据出现了负数和0值 用其中的0值下了订单报的错

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

沪公网安备 31011502017034号