# source: https://raw.githubusercontent.com/hzminhzz/quant-stack/f88c7cfd1358cc1ff719a2113334b0ae5e855e94/PodcastAlphaStrategy.py
from typing import Dict, Any

from pandas import DataFrame
from freqtrade.strategy import IStrategy
import talib.abstract as ta
from freqtrade.vendor.qtpylib import indicators as qtpylib


class Github_hzminhzz_quant_stack__PodcastAlphaStrategy__20260501_120408(IStrategy):
    INTERFACE_VERSION = 3

    timeframe = '1m'
    stoploss = -0.025
    can_short = False

    minimal_roi: Dict[str, float] = {
        "0": 0.0
    }

    startup_candle_count: int = 82

    short_sma_window = 23
    long_sma_window = 82

    def populate_indicators(self, dataframe: DataFrame, metadata: Dict[str, Any]) -> DataFrame:
        dataframe['sma_short'] = ta.SMA(dataframe, timeperiod=self.short_sma_window)
        dataframe['sma_long'] = ta.SMA(dataframe, timeperiod=self.long_sma_window)
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: Dict[str, Any]) -> DataFrame:
        dataframe.loc[
            (
                qtpylib.crossed_above(dataframe['sma_short'], dataframe['sma_long']) &
                (dataframe['volume'] > 0)
            ),
            'enter_long'
        ] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: Dict[str, Any]) -> DataFrame:
        dataframe.loc[
            (
                qtpylib.crossed_below(dataframe['sma_short'], dataframe['sma_long']) &
                (dataframe['volume'] > 0)
            ),
            'exit_long'
        ] = 1

        return dataframe