VNPY重新启动后没有停止挂单原因和解决方法是什么

本篇文章为大家展示了VNPY重新启动后没有停止挂单原因和解决方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为鄂托克企业提供专业的成都网站设计、做网站、成都外贸网站建设公司鄂托克网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

之前在这个链接里面,提了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重新启动后没有停止挂单原因和解决方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。

标题名称:VNPY重新启动后没有停止挂单原因和解决方法是什么
分享链接:https://www.cdcxhl.com/article40/jjoeeo.html

成都网站建设公司_创新互联,为您提供云服务器自适应网站网站策划搜索引擎优化小程序开发网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作