From 6a98c19dab961e097943c8a246e5a1f4e72e1f64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 16 Dec 2025 20:12:34 +0100 Subject: [PATCH] fix: improve binance stoploss "triggered" behavior --- freqtrade/exchange/binance.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 37c355d4d..e05b9c702 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -151,7 +151,21 @@ class Binance(Exchange): if self.trading_mode == TradingMode.FUTURES: params = params or {} params.update({"stop": True}) - return self.fetch_order(order_id, pair, params) + order = self.fetch_order(order_id, pair, params) + if self.trading_mode == TradingMode.FUTURES and order.get("status", "open") == "closed": + # Places a real order - which we need to fetch explicitly. + + if new_orderid := order.get("info", {}).get("actualOrderId"): + order1 = self.fetch_order(order_id=new_orderid, pair=pair, params={}) + order1["id_stop"] = order1["id"] + order1["id"] = order_id + order1["type"] = "stoploss" + order1["stopPrice"] = order.get("stopPrice") + order1["status_stop"] = "triggered" + + return order1 + + return order def cancel_stoploss_order(self, order_id: str, pair: str, params: dict | None = None) -> dict: if self.trading_mode == TradingMode.FUTURES: