# source: https://raw.githubusercontent.com/Heyko12/invest_additional/94e9d7e8306ac488a4904c3b061c7443333a6262/task_1/MovingAverage.py
from freqtrade.strategy import IStrategy
import pandas as pd

class Github_Heyko12_invest_additional__MovingAverage__20250522_123815(IStrategy):
    minimal_roi = {"0": 0.05}
    stoploss = -0.1
    trailing_stop = True

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

    def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        long_cond = (
            (dataframe["sma_fast"] > dataframe["sma_slow"]) &
            (dataframe["sma_fast"].shift(1) <= dataframe["sma_slow"].shift(1))
        )
        dataframe.loc[long_cond, "enter_long"] = 1

        short_cond = (
            (dataframe["sma_fast"] < dataframe["sma_slow"]) &
            (dataframe["sma_fast"].shift(1) >= dataframe["sma_slow"].shift(1))
        )
        dataframe.loc[short_cond, "enter_short"] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[dataframe["sma_fast"] < dataframe["sma_slow"], "exit_long"] = 1
        dataframe.loc[dataframe["sma_fast"] > dataframe["sma_slow"], "exit_short"] = 1

        return dataframe