diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5ddab29d0..0d7cef827 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1424,11 +1424,11 @@ class FreqtradeBot(LoggingMixin): # New candle proposed_rate = self.exchange.get_rate( trade.pair, side='entry', is_short=trade.is_short, refresh=True) - adjusted_entry_price = strategy_safe_wrapper(self.strategy.adjust_entry_price, - default_retval=order_obj.price)( + adjusted_entry_price = strategy_safe_wrapper( + self.strategy.adjust_entry_price, default_retval=order_obj.safe_placement_price)( trade=trade, order=order_obj, pair=trade.pair, current_time=datetime.now(timezone.utc), proposed_rate=proposed_rate, - current_order_rate=order_obj.safe_price, entry_tag=trade.enter_tag, + current_order_rate=order_obj.safe_placement_price, entry_tag=trade.enter_tag, side=trade.trade_direction) replacing = True @@ -1436,7 +1436,7 @@ class FreqtradeBot(LoggingMixin): if not adjusted_entry_price: replacing = False cancel_reason = constants.CANCEL_REASON['USER_CANCEL'] - if order_obj.price != adjusted_entry_price: + if order_obj.safe_placement_price != adjusted_entry_price: # cancel existing order if new price is supplied or None res = self.handle_cancel_enter(trade, order, order_obj, cancel_reason, replacing=replacing) diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 02a06e8e5..51520fa32 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -106,6 +106,11 @@ class Order(ModelBase): def safe_amount(self) -> float: return self.amount or self.ft_amount + @property + def safe_placement_price(self) -> float: + """Price at which the order was placed""" + return self.price or self.stop_price or self.ft_price + @property def safe_price(self) -> float: return self.average or self.price or self.stop_price or self.ft_price