From 10b02545028ce4842dc64a9ef45acfb4fe834bd2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 11 Jul 2019 02:37:56 +0300 Subject: [PATCH] MACDStrategy_crossed --- .../berlinguyinca/MACDStrategy_crossed.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 user_data/strategies/berlinguyinca/MACDStrategy_crossed.py diff --git a/user_data/strategies/berlinguyinca/MACDStrategy_crossed.py b/user_data/strategies/berlinguyinca/MACDStrategy_crossed.py new file mode 100644 index 0000000..f9ef472 --- /dev/null +++ b/user_data/strategies/berlinguyinca/MACDStrategy_crossed.py @@ -0,0 +1,77 @@ + +# --- Do not remove these libs --- +from freqtrade.strategy.interface 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 MACDStrategy_crossed(IStrategy): + """ + buy: + MACD crosses MACD signal above + and CCI < -50 + sell: + MACD crosses MACD signal below + and CCI > 100 + """ + + # Minimal ROI designed for the strategy. + # This attribute will be overridden if the config file contains "minimal_roi" + minimal_roi = { + "60": 0.01, + "30": 0.03, + "20": 0.04, + "0": 0.05 + } + + # Optimal stoploss designed for the strategy + # This attribute will be overridden if the config file contains "stoploss" + stoploss = -0.3 + + # Optimal ticker interval for the strategy + ticker_interval = '5m' + + def populate_indicators(self, dataframe: DataFrame) -> DataFrame: + + macd = ta.MACD(dataframe) + dataframe['macd'] = macd['macd'] + dataframe['macdsignal'] = macd['macdsignal'] + dataframe['macdhist'] = macd['macdhist'] + dataframe['cci'] = ta.CCI(dataframe) + + return dataframe + + def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: + """ + Based on TA indicators, populates the buy signal for the given dataframe + :param dataframe: DataFrame + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + qtpylib.crossed_above(dataframe['macd'], dataframe['macdsignal']) & + (dataframe['cci'] <= -50.0) + ), + 'buy'] = 1 + + return dataframe + + def populate_sell_trend(self, dataframe: DataFrame) -> DataFrame: + """ + Based on TA indicators, populates the sell signal for the given dataframe + :param dataframe: DataFrame + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + qtpylib.crossed_below(dataframe['macd'], dataframe['macdsignal']) & + (dataframe['cci'] >= 100.0) + ), + 'sell'] = 1 + + return dataframe