策略执行节点分为策略初始化,策略运行,策略停止,但是在使用过程中发现,在执行策略初始化后,on_tick回调方法就开始被调用了,这个运行逻辑很不合理。
预期效果是,策略初始化后on_tick方法不能被回调,策略开始后才开始调用on_tick方法,触发策略监控。
策略执行节点分为策略初始化,策略运行,策略停止,但是在使用过程中发现,在执行策略初始化后,on_tick回调方法就开始被调用了,这个运行逻辑很不合理。
预期效果是,策略初始化后on_tick方法不能被回调,策略开始后才开始调用on_tick方法,触发策略监控。
初始化之后策略开始接收tick进行指标计算更新,此时策略trading状态为False,不能发出委托。策略启动之后策略trading状态才变为True,才能发出委托。这些项目文档都有介绍的https://www.vnpy.com/docs/cn/community/app/cta_strategy.html
xiaohe wrote:
初始化之后策略开始接收tick进行指标计算更新,此时策略trading状态为False,不能发出委托。策略启动之后策略trading状态才变为True,才能发出委托。这些项目文档都有介绍的https://www.vnpy.com/docs/cn/community/app/cta_strategy.html
非常感谢解答,我再仔细阅读一遍文档
初始化时调用on_tick是为了导入历史数据,填满k线池,假如不调用的话,你九点开启策略(1分钟k线频率),那k线池就要填满100根一分钟k线以后才开始你on_bar的策略开始下单,也就是你要等100分钟以后才开始开仓平仓。系统这里设置初始化后即使调用on_tick填满k线后也不会执行买卖,只有当开始策略后才开始买卖