# source: https://raw.githubusercontent.com/JB02S/freqtrade-bots/8ee7ffd306f584dea68919e10ca3ca74237a56f9/strategies/EMACrossover.py
# -------------------------------
from freqtrade.strategy import IStrategy
from typing import Dict, List
from functools import reduce
from pandas import DataFrame
# --------------------------------

import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib


class Github_JB02S_freqtrade_bots__EMACrossover__20240201_075342(IStrategy):

    """
    EMA Crossover strategy, uses two emas, when the shorter EMA crosses over the longer EMA the strategy
    longs, and shorts when short EMA crosses down on the longer EMA
    """

    INTERFACE_VERSION: int = 3

    timeframe = '5m'

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

        ema50 = ta.EMA(dataframe, timeperiod=50)
        ema200 = ta.EMA(dataframe, timeperiod=200)



        dataframe['ema50'] = ema50
        dataframe['ema200'] = ema200

        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

        # Long condition, ema50 crosses up on ema200
        dataframe.loc[
            (
                (dataframe['ema50'] > dataframe['ema200'])
            ),
            'enter_long'] = 1

        # Short condition, ema50 crosses down on ema200
        # dataframe.loc[
        #     (
        #         (dataframe['ema50'] < dataframe['ema200'])
        #     ),
        #     'enter_short'] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

        # Exit long condition, ema 50 crosses down on ema200
        dataframe.loc[
            (
                (dataframe['ema50'] < dataframe['ema200'])
            ),
            'exit_long'] = 1

        # Exit short condition, ema 50 crosses up on ema200
        # dataframe.loc[
        #     (
        #         (dataframe['ema50'] > dataframe['ema200'])
        #     ),
        #     'exit_short'] = 1

        return dataframe