vnpy / vnpy_ctastrategy

VeighNa框架的CTA策略模块
https://www.vnpy.com
MIT License
108 stars 113 forks source link

回测停止单被错误触发 #41

Open cloudseasail opened 5 months ago

cloudseasail commented 5 months ago

环境

Issue类型

Bug

重现步骤

回测的时候,在用limit_order 开单成功后,在 on_trade() 里面新下一个止损的停止单。 这个停止单会被当前bar 触发成交,这是不合理的

问题分析

backtesting 的执行逻辑如下,cross_limit_order() 里面触发 on_trade(), 然后新发出一个止损的stop_order。 这个stop_order 会被下面的 cross_stop_order() 触发成交,当前bar 已经走完,这里触发成交是不合理的。

` def new_bar(self, bar: BarData) -> None: """""" self.bar = bar self.datetime = bar.datetime

    self.cross_limit_order()
    self.cross_stop_order()
    self.strategy.on_bar(bar)

`