# source: https://raw.githubusercontent.com/DerSalvador/freqtrade-helm-chart/a669dc11b640b0eb63aa8f8b51e9f181fd7ee43c/chart/deployed_strategies/binance-michael-k8s-namespace/SRsi.py
import talib.abstract as ta
from pandas import DataFrame
import freqtrade.vendor.qtpylib.indicators as qtpylib
from freqtrade.strategy.interface import IStrategy

class Github_DerSalvador_freqtrade_helm_chart__SRsi__20260115_122204(IStrategy):
    INTERFACE_VERSION = 3
    minimal_roi = {'0': 0.012}
    stoploss = -0.15
    timeframe = '1m'
    order_types = {'entry': 'limit', 'exit': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False}
    startup_candle_count: int = 120
    order_time_in_force = {'entry': 'gtc', 'exit': 'gtc'}

    def informative_pairs(self):
        return []

    def get_ticker_indicator(self):
        return int(self.timeframe[:-1])

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        p = 14
        d = 3
        k = 3
        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=30)
        srsi = (dataframe['rsi'] - dataframe['rsi'].rolling(p).min()) / (dataframe['rsi'].rolling(p).max() - dataframe['rsi'].rolling(p).min())
        dataframe['k'] = srsi.rolling(k).mean() * 100
        dataframe['d'] = dataframe['k'].rolling(d).mean()
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[(dataframe['k'] < 15) & (dataframe['k'] >= dataframe['d']), 'entry'] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[(dataframe['k'] > 75) & (dataframe['d'] >= dataframe['k']), 'exit'] = 1
        return dataframe