# source: https://raw.githubusercontent.com/illufluo/TradeFoundry/c91c3381f0b7a858a837ccb30d4b013f17dd6646/user_data/strategies/BaselineTrend.py
# directory_url: https://github.com/illufluo/TradeFoundry/blob/main/user_data/strategies/
# User: illufluo
# Repository: TradeFoundry
# --------------------from pandas import DataFrame

from freqtrade.strategy import IStrategy


class Github_illufluo_TradeFoundry__BaselineTrend__20261004_134355(IStrategy):
    """System validation only: SMA20/SMA50 trend, long and short at default 1x."""

    INTERFACE_VERSION = 3
    timeframe = "1h"
    can_short = True
    process_only_new_candles = True
    startup_candle_count = 50
    minimal_roi = {}
    stoploss = -0.05
    use_exit_signal = True

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe["sma_fast"] = dataframe["close"].rolling(20).mean()
        dataframe["sma_slow"] = dataframe["close"].rolling(50).mean()
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        active = dataframe["volume"] > 0
        dataframe.loc[
            active & (dataframe["sma_fast"] > dataframe["sma_slow"]),
            ["enter_long", "enter_tag"],
        ] = (1, "sma_up")
        dataframe.loc[
            active & (dataframe["sma_fast"] < dataframe["sma_slow"]),
            ["enter_short", "enter_tag"],
        ] = (1, "sma_down")
        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        active = dataframe["volume"] > 0
        dataframe.loc[
            active & (dataframe["sma_fast"] < dataframe["sma_slow"]),
            ["exit_long", "exit_tag"],
        ] = (1, "trend_reversed")
        dataframe.loc[
            active & (dataframe["sma_fast"] > dataframe["sma_slow"]),
            ["exit_short", "exit_tag"],
        ] = (1, "trend_reversed")
        return dataframe
