
# --- Do not remove these libs ---
from freqtrade.strategy import ( IStrategy )
import freqtrade.vendor.qtpylib.indicators as qtpylib
from freqtrade.persistence import Trade
from datetime import datetime
from pandas import DataFrame
# --------------------------------

import talib.abstract as ta




class ShaneHolds_20211002(IStrategy):
    timeframe = "15m"

    # Stoploss: essentially disabled

    stoploss = -0.20

    # ROI table:
    minimal_roi = {
        "0": 0.05,
    }


    # Indicator values:
    ema_xs = 3
    ema_sm = 5
    ema_md = 10
    ema_lg = 20
    ema_xl = 50

    # storage dict for custom info
    custom_info = { }


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

        # Adding EMA's into the dataframe
        dataframe['ema_xs'] = ta.EMA(dataframe, timeperiod=self.ema_xs)
        dataframe['ema_sm'] = ta.EMA(dataframe, timeperiod=self.ema_sm)
        dataframe['ema_md'] = ta.EMA(dataframe, timeperiod=self.ema_md)
        dataframe['ema_lg'] = ta.EMA(dataframe, timeperiod=self.ema_lg)
        dataframe['ema_xl'] = ta.EMA(dataframe, timeperiod=self.ema_xl)

        return dataframe


    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # basic buy methods to keep the strategy complex
        dataframe.loc[
            (
                
                (qtpylib.crossed_above(dataframe['ema_sm'], dataframe['ema_md'])) 
                &
                (dataframe['ema_xs'] < dataframe['ema_xl'])
                
            ),
            'buy'] = 1

        return dataframe


    def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # This is essentailly ignored as we're using strict ROI / Stoploss / TTP sale scenarios
        dataframe.loc[
            (
                (dataframe['volume'] > 0) 
            ),
            'sell'] = 0
        return dataframe

