我的策略中定义了这样的止盈止损函数
` def my_stop_loss_take_profit(self,tick:TickData,stop_loss_price:float,take_profit_price:float,tick_value:float) -> None:
mul_factor = 10 # 放大倍数,保证成交
if self.pos>0:

        # 持多头

        if tick.bid_price_1 <= stop_loss_price:
            # 止损,多一个tick。这里还要考虑是不是跌停?
            self.sell(tick.bid_price_1-mul_factor*tick_value,abs(self.pos),True)
            print(f"持多仓,止损,执行价={tick.bid_price_1-mul_factor*tick_value:.2f}")
            self.already_stop = True
        elif tick.bid_price_1 >= take_profit_price:
            # 止盈
            self.sell(tick.bid_price_1-mul_factor*tick_value,abs(self.pos),True)
            print(f"持多仓,止盈,执行价={tick.bid_price_1-mul_factor*tick_value:.2f}")
            self.already_stop = True
    elif self.pos<0:
        # 持空头
        if tick.ask_price_1 >= stop_loss_price:
            # 止损
            self.cover(tick.ask_price_1+mul_factor*tick_value,abs(self.pos),True)
            print(f"持空仓,止损,执行价={tick.ask_price_1+mul_factor*tick_value:.2f}")
            self.already_stop = True
        elif tick.ask_price_1 <= take_profit_price:
            # 止盈
            self.cover(tick.ask_price_1+mul_factor*tick_value,abs(self.pos),True)
            print(f"持空仓,止盈,执行价={tick.ask_price_1+mul_factor*tick_value:.2f}")
            self.already_stop = True
            # self.trade_records.append((tick.datetime, tick.ask_price_1+tick_value, 'sell', 'close(空头止盈)',self.pos))
        `

在回测中,我在on_tick下调用它:

def on_tick(self, tick: TickData) -> None:
        """
        Callback of new tick data update.
        """
        # self.bg_1day.update_tick(tick)
        # self.bg_3min.update_tick(tick)
        # self.bg_5min.update_tick(tick)
        self.bg.update_tick(tick)
        if self.pos and not self.already_stop:
            self.my_stop_loss_take_profit(tick,self.stop_loss_price,self.take_profit_price,self.tick_value)

当我查看我的策略运行结果时,发现尽管在我止盈止损命令发出后on_trade被调用了,但是我的self.pos一直没有归0。
on_trade被调用应该代表我的止盈止损单完成吧,为什么self.pos不会自动归0呢?