# source: https://raw.githubusercontent.com/remiotore/freqtrade/44beaeb6a420cd8e9f2e4ea93e11d6cfa192ee03/strategies/Pmax.py
import numpy as np  # noqa
import pandas as pd  # noqa
from pandas import DataFrame
from technical.indicators import PMAX, zema
from typing import Dict, List
from functools import reduce
from freqtrade.strategy.interface import IStrategy


import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib


class Github_remiotore_freqtrade__Pmax__20260111_210550(IStrategy):
    stoploss = -1
    timeframe = '5m'

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        atrperiod = 10
        multiplier = 3
        matype = 9
        malength = 10
        source = 2

        dataframe['ZLEMA'] = zema(dataframe, period=malength)
        dataframe = PMAX(dataframe, atrperiod=atrperiod, multiplier=multiplier, malength=malength, matype=matype, source=source)

        return dataframe
    
    
    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (qtpylib.crossed_above(dataframe['ZLEMA'], dataframe['pm_40_3_40_9']))
            ),
            'buy'] = 1
    
        return dataframe
    
    
    def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (qtpylib.crossed_below(dataframe['ZLEMA'], dataframe['pm_40_3_40_9']))
            ),
            'sell'] = 1
    
        return dataframe
