# source: https://raw.githubusercontent.com/hehehe-jing/-/4ec2c085ad698aa149d99f9891b383be55796dda/strategies/TEST6.py
import freqtrade.vendor.qtpylib.indicators as qtpylib
import numpy as np
import talib.abstract as ta
from freqtrade.strategy import (IStrategy, informative)
from pandas import DataFrame, Series
import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib
import math
import pandas_ta as pta
# from finta import TA as fta
import logging
from logging import FATAL

logger = logging.getLogger(__name__)

class Github_hehehe_jing____TEST6__20260425_074358(IStrategy):

    def version(self) -> str:
        return "v1"

    # ROI table:
    minimal_roi = {
        "0": 0.2,
        '30': 0.1,
        '90': 0.05,
        '180': 0.02,
        '360': -1
    }

    # Stoploss:
    stoploss = -0.1

    plot_config = {
        'main_plot': {
            # Configuration for main plot indicators.
            # Specifies `ema10` to be red, and `ema50` to be a shade of gray
            'ema_12': {'color': 'red'},
            'ema_24': {'color': '#CCCCCC'},
            'ema_120_1h': {},
        }
    }


    # # Trailing stop:
    # trailing_stop = True
    # trailing_stop_positive = 0.01
    # trailing_stop_positive_offset = 0.05
    # trailing_only_offset_is_reached = True

    # Sell signal
    use_exit_signal = True
    exit_profit_only = False
    exit_profit_offset = 0.01
    ignore_roi_if_entry_signal = False

    timeframe = '5m'

    @informative('1h')
    def populate_indicators_1h(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe['ema_120'] = ta.EMA(dataframe, timeperiod=120)
        return dataframe

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe['ema_12'] = ta.EMA(dataframe, timeperiod=12)
        dataframe['ema_24'] = ta.EMA(dataframe, timeperiod=24)
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (dataframe['close'] > dataframe['ema_120_1h'])
                &
                qtpylib.crossed_above(dataframe['ema_12'], dataframe['ema_24'])
                &
                (dataframe['volume'] > 0)
            ),
            ['enter_long', 'enter_tag']] = (1, 'buy_long')

        # dataframe.loc[
        #     (
        #             (dataframe['close'] < dataframe['ema_120_1h'])
        #             &
        #             qtpylib.crossed_below(dataframe['ema_12'], dataframe['ema_24'])
        #             &
        #             (dataframe['volume'] > 0)
        #     ),
        #     ['enter_short', 'enter_tag']] = (1, 'buy_short')

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                    qtpylib.crossed_below(dataframe['ema_12'], dataframe['ema_24'])
                    &
                    (dataframe['volume'] > 0)
            ),
            ['exit_long', 'exit_tag']] = (1, 'sell_long')

        # dataframe.loc[
        #     (
        #
        #             (dataframe['close'] > dataframe['ema_120_1h'])
        #             &
        #             (dataframe['volume'] > 0)
        #     ),
        #     ['exit_short', 'exit_tag']] = (1, 'sell_short')

        return dataframe