diff --git a/backtesting/lib.py b/backtesting/lib.py index fafbae7a..f7f61e74 100644 --- a/backtesting/lib.py +++ b/backtesting/lib.py @@ -441,13 +441,15 @@ def set_trailing_sl(self, n_atr: float = 6): def next(self): super().next() + # Can't use index=-1 because self.__atr is not an Indicator type + index = len(self.data)-1 for trade in self.trades: if trade.is_long: trade.sl = max(trade.sl or -np.inf, - self.data.Close[-1] - self.__atr[-1] * self.__n_atr) + self.data.Close[index] - self.__atr[index] * self.__n_atr) else: trade.sl = min(trade.sl or np.inf, - self.data.Close[-1] + self.__atr[-1] * self.__n_atr) + self.data.Close[index] + self.__atr[index] * self.__n_atr) # Prevent pdoc3 documenting __init__ signature of Strategy subclasses diff --git a/backtesting/test/_test.py b/backtesting/test/_test.py index 49cc7fee..85ecea6a 100644 --- a/backtesting/test/_test.py +++ b/backtesting/test/_test.py @@ -860,7 +860,7 @@ def next(self): self.buy() stats = Backtest(GOOG, S).run() - self.assertEqual(stats['# Trades'], 51) + self.assertEqual(stats['# Trades'], 57) class TestUtil(TestCase):