From 1c20fb7638d433e0ba703ff995c572a42ecb65ac Mon Sep 17 00:00:00 2001 From: eSeR1805 Date: Sat, 14 May 2022 16:37:04 +0300 Subject: [PATCH] Refresh open_rate and stoploss on order replacement. --- freqtrade/optimize/backtesting.py | 4 ++++ freqtrade/persistence/trade_model.py | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 45300b744..f439e4e63 100755 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -780,6 +780,8 @@ class Backtesting: # interest_rate=interest_rate, orders=[], ) + elif trade.nr_of_successful_entries == 0: + trade.open_rate = propose_rate trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True) @@ -940,6 +942,8 @@ class Backtesting: requested_rate=requested_rate, requested_stake=(order.remaining * order.price), direction='short' if trade.is_short else 'long') + trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, + initial=False, refresh=True) else: # assumption: there can't be multiple open entry orders at any given time return (trade.nr_of_successful_entries == 0) diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index b1fff5cf3..28cca5532 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -491,7 +491,7 @@ class LocalTrade(): self.stoploss_last_update = datetime.utcnow() def adjust_stop_loss(self, current_price: float, stoploss: float, - initial: bool = False) -> None: + initial: bool = False, refresh: bool = False) -> None: """ This adjusts the stop loss to it's most recently observed setting :param current_price: Current rate the asset is traded @@ -516,8 +516,7 @@ class LocalTrade(): new_loss = max(self.liquidation_price, new_loss) # no stop loss assigned yet - if self.initial_stop_loss_pct is None: - logger.debug(f"{self.pair} - Assigning new stoploss...") + if self.initial_stop_loss_pct is None or refresh: self._set_stop_loss(new_loss, stoploss) self.initial_stop_loss = new_loss self.initial_stop_loss_pct = -1 * abs(stoploss)