重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了VNPY重新启动后没有停止挂单原因和解决方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司专注于商洛网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供商洛营销型网站建设,商洛网站制作、商洛网页设计、商洛网站官网定制、微信平台小程序开发服务,打造商洛网络公司原创品牌,更为您提供商洛网站排名全网营销落地服务。之前在这个链接里面,提了vnpy重启后,比如开盘前开始,即使符合挂单条件,也没有挂单出现的问题,给了一个比较麻烦的方法。
后来研究代码,发现原因应该是:
程序用onInit(self) 初始化回放数据,但是此时self.trading 为false,不会发出停止单;而启动onStart时候,不会重新回放启动,也就不会有挂单,这样重启第一个时间K线是没有停止单在的。
由于历史回测是连续的K线,这样也就是造成回测和实盘差异较大。
之前链接解决方法比较复杂,简单解决方法就是把回放最后一个bar放在onStart里面跑,这时候self.trading 为True,允许挂单。
1. 修改策略的onInit(self) ,回放不包括最后一个bar
def onInit(self): """初始化策略(必须由用户继承实现)""" self.writeCtaLog(u'%s策略初始化' % self.name) # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.loadBar(self.initDays) for bar in initData[:-1]: self.onBar(bar) self.putEvent()
2.给onStart加入最后一个bar回放,
def onStart(self): """启动策略(必须由用户继承实现)""" initData = self.loadBar(1) bar = initData[-1] self.onBar(bar) self.writeCtaLog(u'%s策略启动' % self.name) self.putEvent()
上述内容就是VNPY重新启动后没有停止挂单原因和解决方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联-成都网站建设公司行业资讯频道。