# source: https://raw.githubusercontent.com/divyamb08/TradingBot/a21e64a22396068f289d5c65d096f8501616cfcc/_strategies/Strategy005.py
"""
3. sma ema with complicated support
4. sma ema with simple support
4-0.2. sma ema with simple support with 0.2 SL
5. sma wma with simple support
6. sma wma with VWAP simple support
"""
# --- Do not remove these libs ---
from freqtrade.strategy.interface import IStrategy
from typing import Dict, List
from functools import reduce
from pandas import DataFrame
# --------------------------------

from finta import TA as F
import freqtrade.vendor.qtpylib.indicators as qtpylib
import numpy as np # noqa


class github_divyamb08_TradingBot__Strategy005__20220204_080835(IStrategy):
    minimal_roi = {
        "0": 0.5,
        "30": 0.3,
        "60": 0.125,
        "120": 0.06,
        "180": 0.01
    }

    # Optimal stoploss designed for the strategy
    # This attribute will be overridden if the config file contains "stoploss"
    stoploss = -0.5

    # Optimal ticker interval for the strategy
    timeframe = '15m'

    # trailing stoploss
    trailing_stop = False

    # run "populate_indicators" only for new candle
    process_only_new_candles = True

    # Experimental settings (configuration will overide these if set)
    use_sell_signal = True
    sell_profit_only = True
    ignore_roi_if_buy_signal = True

    # Optional order type mapping
    order_types = {
        'buy': 'limit',
        'sell': 'limit',
        'stoploss': 'market',
        'stoploss_on_exchange': False
    }

    startup_candle_count = 34

    def informative_pairs(self):
        return []

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe["SLOWMA"] = F.EMA(dataframe, 13)
        dataframe["FASTMA"] = F.EMA(dataframe, 34)
        
        # dataframe = self.mods(dataframe)
        return dataframe

    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[qtpylib.crossed_above(dataframe['FASTMA'], dataframe['SLOWMA']) ,'buy'] = 1

        return dataframe

    def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[qtpylib.crossed_below(dataframe['FASTMA'], dataframe['SLOWMA']) ,'sell'] = 1
        
        return dataframe
