From ec8956485f3b1d14ef2b6c0154f65aa42524592e Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 29 Sep 2025 18:56:11 +0200 Subject: [PATCH] fix(reforcexy): ensure model expiracy triggers open trades close MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- ReforceXY/user_data/strategies/RLAgentStrategy.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ReforceXY/user_data/strategies/RLAgentStrategy.py b/ReforceXY/user_data/strategies/RLAgentStrategy.py index 4555f1b..4d8849b 100644 --- a/ReforceXY/user_data/strategies/RLAgentStrategy.py +++ b/ReforceXY/user_data/strategies/RLAgentStrategy.py @@ -3,6 +3,7 @@ from functools import cached_property, reduce from typing import Any # import talib.abstract as ta +from freqtrade.persistence import Trade from freqtrade.strategy import IStrategy from pandas import DataFrame @@ -105,6 +106,16 @@ class RLAgentStrategy(IStrategy): reduce(lambda x, y: x & y, exit_short_conditions), "exit_short" ] = 1 + last_candle = dataframe.iloc[-1] + if last_candle.get("do_predict") == 2: + trades = Trade.get_trades_proxy(pair=metadata.get("pair"), is_open=True) + for trade in trades: + last_index = dataframe.index[-1] + if trade.is_short: + dataframe.at[last_index, "exit_short"] = 1 + else: + dataframe.at[last_index, "exit_long"] = 1 + return dataframe def is_short_allowed(self) -> bool: -- 2.43.0