# source: https://raw.githubusercontent.com/gauthci/fretrade-farm/0acbeafcd0f41d23a45ea59f8bf9799108da60e6/ui/user_data/strategies/SampleStrategy.py
from freqtrade.strategy.interface import IStrategy
from freqtrade.strategy import IntParameter, DecimalParameter
import talib.abstract as ta
import pandas as pd


class Github_gauthci_fretrade_farm__SampleStrategy__20250515_133553(IStrategy):
    timeframe = '5m'

    # Définition des paramètres hyperopt
    buy_rsi = IntParameter(10, 50, default=30, space='buy')
    sell_rsi = IntParameter(50, 90, default=70, space='sell')

    minimal_roi = {"0": 0.02}
    stoploss = -0.03

    def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe['rsi'] = ta.RSI(dataframe['close'], timeperiod=14)
        return dataframe

    def populate_buy_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[:, 'buy'] = 0
        dataframe.loc[
            (dataframe['rsi'] < self.buy_rsi.value),
            'buy'
        ] = 1
        return dataframe

    def populate_sell_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[:, 'sell'] = 0
        dataframe.loc[
            (dataframe['rsi'] > self.sell_rsi.value),
            'sell'
        ] = 1
        return dataframe

