# source: https://raw.githubusercontent.com/songjonghyun11/freqtrade-custom/a4ed9b2d44e1c3f6948255eec91d288887d0dfe4/user_data/strategies/test_entry_signals/test_AlligatorSignalStrategy.py
import numpy as np
import pandas as pd
from pandas import DataFrame

from freqtrade.strategy import IStrategy
from freqtrade.strategy.parameters import IntParameter, RealParameter

from entry_signals.alligator_atr import AlligatorATRSignal
from mysignal import Direction

class Github_songjonghyun11_freqtrade_custom__test_AlligatorSignalStrategy__20250723_102644(IStrategy):
    minimal_roi = {"0": 0.1}
    stoploss = -0.2
    timeframe = '5m'

    alligator_atr_params = RealParameter(0.2, 3.0, default=1.0, space="buy")

    def __init__(self, config: dict) -> None:
        super().__init__(config)
        self.entry_signals = [AlligatorATRSignal()]

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        if dataframe.empty:
            return dataframe

        signal = self.entry_signals[0].generate(
            dataframe,
            metadata["pair"],
            self.alligator_atr_params.value
        )

        if signal.direction == Direction.LONG:
            dataframe.loc[signal.indexes, 'enter_long'] = 1
        elif signal.direction == Direction.SHORT:
            dataframe.loc[signal.indexes, 'enter_short'] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe["exit_long"] = 0
        dataframe["exit_short"] = 0
        return dataframe
