Created
July 8, 2021 13:54
-
-
Save Ammly/8bb0c0b23b14bd4eace9a92ef2e45ad9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# --- Do not remove these libs --- | |
from freqtrade.strategy.interface import IStrategy | |
from pandas import DataFrame | |
import talib.abstract as ta | |
import freqtrade.vendor.qtpylib.indicators as qtpylib | |
# -------------------------------- | |
class BBandRSI(IStrategy): | |
""" | |
author@: Gert Wohlgemuth | |
converted from: | |
https://github.com/sthewissen/Mynt/blob/master/src/Mynt.Core/Strategies/BbandRsi.cs | |
""" | |
# Minimal ROI designed for the strategy. | |
# adjust based on market conditions. We would recommend to keep it low for quick turn arounds | |
# This attribute will be overridden if the config file contains "minimal_roi" | |
minimal_roi = { | |
"0": 0.452, | |
"463": 0.145, | |
"946": 0.081, | |
"1140": 0 | |
} | |
# Optimal stoploss designed for the strategy | |
stoploss = -0.323 | |
# Optimal timeframe for the strategy | |
timeframe = '1h' | |
# Trailing stop: | |
trailing_stop = True | |
trailing_stop_positive = 0.014 | |
trailing_stop_positive_offset = 0.102 | |
trailing_only_offset_is_reached = True | |
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: | |
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) | |
# Bollinger bands | |
bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) | |
dataframe['bb_lowerband'] = bollinger['lower'] | |
dataframe['bb_middleband'] = bollinger['mid'] | |
dataframe['bb_upperband'] = bollinger['upper'] | |
return dataframe | |
def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: | |
dataframe.loc[ | |
( | |
(dataframe['rsi'] < 30) & | |
(dataframe['close'] < dataframe['bb_lowerband']) | |
), | |
'buy'] = 1 | |
return dataframe | |
def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: | |
dataframe.loc[ | |
( | |
(dataframe['rsi'] > 70) | |
), | |
'sell'] = 1 | |
return dataframe |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment