From 85797af2796198761bc56c4cb5be99a541e00e9e Mon Sep 17 00:00:00 2001 From: raftersvk <48151933+raftersvk@users.noreply.github.com> Date: Tue, 18 May 2021 22:55:03 +0200 Subject: [PATCH 1/6] Add files via upload --- .../strategies/MoniGoManiConfiguration.py | 485 ++++++++++++++++++ 1 file changed, 485 insertions(+) create mode 100644 user_data/strategies/MoniGoManiConfiguration.py diff --git a/user_data/strategies/MoniGoManiConfiguration.py b/user_data/strategies/MoniGoManiConfiguration.py new file mode 100644 index 000000000..3965213f0 --- /dev/null +++ b/user_data/strategies/MoniGoManiConfiguration.py @@ -0,0 +1,485 @@ +################################################################################# +### *** THIS IS A CHILD STRATEGY, REQUIRES IMPORT OF PARENT STRATEGY ** ### +################################################################################# +from freqtrade.strategy \ + import IStrategy, CategoricalParameter, IntParameter, RealParameter, merge_informative_pair, timeframe_to_minutes +# Strategy specific imports, files must reside in same folder as strategy +import sys +from pathlib import Path +sys.path.append(str(Path(__file__).parent)) + +from MoniGoManiHyperStrategy import MoniGoManiHyperStrategy as MGMStrategy + +### function to initialize the parameters values without manual overriding +def initVars(pDict, pParameter, pDefaultValue, pMaxValue, pThreshold): + pValue = pDict.get(pParameter) + + if pValue == None : + minValue = 0 + maxValue = pMaxValue + else: + minValue = 0 if pValue <= (0 + pThreshold) else pValue - pThreshold + maxValue = pMaxValue if pValue >= (pMaxValue - pThreshold) else pValue + pThreshold + + dictReturnVars = { + "minValue": minValue, + "maxValue": maxValue, + "defValue": pDefaultValue if pValue == None else (pMaxValue if maxValue == pMaxValue else (0 if minValue == 0 else pValue )), + "opt&load": False if pValue != None and (minValue == 0 or maxValue == pMaxValue) else True + } + + return dictReturnVars + +### Sub-strategy with your own specific parameters +class MoniGoManiConfiguration(MGMStrategy): + #################################################################################################################### + ### Global parameters you want to override + #################################################################################################################### + timeframe = '1h' + precision = 1 + + # Search space threshold: to reduce the search space with min / max around the first value found + searchThreshold = 10 + + # Maximum weight value for an indicator + weightMaxValue = 100 + + # Number of weighted signals: + # Fill in the total number of different weighted signals in use in the weighted tables + # 'buy/sell__downwards/sideways/upwards_trend_total_signal_needed' settings will be multiplied with this value + # so their search spaces will be larger, resulting in more equally divided weighted signal scores when hyperopting + number_of_weighted_signals = 9 + + # ROI Table StepSize: + # Size of the steps in minutes to be used when calculating the long continuous ROI table + # MGM generates a custom really long table so it will have less gaps in it and be more continuous in it's decrease + roi_table_step_size = 5 + + #################################################################################################################### + ################################## START OF HYPEROPT RESULTS COPY-PASTE SECTION ################################ + #################################################################################################################### + #### COPY/PASTE hyperopt results after 1st iteration below ##### + # Buy hyperspace params: + buy_params = { + } + + # Sell hyperspace params: + sell_params = { + } + + # ROI table: + + # Stoploss: + + # Trailing stop: + + + + ###################################################################### + #### DO NOT REMOVE / MODIFY THESE LINES ##### + buy_param_final = buy_params + sell_param_final = sell_params + ###################################################################### + + ###################################################################### + #### COPY/PASTE hyperopt result of 2nd (or more) iteration below ##### + #################################################################################################################### + + + ################################### END OF HYPEROPT RESULTS COPY-PASTE SECTION ################################# + #################################################################################################################### + + + + #################################################################################################################### + #### DO NOT REMOVE / MODIFY THESE LINES --- CONCATENATION OF 1st AND 2nd result ##### + buy_param_final.update(buy_params) + sell_param_final.update(sell_params) + + buy_params = buy_param_final + sell_params = sell_param_final + #################################################################################################################### + + + + #################################################################################################################### + ########################################### START OF OVERRIDES SECTION ######################################### + #################################################################################################################### + + ################## 1st run --- initial overrides ################### + # ---------------------------------------------------------------- # + # Buy HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + # React to Buy Signals when certain trends are detected (False would disable trading in said trend) + buy___trades_when_downwards = CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + buy___trades_when_sideways = CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) + buy___trades_when_upwards = CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + + # ---------------------------------------------------------------- # + # Sell HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + # React to Sell Signals when certain trends are detected (False would disable trading in said trend) + sell___trades_when_downwards = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___trades_when_sideways = CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + sell___trades_when_upwards = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + + # ---------------------------------------------------------------- # + # Sell Unclogger HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + sell___unclogger_enabled = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_downwards_candles = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_sideways_candles = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_upwards_candles = CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + + ################## 2nd run --- addtional overrides ################# + # + # !!!!!!!!!! Before going further make sure have set "optimize=False" for the parameters of section 1 !!!!!!!!! + # + + # HyperOpt Settings Override + # -------------------------- + # When the Parameters in below HyperOpt Space Parameters sections are altered as following examples then they can be + # used as overrides while hyperopting / backtesting / dry/live-running (only truly useful when hyperopting though!) + # Meaning you can use this to set individual buy_params/sell_params to a fixed value when hyperopting! + # WARNING: Always double check that when doing a fresh hyperopt or doing a dry/live-run that all overrides are + # turned off! + # + # Override Examples: + # Override to False: CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) + # Override to 0: IntParameter(0, int(100*precision), default=0, space='sell', optimize=False, load=False) + # + # default= The value used when overriding + # optimize=False Exclude from hyperopting (Make static) + # load=False Don't load from above HYPEROPT RESULTS COPY-PASTE SECTION + + # ---------------------------------------------------------------- # + # Buy HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + + # Trend Detecting Buy Signal Weight Influence Tables + # ------------------------------------------------------- + # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to + # them while also finding the "perfect" weight division between each-other. + # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected + # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then + # total_buy_signal_needed) + + # Downwards Trend Buy + # ------------------- + + # Total Buy Signal Percentage needed for a signal to be positive + pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + buy__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + buy__downwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Buy Signal Weight Influence Table + pInit = initVars(buy_params, "buy_downwards_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_downwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + buy_downwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Sideways Trend Buy + # ------------------ + + # Total Buy Signal Percentage needed for a signal to be positive + pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + buy__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + buy__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Buy Signal Weight Influence Table + pInit = initVars(buy_params, "buy_sideways_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_macd_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_sideways_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + buy_sideways_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Upwards Trend Buy + # ----------------- + + # Total Buy Signal Percentage needed for a signal to be positive + pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + buy__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + buy__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Buy Signal Weight Influence Table + pInit = initVars(buy_params, "buy_upwards_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(buy_params, "buy_upwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + buy_upwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # ---------------------------------------------------------------- # + # Sell HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + + # Trend Detecting Buy Signal Weight Influence Tables + # ------------------------------------------------------- + # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to + # them while also finding the "perfect" weight division between each-other. + # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected + # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then + # total_buy_signal_needed) + + # Downwards Trend Sell + # -------------------- + + # Total Sell Signal Percentage needed for a signal to be positive + pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + sell__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Sell Signal Weight Influence Table + pInit = initVars(sell_params, "sell_downwards_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_downwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + sell_downwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Sideways Trend Sell + # ------------------- + + # Total Sell Signal Percentage needed for a signal to be positive + pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + sell__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + sell__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Sell Signal Weight Influence Table + pInit = initVars(sell_params, "sell_sideways_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_macd_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_sideways_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + sell_sideways_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Upwards Trend Sell + # ------------------ + + # Total Sell Signal Percentage needed for a signal to be positive + pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) + sell__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # Sell Signal Weight Influence Table + pInit = initVars(sell_params, "sell_upwards_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + pInit = initVars(sell_params, "sell_upwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) + sell_upwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ + default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + + # ---------------------------------------------------------------- # + # Sell Unclogger HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + sell___unclogger_minimal_losing_trade_duration_minutes = IntParameter(15, int(60 * precision), default=15, space='sell', optimize=True, load=True) + sell___unclogger_minimal_losing_trades_open = IntParameter(1, int(5 * precision), default=1, space='sell', optimize=True, load=True) + sell___unclogger_open_trades_losing_percentage_needed = IntParameter(1, int(100 * precision), default=1, space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window = IntParameter(10, int(100 * precision), default=10, space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window_percentage_needed = IntParameter(10, int(100 * precision), default=10, space='sell', optimize=True, load=True) + + #################################################################################################################### + ############################################ END OF OVERRIDES SECTION ########################################## + #################################################################################################################### + From 836f76ba10e70394ee748ce56ccfb455c7b2124c Mon Sep 17 00:00:00 2001 From: raftersvk <48151933+raftersvk@users.noreply.github.com> Date: Wed, 19 May 2021 07:13:01 +0200 Subject: [PATCH 2/6] correction on default parameters --- .../strategies/MoniGoManiConfiguration.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/user_data/strategies/MoniGoManiConfiguration.py b/user_data/strategies/MoniGoManiConfiguration.py index 3965213f0..0b582e2eb 100644 --- a/user_data/strategies/MoniGoManiConfiguration.py +++ b/user_data/strategies/MoniGoManiConfiguration.py @@ -41,8 +41,10 @@ class MoniGoManiConfiguration(MGMStrategy): # Search space threshold: to reduce the search space with min / max around the first value found searchThreshold = 10 - # Maximum weight value for an indicator + # Maximum value for weighted indicators weightMaxValue = 100 + # Maximum value for trend lookback indicators + trendLookbackMaxValue = int(360 / timeframe_to_minutes(timeframe)) # Number of weighted signals: # Fill in the total number of different weighted signals in use in the weighted tables @@ -172,7 +174,7 @@ class MoniGoManiConfiguration(MGMStrategy): buy__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) buy__downwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -221,7 +223,7 @@ class MoniGoManiConfiguration(MGMStrategy): buy__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) buy__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -270,7 +272,7 @@ class MoniGoManiConfiguration(MGMStrategy): buy__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) buy__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -331,7 +333,7 @@ class MoniGoManiConfiguration(MGMStrategy): sell__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -380,7 +382,7 @@ class MoniGoManiConfiguration(MGMStrategy): sell__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) sell__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -429,7 +431,7 @@ class MoniGoManiConfiguration(MGMStrategy): sell__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 0, weightMaxValue, searchThreshold) + pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) @@ -473,12 +475,12 @@ class MoniGoManiConfiguration(MGMStrategy): # ---------------------------------------------------------------- # # Sell Unclogger HyperOpt Space Parameters # # ---------------------------------------------------------------- # - sell___unclogger_minimal_losing_trade_duration_minutes = IntParameter(15, int(60 * precision), default=15, space='sell', optimize=True, load=True) - sell___unclogger_minimal_losing_trades_open = IntParameter(1, int(5 * precision), default=1, space='sell', optimize=True, load=True) - sell___unclogger_open_trades_losing_percentage_needed = IntParameter(1, int(100 * precision), default=1, space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window = IntParameter(10, int(100 * precision), default=10, space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window_percentage_needed = IntParameter(10, int(100 * precision), default=10, space='sell', optimize=True, load=True) - + sell___unclogger_minimal_losing_trade_duration_minutes = IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), space='sell', optimize=True, load=True) + sell___unclogger_minimal_losing_trades_open = IntParameter(1, 5, default=1, space='sell', optimize=True, load=True) + sell___unclogger_open_trades_losing_percentage_needed = IntParameter(1, int(60 * precision), default=1, space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window = IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window_percentage_needed = IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) + #################################################################################################################### ############################################ END OF OVERRIDES SECTION ########################################## #################################################################################################################### From bf4b3d806b31b66ad3da46c5a123b1f359e2c696 Mon Sep 17 00:00:00 2001 From: Rikj000 Date: Thu, 20 May 2021 19:38:12 +0200 Subject: [PATCH 3/6] Added config-usdt.json, moved StaticPairLists, sell_profit_only true, Added Some Test Results --- ...7_Pt1-18-05-2021_sell_profit_only_true.log | 80 ++ ...edWinRatioAndProfitRatioloss_1procent .log | 572 +++++++++++++++ ...WinRatioAndProfitRatioloss_0.2procent .log | 592 +++++++++++++++ ...7_Pt1-18-05-2021_sell_profit_only_true.log | 403 ++++++++++ ...-19-05-2021_sell_profit_only_true_usdt.log | 259 +++++++ ...19-05-2021_sell_profit_only_false_usdt.log | 419 +++++++++++ user_data/config-btc.json | 217 ++++-- user_data/config-private.json | 77 +- user_data/config-usdt.json | 115 +++ ...inance-USDT-Top-Volume-StaticPairList.json | 21 + .../strategies/MoniGoManiHyperStrategy.py | 686 +++++++++--------- 11 files changed, 2951 insertions(+), 490 deletions(-) create mode 100644 Some Test Results/v0.10.0/BackTestResults7_Pt1-18-05-2021_sell_profit_only_true.log create mode 100644 Some Test Results/v0.10.0/HyperOptResults10_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_1procent .log create mode 100644 Some Test Results/v0.10.0/HyperOptResults11_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_0.2procent .log create mode 100644 Some Test Results/v0.10.0/HyperOptResults7_Pt1-18-05-2021_sell_profit_only_true.log create mode 100644 Some Test Results/v0.10.0/HyperOptResults8_Pt1-19-05-2021_sell_profit_only_true_usdt.log create mode 100644 Some Test Results/v0.10.0/HyperOptResults9_Pt1-19-05-2021_sell_profit_only_false_usdt.log create mode 100644 user_data/config-usdt.json create mode 100644 user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json diff --git a/Some Test Results/v0.10.0/BackTestResults7_Pt1-18-05-2021_sell_profit_only_true.log b/Some Test Results/v0.10.0/BackTestResults7_Pt1-18-05-2021_sell_profit_only_true.log new file mode 100644 index 000000000..ba8c82b9f --- /dev/null +++ b/Some Test Results/v0.10.0/BackTestResults7_Pt1-18-05-2021_sell_profit_only_true.log @@ -0,0 +1,80 @@ + freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +============================================================================================================================================================================================================= +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|----------+--------+----------------+----------------+------------------+----------------+----------------+--------+---------+----------| +| NXS/BTC | 320 | 3.30 | 1056.48 | 0.01057532 | 93.09 | 3:37:00 | 288 | 4 | 28 | +| BRD/BTC | 309 | 2.20 | 679.90 | 0.00680574 | 59.91 | 3:46:00 | 279 | 3 | 27 | +| XRP/BTC | 181 | 1.35 | 245.02 | 0.00245255 | 21.59 | 6:54:00 | 155 | 4 | 22 | +| BAT/BTC | 210 | 0.97 | 204.42 | 0.00204621 | 18.01 | 4:22:00 | 190 | 5 | 15 | +| IOTA/BTC | 197 | 0.96 | 189.91 | 0.00190099 | 16.73 | 5:48:00 | 166 | 6 | 25 | +| ATOM/BTC | 217 | 0.87 | 188.41 | 0.00188600 | 16.60 | 4:36:00 | 189 | 5 | 23 | +| ALGO/BTC | 199 | 0.89 | 177.65 | 0.00177829 | 15.65 | 5:23:00 | 176 | 3 | 20 | +| XTZ/BTC | 177 | 0.53 | 94.05 | 0.00094147 | 8.29 | 7:18:00 | 150 | 11 | 16 | +| NEO/BTC | 129 | 0.73 | 93.82 | 0.00093911 | 8.27 | 8:23:00 | 113 | 5 | 11 | +| LINK/BTC | 154 | 0.40 | 61.58 | 0.00061637 | 5.43 | 7:47:00 | 131 | 8 | 15 | +| XMR/BTC | 127 | 0.14 | 17.96 | 0.00017973 | 1.58 | 10:08:00 | 104 | 8 | 15 | +| ETH/BTC | 96 | 0.15 | 14.54 | 0.00014550 | 1.28 | 14:08:00 | 82 | 6 | 8 | +| EOS/BTC | 104 | 0.07 | 7.09 | 0.00007093 | 0.62 | 13:50:00 | 82 | 8 | 14 | +| BCH/BTC | 84 | -0.10 | -8.17 | -0.00008177 | -0.72 | 17:55:00 | 69 | 3 | 12 | +| LTC/BTC | 79 | -0.18 | -14.01 | -0.00014019 | -1.23 | 19:02:00 | 65 | 5 | 9 | +| TOTAL | 2583 | 1.16 | 3008.65 | 0.03011625 | 265.11 | 7:06:00 | 2239 | 84 | 260 | +============================================================= SELL REASON STATS ============================================================= +| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | +|-----------------------------+---------+--------+---------+----------+----------------+----------------+------------------+----------------| +| trailing_stop_loss | 2159 | 2159 | 0 | 0 | 2.69 | 5799.72 | 0.0580551 | 386.65 | +| stop_loss | 250 | 0 | 0 | 250 | -11.28 | -2819.41 | -0.0282225 | -187.96 | +| roi | 128 | 44 | 84 | 0 | 0.46 | 58.85 | 0.0005891 | 3.92 | +| MGM_unclogging_losing_trade | 36 | 36 | 0 | 0 | 0.3 | 10.65 | 0.00010656 | 0.71 | +| force_sell | 10 | 0 | 0 | 10 | -4.12 | -41.16 | -0.00041204 | -2.74 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|----------+--------+----------------+----------------+------------------+----------------+------------------+--------+---------+----------| +| XTZ/BTC | 1 | -0.34 | -0.34 | -0.00000345 | -0.03 | 9:00:00 | 0 | 0 | 1 | +| NXS/BTC | 1 | -0.53 | -0.53 | -0.00000533 | -0.05 | 5:00:00 | 0 | 0 | 1 | +| XRP/BTC | 1 | -0.71 | -0.71 | -0.00000707 | -0.06 | 6:00:00 | 0 | 0 | 1 | +| IOTA/BTC | 1 | -3.30 | -3.30 | -0.00003304 | -0.29 | 5:00:00 | 0 | 0 | 1 | +| EOS/BTC | 1 | -4.91 | -4.91 | -0.00004918 | -0.43 | 5 days, 5:00:00 | 0 | 0 | 1 | +| XMR/BTC | 1 | -5.53 | -5.53 | -0.00005531 | -0.49 | 7 days, 5:00:00 | 0 | 0 | 1 | +| NEO/BTC | 1 | -5.76 | -5.76 | -0.00005765 | -0.51 | 4 days, 3:00:00 | 0 | 0 | 1 | +| ALGO/BTC | 1 | -5.98 | -5.98 | -0.00005986 | -0.53 | 8:00:00 | 0 | 0 | 1 | +| BCH/BTC | 1 | -6.05 | -6.05 | -0.00006054 | -0.53 | 4 days, 17:00:00 | 0 | 0 | 1 | +| LTC/BTC | 1 | -8.05 | -8.05 | -0.00008061 | -0.71 | 3 days, 2:00:00 | 0 | 0 | 1 | +| TOTAL | 10 | -4.12 | -41.16 | -0.00041204 | -3.63 | 2 days, 13:42:00 | 0 | 0 | 10 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 15 | +| | | +| Total trades | 2583 | +| Starting balance | 0.01136000 BTC | +| Final balance | 0.04147625 BTC | +| Absolute profit | 0.03011625 BTC | +| Total profit % | 265.11% | +| Trades per day | 34.91 | +| Avg. stake amount | 0.00100000 BTC | +| Total trade volume | 2.58300000 BTC | +| | | +| Best Pair | NXS/BTC 1056.48% | +| Worst Pair | LTC/BTC -14.01% | +| Best trade | NXS/BTC 230.88% | +| Worst trade | XMR/BTC -11.28% | +| Best day | 0.00342592 BTC | +| Worst day | -0.00057524 BTC | +| Days win/draw/lose | 48 / 0 / 27 | +| Avg. Duration Winners | 2:58:00 | +| Avg. Duration Loser | 1 day, 5:44:00 | +| | | +| Min balance | 0.01043516 BTC | +| Max balance | 0.04315904 BTC | +| Drawdown | 168.11% | +| Drawdown | 0.00168279 BTC | +| Drawdown high | 0.03179904 BTC | +| Drawdown low | 0.03011625 BTC | +| Drawdown Start | 2021-03-06 20:00:00 | +| Drawdown End | 2021-03-16 00:00:00 | +| Market change | -4.77% | +=============================================== \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults10_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_1procent .log b/Some Test Results/v0.10.0/HyperOptResults10_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_1procent .log new file mode 100644 index 000000000..00f8ec1fa --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults10_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_1procent .log @@ -0,0 +1,572 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +=============================================================================================================================================================================================================== +INFO - Using optimizer random state: 8705 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------| +| * Best | 1/1000 | 605 | 496 56 53 | 3.16% | 861.332 USDT (172.27%) | 1 days 00:20:00 | -878,176.22487 | +| Best | 46/1000 | 1646 | 1550 48 48 | 2.07% | 1538.248 USDT (307.65%) | 0 days 11:40:00 | -5,571,702.28711 | +| Best | 484/1000 | 1750 | 1649 63 38 | 2.16% | 1703.806 USDT (340.76%) | 0 days 10:42:00 | -6,237,265.56591 | +| Best | 571/1000 | 1819 | 1722 62 35 | 2.22% | 1818.715 USDT (363.74%) | 0 days 10:51:00 | -7,242,357.41657 | +| Best | 645/1000 | 1685 | 1599 50 36 | 2.44% | 1849.072 USDT (369.81%) | 0 days 12:37:00 | -7,722,124.97073 | + +Elapsed Time: 1:10:29 +INFO - 1000 epochs saved to '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-19_23-02-41.fthypt'. + +Best result: + + 645/1000: + 1685 trades. + 1599/50/36 Wins/Draws/Losses. + Avg profit 2.44%. + Median profit 1.72%. + Total profit 1849.07222117 USDT ( 369.81Σ%). + Avg duration 12:37:00 min. + Objective: -7722124.97073 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 286, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 271, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "buy__upwards_trend_total_signal_needed": 108, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "buy_downwards_trend_adx_strong_up_weight": 86, + "buy_downwards_trend_bollinger_bands_weight": 67, + "buy_downwards_trend_ema_long_golden_cross_weight": 52, + "buy_downwards_trend_ema_short_golden_cross_weight": 55, + "buy_downwards_trend_macd_weight": 56, + "buy_downwards_trend_rsi_weight": 49, + "buy_downwards_trend_sma_long_golden_cross_weight": 40, + "buy_downwards_trend_sma_short_golden_cross_weight": 100, + "buy_downwards_trend_vwap_cross_weight": 92, + "buy_sideways_trend_adx_strong_up_weight": 75, + "buy_sideways_trend_bollinger_bands_weight": 1, + "buy_sideways_trend_ema_long_golden_cross_weight": 79, + "buy_sideways_trend_ema_short_golden_cross_weight": 69, + "buy_sideways_trend_macd_weight": 94, + "buy_sideways_trend_rsi_weight": 44, + "buy_sideways_trend_sma_long_golden_cross_weight": 49, + "buy_sideways_trend_sma_short_golden_cross_weight": 79, + "buy_sideways_trend_vwap_cross_weight": 29, + "buy_upwards_trend_adx_strong_up_weight": 15, + "buy_upwards_trend_bollinger_bands_weight": 44, + "buy_upwards_trend_ema_long_golden_cross_weight": 96, + "buy_upwards_trend_ema_short_golden_cross_weight": 45, + "buy_upwards_trend_macd_weight": 84, + "buy_upwards_trend_rsi_weight": 70, + "buy_upwards_trend_sma_long_golden_cross_weight": 4, + "buy_upwards_trend_sma_short_golden_cross_weight": 70, + "buy_upwards_trend_vwap_cross_weight": 99 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 19, + "sell___unclogger_minimal_losing_trades_open": 2, + "sell___unclogger_open_trades_losing_percentage_needed": 51, + "sell___unclogger_trend_lookback_candles_window": 40, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 37, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 660, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell__sideways_trend_total_signal_needed": 539, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 3, + "sell__upwards_trend_total_signal_needed": 488, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "sell_downwards_trend_adx_strong_down_weight": 41, + "sell_downwards_trend_bollinger_bands_weight": 58, + "sell_downwards_trend_ema_long_death_cross_weight": 80, + "sell_downwards_trend_ema_short_death_cross_weight": 58, + "sell_downwards_trend_macd_weight": 16, + "sell_downwards_trend_rsi_weight": 57, + "sell_downwards_trend_sma_long_death_cross_weight": 32, + "sell_downwards_trend_sma_short_death_cross_weight": 62, + "sell_downwards_trend_vwap_cross_weight": 34, + "sell_sideways_trend_adx_strong_down_weight": 4, + "sell_sideways_trend_bollinger_bands_weight": 37, + "sell_sideways_trend_ema_long_death_cross_weight": 31, + "sell_sideways_trend_ema_short_death_cross_weight": 64, + "sell_sideways_trend_macd_weight": 76, + "sell_sideways_trend_rsi_weight": 55, + "sell_sideways_trend_sma_long_death_cross_weight": 22, + "sell_sideways_trend_sma_short_death_cross_weight": 85, + "sell_sideways_trend_vwap_cross_weight": 26, + "sell_upwards_trend_adx_strong_down_weight": 86, + "sell_upwards_trend_bollinger_bands_weight": 14, + "sell_upwards_trend_ema_long_death_cross_weight": 25, + "sell_upwards_trend_ema_short_death_cross_weight": 80, + "sell_upwards_trend_macd_weight": 47, + "sell_upwards_trend_rsi_weight": 48, + "sell_upwards_trend_sma_long_death_cross_weight": 75, + "sell_upwards_trend_sma_short_death_cross_weight": 54, + "sell_upwards_trend_vwap_cross_weight": 26 + } + + # ROI table: + minimal_roi = { + "0": 0.563, + "5": 0.55713, + "10": 0.55125, + "15": 0.54538, + "20": 0.5395, + "25": 0.53363, + "30": 0.52775, + "35": 0.52188, + "40": 0.516, + "45": 0.51013, + "50": 0.50425, + "55": 0.49838, + "60": 0.4925, + "65": 0.48663, + "70": 0.48076, + "75": 0.47488, + "80": 0.46901, + "85": 0.46313, + "90": 0.45726, + "95": 0.45138, + "100": 0.44551, + "105": 0.43963, + "110": 0.43376, + "115": 0.42788, + "120": 0.42201, + "125": 0.41613, + "130": 0.41026, + "135": 0.40438, + "140": 0.39851, + "145": 0.39264, + "150": 0.38676, + "155": 0.38089, + "160": 0.37501, + "165": 0.36914, + "170": 0.36326, + "175": 0.35739, + "180": 0.35151, + "185": 0.34564, + "190": 0.33976, + "195": 0.33389, + "200": 0.32801, + "205": 0.32214, + "210": 0.31627, + "215": 0.31039, + "220": 0.30452, + "225": 0.29864, + "230": 0.29277, + "235": 0.28689, + "240": 0.28102, + "245": 0.27514, + "250": 0.26927, + "255": 0.26339, + "260": 0.25752, + "265": 0.25164, + "270": 0.24577, + "275": 0.2399, + "280": 0.23402, + "285": 0.22815, + "290": 0.22227, + "295": 0.2164, + "300": 0.21052, + "305": 0.20465, + "310": 0.19877, + "315": 0.1929, + "320": 0.18702, + "325": 0.18115, + "330": 0.17527, + "335": 0.1694, + "340": 0.16352, + "345": 0.15966, + "350": 0.1588, + "355": 0.15794, + "360": 0.15708, + "365": 0.15622, + "370": 0.15536, + "375": 0.1545, + "380": 0.15364, + "385": 0.15278, + "390": 0.15192, + "395": 0.15106, + "400": 0.15021, + "405": 0.14935, + "410": 0.14849, + "415": 0.14763, + "420": 0.14677, + "425": 0.14591, + "430": 0.14505, + "435": 0.14419, + "440": 0.14333, + "445": 0.14247, + "450": 0.14161, + "455": 0.14075, + "460": 0.13989, + "465": 0.13904, + "470": 0.13818, + "475": 0.13732, + "480": 0.13646, + "485": 0.1356, + "490": 0.13474, + "495": 0.13388, + "500": 0.13302, + "505": 0.13216, + "510": 0.1313, + "515": 0.13044, + "520": 0.12958, + "525": 0.12873, + "530": 0.12787, + "535": 0.12701, + "540": 0.12615, + "545": 0.12529, + "550": 0.12443, + "555": 0.12357, + "560": 0.12271, + "565": 0.12185, + "570": 0.12099, + "575": 0.12013, + "580": 0.11927, + "585": 0.11842, + "590": 0.11756, + "595": 0.1167, + "600": 0.11584, + "605": 0.11498, + "610": 0.11412, + "615": 0.11326, + "620": 0.1124, + "625": 0.11154, + "630": 0.11068, + "635": 0.10982, + "640": 0.10896, + "645": 0.10811, + "650": 0.10725, + "655": 0.10639, + "660": 0.10553, + "665": 0.10467, + "670": 0.10381, + "675": 0.10295, + "680": 0.10209, + "685": 0.10123, + "690": 0.10037, + "695": 0.09951, + "700": 0.09865, + "705": 0.09779, + "710": 0.09694, + "715": 0.09608, + "720": 0.09522, + "725": 0.09436, + "730": 0.0935, + "735": 0.09264, + "740": 0.09178, + "745": 0.09092, + "750": 0.09006, + "755": 0.0892, + "760": 0.08834, + "765": 0.08782, + "770": 0.08751, + "775": 0.0872, + "780": 0.0869, + "785": 0.08659, + "790": 0.08628, + "795": 0.08598, + "800": 0.08567, + "805": 0.08536, + "810": 0.08506, + "815": 0.08475, + "820": 0.08445, + "825": 0.08414, + "830": 0.08383, + "835": 0.08353, + "840": 0.08322, + "845": 0.08291, + "850": 0.08261, + "855": 0.0823, + "860": 0.08199, + "865": 0.08169, + "870": 0.08138, + "875": 0.08108, + "880": 0.08077, + "885": 0.08046, + "890": 0.08016, + "895": 0.07985, + "900": 0.07954, + "905": 0.07924, + "910": 0.07893, + "915": 0.07862, + "920": 0.07832, + "925": 0.07801, + "930": 0.0777, + "935": 0.0774, + "940": 0.07709, + "945": 0.07679, + "950": 0.07648, + "955": 0.07617, + "960": 0.07587, + "965": 0.07556, + "970": 0.07525, + "975": 0.07495, + "980": 0.07464, + "985": 0.07433, + "990": 0.07403, + "995": 0.07372, + "1000": 0.07342, + "1005": 0.07311, + "1010": 0.0728, + "1015": 0.0725, + "1020": 0.07219, + "1025": 0.07188, + "1030": 0.07158, + "1035": 0.07127, + "1040": 0.07096, + "1045": 0.07066, + "1050": 0.07035, + "1055": 0.07004, + "1060": 0.06974, + "1065": 0.06943, + "1070": 0.06913, + "1075": 0.06882, + "1080": 0.06851, + "1085": 0.06821, + "1090": 0.0679, + "1095": 0.06759, + "1100": 0.06729, + "1105": 0.06698, + "1110": 0.06667, + "1115": 0.06637, + "1120": 0.06606, + "1125": 0.06575, + "1130": 0.06545, + "1135": 0.06514, + "1140": 0.06484, + "1145": 0.06453, + "1150": 0.06422, + "1155": 0.06392, + "1160": 0.06361, + "1165": 0.0633, + "1170": 0.063, + "1175": 0.06269, + "1180": 0.06238, + "1185": 0.06208, + "1190": 0.06177, + "1195": 0.06147, + "1200": 0.06116, + "1205": 0.06085, + "1210": 0.06055, + "1215": 0.06024, + "1220": 0.05993, + "1225": 0.05963, + "1230": 0.05932, + "1235": 0.05901, + "1240": 0.05871, + "1245": 0.0584, + "1250": 0.05809, + "1255": 0.05779, + "1260": 0.05748, + "1265": 0.05718, + "1270": 0.05687, + "1275": 0.05656, + "1280": 0.05626, + "1285": 0.05595, + "1290": 0.05564, + "1295": 0.05534, + "1300": 0.05503, + "1305": 0.05472, + "1310": 0.05442, + "1315": 0.05411, + "1320": 0.05381, + "1325": 0.0535, + "1330": 0.05319, + "1335": 0.05289, + "1340": 0.05258, + "1345": 0.05227, + "1350": 0.05197, + "1355": 0.05166, + "1360": 0.05135, + "1365": 0.05105, + "1370": 0.05074, + "1375": 0.05043, + "1380": 0.05013, + "1385": 0.04982, + "1390": 0.04952, + "1395": 0.04921, + "1400": 0.0489, + "1405": 0.0486, + "1410": 0.04829, + "1415": 0.04798, + "1420": 0.04768, + "1425": 0.04737, + "1430": 0.04706, + "1435": 0.04676, + "1440": 0.04645, + "1445": 0.04614, + "1450": 0.04584, + "1455": 0.04553, + "1460": 0.04523, + "1465": 0.04492, + "1470": 0.04461, + "1475": 0.04431, + "1480": 0.044, + "1485": 0.04369, + "1490": 0.04339, + "1495": 0.04308, + "1500": 0.04277, + "1505": 0.04247, + "1510": 0.04216, + "1515": 0.04186, + "1520": 0.04155, + "1525": 0.04124, + "1530": 0.04094, + "1535": 0.04063, + "1540": 0.04032, + "1545": 0.04002, + "1550": 0.03971, + "1555": 0.0394, + "1560": 0.0391, + "1565": 0.03879, + "1570": 0.03848, + "1575": 0.03818, + "1580": 0.03787, + "1585": 0.03757, + "1590": 0.03726, + "1595": 0.03695, + "1600": 0.03665, + "1605": 0.03634, + "1610": 0.03603, + "1615": 0.03573, + "1620": 0.03542, + "1625": 0.03511, + "1630": 0.03481, + "1635": 0.0345, + "1640": 0.03419, + "1645": 0.03389, + "1650": 0.03358, + "1655": 0.03328, + "1660": 0.03297, + "1665": 0.03266, + "1670": 0.03236, + "1675": 0.03205, + "1680": 0.03174, + "1685": 0.03144, + "1690": 0.03113, + "1695": 0.03082, + "1700": 0.03052, + "1705": 0.03021, + "1710": 0.02991, + "1715": 0.0296, + "1720": 0.02929, + "1725": 0.02899, + "1730": 0.02868, + "1735": 0.02837, + "1740": 0.02807, + "1745": 0.02776, + "1750": 0.02745, + "1755": 0.02715, + "1760": 0.02684, + "1765": 0.02653, + "1770": 0.02623, + "1775": 0.02592, + "1780": 0.02562, + "1785": 0.02531, + "1790": 0.025, + "1795": 0.0247, + "1800": 0.02439, + "1805": 0.02408, + "1810": 0.02378, + "1815": 0.02347, + "1820": 0.02316, + "1825": 0.02286, + "1830": 0.02255, + "1835": 0.02225, + "1840": 0.02194, + "1845": 0.02163, + "1850": 0.02133, + "1855": 0.02102, + "1860": 0.02071, + "1865": 0.02041, + "1870": 0.0201, + "1875": 0.01979, + "1880": 0.01949, + "1885": 0.01918, + "1890": 0.01887, + "1895": 0.01857, + "1900": 0.01826, + "1905": 0.01796, + "1910": 0.01765, + "1915": 0.01734, + "1920": 0.01704, + "1925": 0.01673, + "1930": 0.01642, + "1935": 0.01612, + "1940": 0.01581, + "1945": 0.0155, + "1950": 0.0152, + "1955": 0.01489, + "1960": 0.01458, + "1965": 0.01428, + "1970": 0.01397, + "1975": 0.01367, + "1980": 0.01336, + "1985": 0.01305, + "1990": 0.01275, + "1995": 0.01244, + "2000": 0.01213, + "2005": 0.01183, + "2010": 0.01152, + "2015": 0.01121, + "2020": 0.01091, + "2025": 0.0106, + "2030": 0.0103, + "2035": 0.00999, + "2040": 0.00968, + "2045": 0.00938, + "2050": 0.00907, + "2055": 0.00876, + "2060": 0.00846, + "2065": 0.00815, + "2070": 0.00784, + "2075": 0.00754, + "2080": 0.00723, + "2085": 0.00692, + "2090": 0.00662, + "2095": 0.00631, + "2100": 0.00601, + "2105": 0.0057, + "2110": 0.00539, + "2115": 0.00509, + "2120": 0.00478, + "2125": 0.00447, + "2130": 0.00417, + "2135": 0.00386, + "2140": 0.00355, + "2145": 0.00325, + "2150": 0.00294, + "2155": 0.00264, + "2160": 0.00233, + "2165": 0.00202, + "2170": 0.00172, + "2175": 0.00141, + "2180": 0.0011, + "2185": 0.0008, + "2190": 0.00049, + "2195": 0.00018, + "2200": 0 + } + + # Stoploss: + stoploss = -0.335 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.014 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults11_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_0.2procent .log b/Some Test Results/v0.10.0/HyperOptResults11_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_0.2procent .log new file mode 100644 index 000000000..ab7650934 --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults11_Pt1-19-05-2021_UncloggedWinRatioAndProfitRatioloss_0.2procent .log @@ -0,0 +1,592 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +=============================================================================================================================================================================================================== +INFO - Using optimizer random state: 22100 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 211 | 128 11 72 | 1.00% | 95.431 USDT (19.09%) | 0 days 15:59:00 | -32,671.85133 | +| * Best | 2/1000 | 55 | 47 5 3 | 2.93% | 72.654 USDT (14.53%) | 1 days 23:24:00 | -94,759.08642 | +| * Best | 4/1000 | 418 | 314 36 68 | 1.73% | 325.501 USDT (65.10%) | 1 days 02:26:00 | -218,173.77528 | +| * Best | 8/1000 | 391 | 267 71 53 | 3.90% | 686.197 USDT (137.24%) | 2 days 00:16:00 | -328,013.57907 | +| * Best | 20/1000 | 622 | 448 86 88 | 2.08% | 582.769 USDT (116.55%) | 0 days 18:25:00 | -333,102.95496 | +| Best | 41/1000 | 467 | 372 58 37 | 3.12% | 656.494 USDT (131.30%) | 1 days 16:09:00 | -576,765.81742 | +| Best | 61/1000 | 450 | 377 53 20 | 3.04% | 615.535 USDT (123.11%) | 1 days 10:24:00 | -705,707.89993 | +| Best | 123/1000 | 1469 | 1178 37 254 | 1.23% | 810.752 USDT (162.15%) | 0 days 12:49:00 | -728,607.23194 | +| Best | 124/1000 | 2298 | 2030 41 227 | 0.84% | 870.962 USDT (174.19%) | 0 days 05:38:00 | -1,464,582.77217 | +| Best | 141/1000 | 1262 | 1100 79 83 | 2.33% | 1326.342 USDT (265.27%) | 0 days 11:00:00 | -1,999,339.44222 | +| Best | 208/1000 | 1250 | 1113 49 88 | 2.29% | 1288.842 USDT (257.77%) | 0 days 13:54:00 | -2,324,489.23352 | +| Best | 219/1000 | 1557 | 1412 85 60 | 2.09% | 1468.818 USDT (293.76%) | 0 days 11:43:00 | -3,175,325.17714 | +| Best | 249/1000 | 1099 | 1003 60 36 | 2.77% | 1373.676 USDT (274.74%) | 0 days 18:37:00 | -3,186,158.87446 | +| Best | 254/1000 | 1373 | 1239 76 58 | 2.77% | 1713.854 USDT (342.77%) | 0 days 15:49:00 | -3,517,982.14563 | +| Best | 266/1000 | 2092 | 1980 62 50 | 2.10% | 1980.183 USDT (396.04%) | 0 days 10:03:00 | -7,771,517.01209 | +| Best | 613/1000 | 1848 | 1758 59 31 | 2.20% | 1834.984 USDT (367.00%) | 0 days 09:55:00 | -7,957,231.33707 | + +Elapsed Time: 1:03:24 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-20_00-43-39.fthypt'. + +Best result: + + 613/1000: + 1848 trades. + 1758/59/31 Wins/Draws/Losses. + Avg profit 2.20%. + Median profit 1.37%. + Total profit 1834.98370641 USDT ( 367.00Σ%). + Avg duration 9:55:00 min. + Objective: -7957231.33707 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 219, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 4, + "buy__sideways_trend_total_signal_needed": 403, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 4, + "buy__upwards_trend_total_signal_needed": 200, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 2, + "buy_downwards_trend_adx_strong_up_weight": 61, + "buy_downwards_trend_bollinger_bands_weight": 0, + "buy_downwards_trend_ema_long_golden_cross_weight": 62, + "buy_downwards_trend_ema_short_golden_cross_weight": 73, + "buy_downwards_trend_macd_weight": 87, + "buy_downwards_trend_rsi_weight": 55, + "buy_downwards_trend_sma_long_golden_cross_weight": 80, + "buy_downwards_trend_sma_short_golden_cross_weight": 67, + "buy_downwards_trend_vwap_cross_weight": 63, + "buy_sideways_trend_adx_strong_up_weight": 82, + "buy_sideways_trend_bollinger_bands_weight": 26, + "buy_sideways_trend_ema_long_golden_cross_weight": 32, + "buy_sideways_trend_ema_short_golden_cross_weight": 20, + "buy_sideways_trend_macd_weight": 18, + "buy_sideways_trend_rsi_weight": 25, + "buy_sideways_trend_sma_long_golden_cross_weight": 79, + "buy_sideways_trend_sma_short_golden_cross_weight": 21, + "buy_sideways_trend_vwap_cross_weight": 76, + "buy_upwards_trend_adx_strong_up_weight": 91, + "buy_upwards_trend_bollinger_bands_weight": 78, + "buy_upwards_trend_ema_long_golden_cross_weight": 18, + "buy_upwards_trend_ema_short_golden_cross_weight": 99, + "buy_upwards_trend_macd_weight": 11, + "buy_upwards_trend_rsi_weight": 45, + "buy_upwards_trend_sma_long_golden_cross_weight": 76, + "buy_upwards_trend_sma_short_golden_cross_weight": 83, + "buy_upwards_trend_vwap_cross_weight": 23, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 41, + "sell___unclogger_minimal_losing_trades_open": 4, + "sell___unclogger_open_trades_losing_percentage_needed": 50, + "sell___unclogger_trend_lookback_candles_window": 10, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 36, + "sell__downwards_trend_total_signal_needed": 330, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 262, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "sell__upwards_trend_total_signal_needed": 445, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "sell_downwards_trend_adx_strong_down_weight": 29, + "sell_downwards_trend_bollinger_bands_weight": 91, + "sell_downwards_trend_ema_long_death_cross_weight": 20, + "sell_downwards_trend_ema_short_death_cross_weight": 5, + "sell_downwards_trend_macd_weight": 42, + "sell_downwards_trend_rsi_weight": 79, + "sell_downwards_trend_sma_long_death_cross_weight": 21, + "sell_downwards_trend_sma_short_death_cross_weight": 13, + "sell_downwards_trend_vwap_cross_weight": 77, + "sell_sideways_trend_adx_strong_down_weight": 52, + "sell_sideways_trend_bollinger_bands_weight": 53, + "sell_sideways_trend_ema_long_death_cross_weight": 81, + "sell_sideways_trend_ema_short_death_cross_weight": 65, + "sell_sideways_trend_macd_weight": 56, + "sell_sideways_trend_rsi_weight": 97, + "sell_sideways_trend_sma_long_death_cross_weight": 27, + "sell_sideways_trend_sma_short_death_cross_weight": 3, + "sell_sideways_trend_vwap_cross_weight": 60, + "sell_upwards_trend_adx_strong_down_weight": 11, + "sell_upwards_trend_bollinger_bands_weight": 47, + "sell_upwards_trend_ema_long_death_cross_weight": 35, + "sell_upwards_trend_ema_short_death_cross_weight": 37, + "sell_upwards_trend_macd_weight": 17, + "sell_upwards_trend_rsi_weight": 56, + "sell_upwards_trend_sma_long_death_cross_weight": 97, + "sell_upwards_trend_sma_short_death_cross_weight": 76, + "sell_upwards_trend_vwap_cross_weight": 38, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.52, + "5": 0.5155, + "10": 0.511, + "15": 0.5065, + "20": 0.50201, + "25": 0.49751, + "30": 0.49301, + "35": 0.48851, + "40": 0.48401, + "45": 0.47951, + "50": 0.47501, + "55": 0.47052, + "60": 0.46602, + "65": 0.46152, + "70": 0.45702, + "75": 0.45252, + "80": 0.44802, + "85": 0.44352, + "90": 0.43903, + "95": 0.43453, + "100": 0.43003, + "105": 0.42553, + "110": 0.42103, + "115": 0.41653, + "120": 0.41203, + "125": 0.40754, + "130": 0.40304, + "135": 0.39854, + "140": 0.39404, + "145": 0.38954, + "150": 0.38504, + "155": 0.38054, + "160": 0.37605, + "165": 0.37155, + "170": 0.36705, + "175": 0.36255, + "180": 0.35805, + "185": 0.35355, + "190": 0.34905, + "195": 0.34456, + "200": 0.34006, + "205": 0.33556, + "210": 0.33106, + "215": 0.32656, + "220": 0.32206, + "225": 0.31756, + "230": 0.31307, + "235": 0.30857, + "240": 0.30407, + "245": 0.29957, + "250": 0.29507, + "255": 0.29057, + "260": 0.28607, + "265": 0.28158, + "270": 0.27708, + "275": 0.27258, + "280": 0.26808, + "285": 0.26358, + "290": 0.25908, + "295": 0.25458, + "300": 0.25009, + "305": 0.24559, + "310": 0.24109, + "315": 0.23659, + "320": 0.23209, + "325": 0.22759, + "330": 0.22309, + "335": 0.2186, + "340": 0.2141, + "345": 0.2096, + "350": 0.20579, + "355": 0.20475, + "360": 0.20372, + "365": 0.20268, + "370": 0.20164, + "375": 0.2006, + "380": 0.19956, + "385": 0.19853, + "390": 0.19749, + "395": 0.19645, + "400": 0.19541, + "405": 0.19437, + "410": 0.19334, + "415": 0.1923, + "420": 0.19126, + "425": 0.19022, + "430": 0.18918, + "435": 0.18815, + "440": 0.18711, + "445": 0.18607, + "450": 0.18503, + "455": 0.18399, + "460": 0.18296, + "465": 0.18192, + "470": 0.18088, + "475": 0.17984, + "480": 0.1788, + "485": 0.17776, + "490": 0.17673, + "495": 0.17569, + "500": 0.17465, + "505": 0.17361, + "510": 0.17257, + "515": 0.17154, + "520": 0.1705, + "525": 0.16946, + "530": 0.16842, + "535": 0.16738, + "540": 0.16635, + "545": 0.16531, + "550": 0.16427, + "555": 0.16323, + "560": 0.16219, + "565": 0.16116, + "570": 0.16012, + "575": 0.15908, + "580": 0.15804, + "585": 0.157, + "590": 0.15597, + "595": 0.15493, + "600": 0.15389, + "605": 0.15285, + "610": 0.15181, + "615": 0.15078, + "620": 0.14974, + "625": 0.1487, + "630": 0.14766, + "635": 0.14662, + "640": 0.14558, + "645": 0.14455, + "650": 0.14351, + "655": 0.14247, + "660": 0.14143, + "665": 0.14039, + "670": 0.13936, + "675": 0.13832, + "680": 0.13728, + "685": 0.13624, + "690": 0.1352, + "695": 0.13417, + "700": 0.13313, + "705": 0.13209, + "710": 0.13105, + "715": 0.13001, + "720": 0.12898, + "725": 0.12794, + "730": 0.1269, + "735": 0.12586, + "740": 0.12482, + "745": 0.12379, + "750": 0.12275, + "755": 0.12171, + "760": 0.12067, + "765": 0.11963, + "770": 0.1186, + "775": 0.11756, + "780": 0.11652, + "785": 0.11548, + "790": 0.11444, + "795": 0.1134, + "800": 0.11237, + "805": 0.11133, + "810": 0.11029, + "815": 0.10925, + "820": 0.10821, + "825": 0.10718, + "830": 0.10614, + "835": 0.1051, + "840": 0.10406, + "845": 0.10302, + "850": 0.10199, + "855": 0.10095, + "860": 0.09991, + "865": 0.09887, + "870": 0.09783, + "875": 0.0968, + "880": 0.09576, + "885": 0.09472, + "890": 0.09368, + "895": 0.09264, + "900": 0.09161, + "905": 0.09057, + "910": 0.08953, + "915": 0.08849, + "920": 0.08745, + "925": 0.08642, + "930": 0.0858, + "935": 0.08547, + "940": 0.08515, + "945": 0.08482, + "950": 0.08449, + "955": 0.08416, + "960": 0.08383, + "965": 0.0835, + "970": 0.08317, + "975": 0.08285, + "980": 0.08252, + "985": 0.08219, + "990": 0.08186, + "995": 0.08153, + "1000": 0.0812, + "1005": 0.08088, + "1010": 0.08055, + "1015": 0.08022, + "1020": 0.07989, + "1025": 0.07956, + "1030": 0.07923, + "1035": 0.0789, + "1040": 0.07858, + "1045": 0.07825, + "1050": 0.07792, + "1055": 0.07759, + "1060": 0.07726, + "1065": 0.07693, + "1070": 0.07661, + "1075": 0.07628, + "1080": 0.07595, + "1085": 0.07562, + "1090": 0.07529, + "1095": 0.07496, + "1100": 0.07463, + "1105": 0.07431, + "1110": 0.07398, + "1115": 0.07365, + "1120": 0.07332, + "1125": 0.07299, + "1130": 0.07266, + "1135": 0.07233, + "1140": 0.07201, + "1145": 0.07168, + "1150": 0.07135, + "1155": 0.07102, + "1160": 0.07069, + "1165": 0.07036, + "1170": 0.07004, + "1175": 0.06971, + "1180": 0.06938, + "1185": 0.06905, + "1190": 0.06872, + "1195": 0.06839, + "1200": 0.06806, + "1205": 0.06774, + "1210": 0.06741, + "1215": 0.06708, + "1220": 0.06675, + "1225": 0.06642, + "1230": 0.06609, + "1235": 0.06576, + "1240": 0.06544, + "1245": 0.06511, + "1250": 0.06478, + "1255": 0.06445, + "1260": 0.06412, + "1265": 0.06379, + "1270": 0.06347, + "1275": 0.06314, + "1280": 0.06281, + "1285": 0.06248, + "1290": 0.06215, + "1295": 0.06182, + "1300": 0.06149, + "1305": 0.06117, + "1310": 0.06084, + "1315": 0.06051, + "1320": 0.06018, + "1325": 0.05985, + "1330": 0.05952, + "1335": 0.05919, + "1340": 0.05887, + "1345": 0.05854, + "1350": 0.05821, + "1355": 0.05788, + "1360": 0.05755, + "1365": 0.05722, + "1370": 0.0569, + "1375": 0.05657, + "1380": 0.05624, + "1385": 0.05591, + "1390": 0.05558, + "1395": 0.05525, + "1400": 0.05492, + "1405": 0.0546, + "1410": 0.05427, + "1415": 0.05394, + "1420": 0.05361, + "1425": 0.05328, + "1430": 0.05295, + "1435": 0.05262, + "1440": 0.0523, + "1445": 0.05197, + "1450": 0.05164, + "1455": 0.05131, + "1460": 0.05098, + "1465": 0.05065, + "1470": 0.05033, + "1475": 0.05, + "1480": 0.04967, + "1485": 0.04934, + "1490": 0.04901, + "1495": 0.04868, + "1500": 0.04835, + "1505": 0.04803, + "1510": 0.0477, + "1515": 0.04737, + "1520": 0.04704, + "1525": 0.04671, + "1530": 0.04638, + "1535": 0.04606, + "1540": 0.04573, + "1545": 0.0454, + "1550": 0.04507, + "1555": 0.04474, + "1560": 0.04441, + "1565": 0.04408, + "1570": 0.04376, + "1575": 0.04343, + "1580": 0.0431, + "1585": 0.04277, + "1590": 0.04244, + "1595": 0.04211, + "1600": 0.04178, + "1605": 0.04146, + "1610": 0.04113, + "1615": 0.0408, + "1620": 0.04047, + "1625": 0.04014, + "1630": 0.03981, + "1635": 0.03949, + "1640": 0.03916, + "1645": 0.03883, + "1650": 0.0385, + "1655": 0.03817, + "1660": 0.03784, + "1665": 0.03751, + "1670": 0.03719, + "1675": 0.03686, + "1680": 0.03653, + "1685": 0.0362, + "1690": 0.03587, + "1695": 0.03554, + "1700": 0.03521, + "1705": 0.03489, + "1710": 0.03456, + "1715": 0.03423, + "1720": 0.0339, + "1725": 0.03357, + "1730": 0.03324, + "1735": 0.03292, + "1740": 0.03259, + "1745": 0.03226, + "1750": 0.03193, + "1755": 0.0316, + "1760": 0.03127, + "1765": 0.03094, + "1770": 0.03062, + "1775": 0.03029, + "1780": 0.02996, + "1785": 0.02963, + "1790": 0.0293, + "1795": 0.02897, + "1800": 0.02864, + "1805": 0.02832, + "1810": 0.02799, + "1815": 0.02766, + "1820": 0.02733, + "1825": 0.027, + "1830": 0.02667, + "1835": 0.02635, + "1840": 0.02602, + "1845": 0.02569, + "1850": 0.02536, + "1855": 0.02503, + "1860": 0.0247, + "1865": 0.02437, + "1870": 0.02405, + "1875": 0.02372, + "1880": 0.02339, + "1885": 0.02306, + "1890": 0.02273, + "1895": 0.0224, + "1900": 0.02207, + "1905": 0.02175, + "1910": 0.02142, + "1915": 0.02109, + "1920": 0.02076, + "1925": 0.02043, + "1930": 0.0201, + "1935": 0.01978, + "1940": 0.01945, + "1945": 0.01912, + "1950": 0.01879, + "1955": 0.01846, + "1960": 0.01813, + "1965": 0.0178, + "1970": 0.01748, + "1975": 0.01715, + "1980": 0.01682, + "1985": 0.01649, + "1990": 0.01616, + "1995": 0.01583, + "2000": 0.0155, + "2005": 0.01518, + "2010": 0.01485, + "2015": 0.01452, + "2020": 0.01419, + "2025": 0.01386, + "2030": 0.01353, + "2035": 0.01321, + "2040": 0.01288, + "2045": 0.01255, + "2050": 0.01222, + "2055": 0.01189, + "2060": 0.01156, + "2065": 0.01123, + "2070": 0.01091, + "2075": 0.01058, + "2080": 0.01025, + "2085": 0.00992, + "2090": 0.00959, + "2095": 0.00926, + "2100": 0.00894, + "2105": 0.00861, + "2110": 0.00828, + "2115": 0.00795, + "2120": 0.00762, + "2125": 0.00729, + "2130": 0.00696, + "2135": 0.00664, + "2140": 0.00631, + "2145": 0.00598, + "2150": 0.00565, + "2155": 0.00532, + "2160": 0.00499, + "2165": 0.00466, + "2170": 0.00434, + "2175": 0.00401, + "2180": 0.00368, + "2185": 0.00335, + "2190": 0.00302, + "2195": 0.00269, + "2200": 0.00237, + "2205": 0.00204, + "2210": 0.00171, + "2215": 0.00138, + "2220": 0.00105, + "2225": 0.00072, + "2230": 0.00039, + "2235": 7e-05, + "2240": 0 + } + + # Stoploss: + stoploss = -0.33 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults7_Pt1-18-05-2021_sell_profit_only_true.log b/Some Test Results/v0.10.0/HyperOptResults7_Pt1-18-05-2021_sell_profit_only_true.log new file mode 100644 index 000000000..135b061fd --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults7_Pt1-18-05-2021_sell_profit_only_true.log @@ -0,0 +1,403 @@ + freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +============================================================================================================================================================================================================= +INFO - Using optimizer random state: 8124 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+------------------------------+-----------------+---------------| +| * Best | 1/1000 | 491 | 214 209 68 | 1.36% | 0.00668185 BTC (58.82%) | 1 days 07:42:00 | -29,093.91092 | +| * Best | 2/1000 | 618 | 408 65 145 | 1.73% | 0.01071277 BTC (94.30%) | 1 days 04:32:00 | -70,652.37902 | +| * Best | 7/1000 | 314 | 226 64 24 | 3.17% | 0.00996713 BTC (87.74%) | 2 days 19:35:00 | -71,666.45392 | +| Best | 38/1000 | 412 | 305 64 43 | 3.56% | 0.01469759 BTC (129.38%) | 2 days 03:12:00 | -108,697.12540 | +| Best | 61/1000 | 723 | 612 57 54 | 2.70% | 0.01954534 BTC (172.05%) | 1 days 03:01:00 | -165,280.95888 | +| Best | 134/1000 | 1124 | 989 82 53 | 1.77% | 0.01990442 BTC (175.21%) | 0 days 17:23:00 | -174,964.51468 | +| Best | 213/1000 | 662 | 583 38 41 | 3.08% | 0.02039881 BTC (179.57%) | 1 days 11:56:00 | -179,466.00862 | +| Best | 215/1000 | 925 | 850 36 39 | 2.20% | 0.02040527 BTC (179.62%) | 1 days 01:19:00 | -187,319.52152 | +| Best | 231/1000 | 1312 | 1189 48 75 | 1.80% | 0.02367262 BTC (208.39%) | 0 days 14:51:00 | -214,319.94936 | +| Best | 274/1000 | 1031 | 961 33 37 | 2.48% | 0.02555597 BTC (224.96%) | 0 days 23:11:00 | -237,971.05748 | +| Best | 427/1000 | 2815 | 2394 90 331 | 1.05% | 0.02960390 BTC (260.60%) | 0 days 05:57:00 | -251,501.86858 | +| Best | 719/1000 | 2583 | 2239 84 260 | 1.16% | 0.03011625 BTC (265.11%) | 0 days 07:06:00 | -260,796.28388 | + +Elapsed Time: 1:02:11 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-18_18-49-27.fthypt'. + +Best result: + + 719/1000: + 2583 trades. + 2239/84/260 Wins/Draws/Losses. + Avg profit 1.16%. + Median profit 1.17%. + Total profit 0.03011625 BTC ( 265.11Σ%). + Avg duration 7:06:00 min. + Objective: -260796.28388 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 109, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 809, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "buy__upwards_trend_total_signal_needed": 285, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 68, + "buy_downwards_trend_bollinger_bands_weight": 73, + "buy_downwards_trend_ema_long_golden_cross_weight": 10, + "buy_downwards_trend_ema_short_golden_cross_weight": 81, + "buy_downwards_trend_macd_weight": 33, + "buy_downwards_trend_rsi_weight": 33, + "buy_downwards_trend_sma_long_golden_cross_weight": 42, + "buy_downwards_trend_sma_short_golden_cross_weight": 84, + "buy_downwards_trend_vwap_cross_weight": 21, + "buy_sideways_trend_adx_strong_up_weight": 83, + "buy_sideways_trend_bollinger_bands_weight": 75, + "buy_sideways_trend_ema_long_golden_cross_weight": 81, + "buy_sideways_trend_ema_short_golden_cross_weight": 46, + "buy_sideways_trend_macd_weight": 67, + "buy_sideways_trend_rsi_weight": 4, + "buy_sideways_trend_sma_long_golden_cross_weight": 8, + "buy_sideways_trend_sma_short_golden_cross_weight": 83, + "buy_sideways_trend_vwap_cross_weight": 26, + "buy_upwards_trend_adx_strong_up_weight": 96, + "buy_upwards_trend_bollinger_bands_weight": 49, + "buy_upwards_trend_ema_long_golden_cross_weight": 66, + "buy_upwards_trend_ema_short_golden_cross_weight": 32, + "buy_upwards_trend_macd_weight": 69, + "buy_upwards_trend_rsi_weight": 37, + "buy_upwards_trend_sma_long_golden_cross_weight": 3, + "buy_upwards_trend_sma_short_golden_cross_weight": 97, + "buy_upwards_trend_vwap_cross_weight": 53 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 19, + "sell___unclogger_minimal_losing_trades_open": 4, + "sell___unclogger_open_trades_losing_percentage_needed": 31, + "sell___unclogger_trend_lookback_candles_window": 51, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 35, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 565, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 638, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "sell__upwards_trend_total_signal_needed": 590, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 63, + "sell_downwards_trend_bollinger_bands_weight": 5, + "sell_downwards_trend_ema_long_death_cross_weight": 14, + "sell_downwards_trend_ema_short_death_cross_weight": 6, + "sell_downwards_trend_macd_weight": 92, + "sell_downwards_trend_rsi_weight": 98, + "sell_downwards_trend_sma_long_death_cross_weight": 91, + "sell_downwards_trend_sma_short_death_cross_weight": 86, + "sell_downwards_trend_vwap_cross_weight": 54, + "sell_sideways_trend_adx_strong_down_weight": 69, + "sell_sideways_trend_bollinger_bands_weight": 57, + "sell_sideways_trend_ema_long_death_cross_weight": 78, + "sell_sideways_trend_ema_short_death_cross_weight": 72, + "sell_sideways_trend_macd_weight": 0, + "sell_sideways_trend_rsi_weight": 41, + "sell_sideways_trend_sma_long_death_cross_weight": 76, + "sell_sideways_trend_sma_short_death_cross_weight": 49, + "sell_sideways_trend_vwap_cross_weight": 1, + "sell_upwards_trend_adx_strong_down_weight": 72, + "sell_upwards_trend_bollinger_bands_weight": 38, + "sell_upwards_trend_ema_long_death_cross_weight": 48, + "sell_upwards_trend_ema_short_death_cross_weight": 65, + "sell_upwards_trend_macd_weight": 24, + "sell_upwards_trend_rsi_weight": 58, + "sell_upwards_trend_sma_long_death_cross_weight": 65, + "sell_upwards_trend_sma_short_death_cross_weight": 99, + "sell_upwards_trend_vwap_cross_weight": 37 + } + + # ROI table: + minimal_roi = { + "0": 0.17, + "5": 0.16926, + "10": 0.16853, + "15": 0.16779, + "20": 0.16705, + "25": 0.16631, + "30": 0.16558, + "35": 0.16484, + "40": 0.1641, + "45": 0.16336, + "50": 0.16263, + "55": 0.16189, + "60": 0.16115, + "65": 0.16041, + "70": 0.15968, + "75": 0.15894, + "80": 0.1582, + "85": 0.15746, + "90": 0.15673, + "95": 0.15599, + "100": 0.15525, + "105": 0.15451, + "110": 0.15378, + "115": 0.15304, + "120": 0.1523, + "125": 0.15156, + "130": 0.15083, + "135": 0.15009, + "140": 0.14935, + "145": 0.14862, + "150": 0.14788, + "155": 0.14714, + "160": 0.1464, + "165": 0.14567, + "170": 0.14493, + "175": 0.14419, + "180": 0.14345, + "185": 0.14272, + "190": 0.14198, + "195": 0.14124, + "200": 0.1405, + "205": 0.13977, + "210": 0.13903, + "215": 0.13829, + "220": 0.13755, + "225": 0.13682, + "230": 0.13608, + "235": 0.13534, + "240": 0.1346, + "245": 0.13387, + "250": 0.13313, + "255": 0.13239, + "260": 0.13165, + "265": 0.13092, + "270": 0.13018, + "275": 0.12944, + "280": 0.1284, + "285": 0.12689, + "290": 0.12539, + "295": 0.12389, + "300": 0.12238, + "305": 0.12088, + "310": 0.11937, + "315": 0.11787, + "320": 0.11636, + "325": 0.11486, + "330": 0.11336, + "335": 0.11185, + "340": 0.11035, + "345": 0.10884, + "350": 0.10734, + "355": 0.10583, + "360": 0.10433, + "365": 0.10283, + "370": 0.10132, + "375": 0.09982, + "380": 0.09831, + "385": 0.09681, + "390": 0.0953, + "395": 0.0938, + "400": 0.0923, + "405": 0.09079, + "410": 0.08929, + "415": 0.08778, + "420": 0.08628, + "425": 0.08477, + "430": 0.08327, + "435": 0.08177, + "440": 0.08026, + "445": 0.07876, + "450": 0.07725, + "455": 0.07575, + "460": 0.07424, + "465": 0.07274, + "470": 0.07123, + "475": 0.06973, + "480": 0.06823, + "485": 0.06672, + "490": 0.06522, + "495": 0.06371, + "500": 0.06221, + "505": 0.0607, + "510": 0.0592, + "515": 0.0577, + "520": 0.05619, + "525": 0.05469, + "530": 0.05318, + "535": 0.05168, + "540": 0.05017, + "545": 0.04867, + "550": 0.04717, + "555": 0.04566, + "560": 0.04416, + "565": 0.04265, + "570": 0.04115, + "575": 0.03964, + "580": 0.03814, + "585": 0.03664, + "590": 0.03513, + "595": 0.03363, + "600": 0.03212, + "605": 0.03062, + "610": 0.02911, + "615": 0.02761, + "620": 0.02611, + "625": 0.0246, + "630": 0.0239, + "635": 0.02372, + "640": 0.02355, + "645": 0.02337, + "650": 0.0232, + "655": 0.02302, + "660": 0.02285, + "665": 0.02267, + "670": 0.0225, + "675": 0.02232, + "680": 0.02215, + "685": 0.02197, + "690": 0.0218, + "695": 0.02162, + "700": 0.02145, + "705": 0.02127, + "710": 0.0211, + "715": 0.02092, + "720": 0.02075, + "725": 0.02057, + "730": 0.0204, + "735": 0.02022, + "740": 0.02005, + "745": 0.01987, + "750": 0.0197, + "755": 0.01952, + "760": 0.01935, + "765": 0.01917, + "770": 0.019, + "775": 0.01882, + "780": 0.01865, + "785": 0.01847, + "790": 0.0183, + "795": 0.01812, + "800": 0.01795, + "805": 0.01777, + "810": 0.0176, + "815": 0.01742, + "820": 0.01725, + "825": 0.01707, + "830": 0.0169, + "835": 0.01672, + "840": 0.01655, + "845": 0.01637, + "850": 0.0162, + "855": 0.01602, + "860": 0.01585, + "865": 0.01567, + "870": 0.0155, + "875": 0.01532, + "880": 0.01515, + "885": 0.01497, + "890": 0.0148, + "895": 0.01462, + "900": 0.01445, + "905": 0.01427, + "910": 0.0141, + "915": 0.01392, + "920": 0.01375, + "925": 0.01357, + "930": 0.0134, + "935": 0.01322, + "940": 0.01305, + "945": 0.01287, + "950": 0.0127, + "955": 0.01252, + "960": 0.01235, + "965": 0.01217, + "970": 0.012, + "975": 0.01183, + "980": 0.01165, + "985": 0.01148, + "990": 0.0113, + "995": 0.01113, + "1000": 0.01095, + "1005": 0.01078, + "1010": 0.0106, + "1015": 0.01043, + "1020": 0.01025, + "1025": 0.01008, + "1030": 0.0099, + "1035": 0.00973, + "1040": 0.00955, + "1045": 0.00938, + "1050": 0.0092, + "1055": 0.00903, + "1060": 0.00885, + "1065": 0.00868, + "1070": 0.0085, + "1075": 0.00833, + "1080": 0.00815, + "1085": 0.00798, + "1090": 0.0078, + "1095": 0.00763, + "1100": 0.00745, + "1105": 0.00728, + "1110": 0.0071, + "1115": 0.00693, + "1120": 0.00675, + "1125": 0.00658, + "1130": 0.0064, + "1135": 0.00623, + "1140": 0.00605, + "1145": 0.00588, + "1150": 0.0057, + "1155": 0.00553, + "1160": 0.00535, + "1165": 0.00518, + "1170": 0.005, + "1175": 0.00483, + "1180": 0.00465, + "1185": 0.00448, + "1190": 0.0043, + "1195": 0.00413, + "1200": 0.00395, + "1205": 0.00378, + "1210": 0.0036, + "1215": 0.00343, + "1220": 0.00325, + "1225": 0.00308, + "1230": 0.0029, + "1235": 0.00273, + "1240": 0.00255, + "1245": 0.00238, + "1250": 0.0022, + "1255": 0.00203, + "1260": 0.00185, + "1265": 0.00168, + "1270": 0.0015, + "1275": 0.00133, + "1280": 0.00115, + "1285": 0.00098, + "1290": 0.0008, + "1295": 0.00063, + "1300": 0.00045, + "1305": 0.00028, + "1310": 0.0001, + "1315": 0 + } + + # Stoploss: + stoploss = -0.111 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.013 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults8_Pt1-19-05-2021_sell_profit_only_true_usdt.log b/Some Test Results/v0.10.0/HyperOptResults8_Pt1-19-05-2021_sell_profit_only_true_usdt.log new file mode 100644 index 000000000..521cc3544 --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults8_Pt1-19-05-2021_sell_profit_only_true_usdt.log @@ -0,0 +1,259 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +=============================================================================================================================================================================================================== +INFO - Strategy using stake_currency: USDT +INFO - Strategy using stake_amount: 45 +INFO - Using optimizer random state: 52567S +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. + ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+-------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+-------------| +| * Best | 2/1000 | 3 | 0 2 1 | -9.78% | -13.217 USDT (-2.64%) | 7 days 11:40:00 | 0 | +| * Best | 6/1000 | 392 | 287 23 82 | 1.47% | 259.152 USDT (51.83%) | 0 days 19:53:00 | -42,121.49555 | +| * Best | 9/1000 | 347 | 256 51 40 | 2.29% | 357.487 USDT (71.50%) | 1 days 06:10:00 | -58,549.57173 | +| * Best | 18/1000 | 472 | 336 44 92 | 2.24% | 476.827 USDT (95.37%) | 1 days 08:02:00 | -75,354.86444 | +| * Best | 29/1000 | 485 | 365 58 62 | 2.74% | 599.021 USDT (119.80%) | 1 days 10:20:00 | -100,079.81795 | +| Best | 42/1000 | 433 | 329 62 42 | 3.50% | 682.276 USDT (136.46%) | 1 days 16:12:00 | -115,085.71484 | +| Best | 73/1000 | 868 | 608 170 90 | 2.14% | 834.852 USDT (166.97%) | 0 days 21:51:00 | -129,821.59104 | +| Best | 80/1000 | 1179 | 1069 64 46 | 2.21% | 1174.534 USDT (234.91%) | 0 days 15:15:00 | -236,419.32071 | +| Best | 116/1000 | 1023 | 931 61 31 | 2.66% | 1227.711 USDT (245.54%) | 0 days 17:48:00 | -248,041.04432 | +| Best | 136/1000 | 1443 | 1275 117 51 | 2.14% | 1392.816 USDT (278.56%) | 0 days 12:06:00 | -273,206.42011 | +| Best | 179/1000 | 2530 | 2283 92 155 | 1.50% | 1708.360 USDT (341.67%) | 0 days 06:32:00 | -342,230.01346 | +| Best | 360/1000 | 2898 | 2674 60 164 | 1.41% | 1841.619 USDT (368.32%) | 0 days 05:23:00 | -377,238.68160 | +| Best | 393/1000 | 2479 | 2294 64 121 | 1.65% | 1839.444 USDT (367.89%) | 0 days 07:01:00 | -377,882.61404 | +| Best | 431/1000 | 3615 | 3239 22 354 | 1.22% | 1980.596 USDT (396.12%) | 0 days 03:50:00 | -393,959.77778 | +| Best | 480/1000 | 4321 | 3770 52 499 | 1.08% | 2096.677 USDT (419.34%) | 0 days 03:06:00 | -406,108.52301 | +| Best | 532/1000 | 2311 | 2127 137 47 | 2.04% | 2128.485 USDT (425.70%) | 0 days 09:03:00 | -434,902.15142 | + +Elapsed Time: 1:08:34 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-19_01-16-41.fthypt'. + +Best result: + + 532/1000: + 2311 trades. + 2127/137/47 Wins/Draws/Losses. + Avg profit 2.04%. + Median profit 1.30%. + Total profit 2128.48503678 USDT ( 425.70Σ%). + Avg duration 9:03:00 min. + Objective: -434902.15142 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 200, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 4, + "buy__sideways_trend_total_signal_needed": 391, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 3, + "buy__upwards_trend_total_signal_needed": 71, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "buy_downwards_trend_adx_strong_up_weight": 66, + "buy_downwards_trend_bollinger_bands_weight": 89, + "buy_downwards_trend_ema_long_golden_cross_weight": 8, + "buy_downwards_trend_ema_short_golden_cross_weight": 93, + "buy_downwards_trend_macd_weight": 51, + "buy_downwards_trend_rsi_weight": 52, + "buy_downwards_trend_sma_long_golden_cross_weight": 75, + "buy_downwards_trend_sma_short_golden_cross_weight": 77, + "buy_downwards_trend_vwap_cross_weight": 72, + "buy_sideways_trend_adx_strong_up_weight": 25, + "buy_sideways_trend_bollinger_bands_weight": 32, + "buy_sideways_trend_ema_long_golden_cross_weight": 49, + "buy_sideways_trend_ema_short_golden_cross_weight": 2, + "buy_sideways_trend_macd_weight": 84, + "buy_sideways_trend_rsi_weight": 7, + "buy_sideways_trend_sma_long_golden_cross_weight": 88, + "buy_sideways_trend_sma_short_golden_cross_weight": 84, + "buy_sideways_trend_vwap_cross_weight": 22, + "buy_upwards_trend_adx_strong_up_weight": 82, + "buy_upwards_trend_bollinger_bands_weight": 21, + "buy_upwards_trend_ema_long_golden_cross_weight": 30, + "buy_upwards_trend_ema_short_golden_cross_weight": 8, + "buy_upwards_trend_macd_weight": 55, + "buy_upwards_trend_rsi_weight": 67, + "buy_upwards_trend_sma_long_golden_cross_weight": 33, + "buy_upwards_trend_sma_short_golden_cross_weight": 15, + "buy_upwards_trend_vwap_cross_weight": 49 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 16, + "sell___unclogger_minimal_losing_trades_open": 2, + "sell___unclogger_open_trades_losing_percentage_needed": 38, + "sell___unclogger_trend_lookback_candles_window": 16, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 14, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 531, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell__sideways_trend_total_signal_needed": 411, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 4, + "sell__upwards_trend_total_signal_needed": 550, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell_downwards_trend_adx_strong_down_weight": 68, + "sell_downwards_trend_bollinger_bands_weight": 36, + "sell_downwards_trend_ema_long_death_cross_weight": 78, + "sell_downwards_trend_ema_short_death_cross_weight": 94, + "sell_downwards_trend_macd_weight": 23, + "sell_downwards_trend_rsi_weight": 87, + "sell_downwards_trend_sma_long_death_cross_weight": 63, + "sell_downwards_trend_sma_short_death_cross_weight": 90, + "sell_downwards_trend_vwap_cross_weight": 90, + "sell_sideways_trend_adx_strong_down_weight": 10, + "sell_sideways_trend_bollinger_bands_weight": 10, + "sell_sideways_trend_ema_long_death_cross_weight": 33, + "sell_sideways_trend_ema_short_death_cross_weight": 1, + "sell_sideways_trend_macd_weight": 22, + "sell_sideways_trend_rsi_weight": 40, + "sell_sideways_trend_sma_long_death_cross_weight": 1, + "sell_sideways_trend_sma_short_death_cross_weight": 53, + "sell_sideways_trend_vwap_cross_weight": 83, + "sell_upwards_trend_adx_strong_down_weight": 26, + "sell_upwards_trend_bollinger_bands_weight": 86, + "sell_upwards_trend_ema_long_death_cross_weight": 16, + "sell_upwards_trend_ema_short_death_cross_weight": 11, + "sell_upwards_trend_macd_weight": 53, + "sell_upwards_trend_rsi_weight": 23, + "sell_upwards_trend_sma_long_death_cross_weight": 67, + "sell_upwards_trend_sma_short_death_cross_weight": 12, + "sell_upwards_trend_vwap_cross_weight": 51 + } + + # ROI table: + minimal_roi = { + "0": 0.614, + "5": 0.59861, + "10": 0.58321, + "15": 0.56782, + "20": 0.55243, + "25": 0.53704, + "30": 0.52164, + "35": 0.50625, + "40": 0.49086, + "45": 0.47546, + "50": 0.46007, + "55": 0.44468, + "60": 0.42929, + "65": 0.41389, + "70": 0.3985, + "75": 0.38311, + "80": 0.36771, + "85": 0.35232, + "90": 0.33693, + "95": 0.32154, + "100": 0.30614, + "105": 0.29075, + "110": 0.27536, + "115": 0.25996, + "120": 0.24457, + "125": 0.22918, + "130": 0.21379, + "135": 0.19839, + "140": 0.183, + "145": 0.17731, + "150": 0.17162, + "155": 0.16593, + "160": 0.16025, + "165": 0.15456, + "170": 0.14887, + "175": 0.14318, + "180": 0.13749, + "185": 0.1318, + "190": 0.12612, + "195": 0.12043, + "200": 0.11474, + "205": 0.10905, + "210": 0.10336, + "215": 0.09767, + "220": 0.09199, + "225": 0.0863, + "230": 0.08061, + "235": 0.07492, + "240": 0.06923, + "245": 0.06354, + "250": 0.05786, + "255": 0.05217, + "260": 0.04648, + "265": 0.04079, + "270": 0.0351, + "275": 0.02941, + "280": 0.02581, + "285": 0.02535, + "290": 0.02488, + "295": 0.02441, + "300": 0.02394, + "305": 0.02347, + "310": 0.02301, + "315": 0.02254, + "320": 0.02207, + "325": 0.0216, + "330": 0.02114, + "335": 0.02067, + "340": 0.0202, + "345": 0.01973, + "350": 0.01927, + "355": 0.0188, + "360": 0.01833, + "365": 0.01786, + "370": 0.0174, + "375": 0.01693, + "380": 0.01646, + "385": 0.01599, + "390": 0.01553, + "395": 0.01506, + "400": 0.01459, + "405": 0.01412, + "410": 0.01365, + "415": 0.01319, + "420": 0.01272, + "425": 0.01225, + "430": 0.01178, + "435": 0.01132, + "440": 0.01085, + "445": 0.01038, + "450": 0.00991, + "455": 0.00945, + "460": 0.00898, + "465": 0.00851, + "470": 0.00804, + "475": 0.00758, + "480": 0.00711, + "485": 0.00664, + "490": 0.00617, + "495": 0.00571, + "500": 0.00524, + "505": 0.00477, + "510": 0.0043, + "515": 0.00383, + "520": 0.00337, + "525": 0.0029, + "530": 0.00243, + "535": 0.00196, + "540": 0.0015, + "545": 0.00103, + "550": 0.00056, + "555": 9e-05, + "560": 0 + } + + # Stoploss: + stoploss = -0.316 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults9_Pt1-19-05-2021_sell_profit_only_false_usdt.log b/Some Test Results/v0.10.0/HyperOptResults9_Pt1-19-05-2021_sell_profit_only_false_usdt.log new file mode 100644 index 000000000..b5edae54a --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults9_Pt1-19-05-2021_sell_profit_only_false_usdt.log @@ -0,0 +1,419 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +=============================================================================================================================================================================================================== +INFO - Using optimizer random state: 48811 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+--------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+--------------| +| * Best | 1/1000 | 431 | 263 7 161 | 0.14% | 26.773 USDT (5.35%) | 0 days 06:58:00 | -3,626.88142 | +| * Best | 4/1000 | 156 | 78 1 77 | 0.51% | 35.774 USDT (7.15%) | 0 days 05:37:00 | -3,970.91470 | +| * Best | 5/1000 | 473 | 262 33 178 | 0.66% | 140.337 USDT (28.07%) | 0 days 11:57:00 | -17,257.01790 | +| * Best | 6/1000 | 520 | 242 40 238 | 1.35% | 316.081 USDT (63.22%) | 0 days 13:15:00 | -32,656.01710 | +| * Best | 9/1000 | 509 | 292 25 192 | 1.18% | 270.265 USDT (54.05%) | 0 days 14:04:00 | -34,419.80938 | +| * Best | 12/1000 | 393 | 181 33 179 | 2.02% | 357.336 USDT (71.47%) | 0 days 23:10:00 | -36,535.54881 | +| * Best | 15/1000 | 731 | 338 15 378 | 1.49% | 490.629 USDT (98.13%) | 0 days 18:03:00 | -50,362.34531 | +| Best | 35/1000 | 540 | 311 47 182 | 2.19% | 532.603 USDT (106.52%) | 0 days 23:27:00 | -68,096.27705 | +| Best | 72/1000 | 1894 | 1407 29 458 | 0.96% | 816.761 USDT (163.35%) | 0 days 06:57:00 | -134,698.42724 | +| Best | 124/1000 | 1089 | 622 34 433 | 2.20% | 1078.815 USDT (215.76%) | 0 days 12:19:00 | -136,792.65952 | +| Best | 133/1000 | 982 | 601 11 370 | 2.46% | 1089.742 USDT (217.95%) | 0 days 14:16:00 | -148,060.77567 | +| Best | 138/1000 | 1173 | 785 3 385 | 2.00% | 1057.352 USDT (211.47%) | 0 days 10:43:00 | -157,088.51983 | +| Best | 140/1000 | 1790 | 1346 9 435 | 1.39% | 1123.972 USDT (224.79%) | 0 days 07:06:00 | -187,629.45188 | +| Best | 146/1000 | 1641 | 1164 3 474 | 1.74% | 1282.756 USDT (256.55%) | 0 days 08:16:00 | -201,995.57821 | +| Best | 162/1000 | 1763 | 1368 2 393 | 1.64% | 1300.350 USDT (260.07%) | 0 days 04:03:00 | -223,999.65434 | +| Best | 170/1000 | 1814 | 1377 6 431 | 1.94% | 1588.798 USDT (317.76%) | 0 days 07:15:00 | -267,743.43790 | +| Best | 193/1000 | 3674 | 3040 2 632 | 1.10% | 1820.436 USDT (364.09%) | 0 days 03:12:00 | -334,397.67077 | +| Best | 382/1000 | 2831 | 2408 14 409 | 1.46% | 1864.649 USDT (372.93%) | 0 days 03:46:00 | -352,100.79752 | +| Best | 475/1000 | 3666 | 2985 7 674 | 1.20% | 1974.334 USDT (394.87%) | 0 days 03:15:00 | -356,882.95237 | +| Best | 516/1000 | 3500 | 3001 30 469 | 1.29% | 2033.962 USDT (406.79%) | 0 days 03:34:00 | -387,163.22332 | + +Elapsed Time: 2:11:58 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-19_20-11-11.fthypt'. + +Best result: + + 516/1000: + 3500 trades. + 3001/30/469 Wins/Draws/Losses. + Avg profit 1.29%. + Median profit 1.09%. + Total profit 2033.96164860 USDT ( 406.79Σ%). + Avg duration 3:34:00 min. + Objective: -387163.22332 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 77, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 478, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "buy__upwards_trend_total_signal_needed": 32, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "buy_downwards_trend_adx_strong_up_weight": 33, + "buy_downwards_trend_bollinger_bands_weight": 91, + "buy_downwards_trend_ema_long_golden_cross_weight": 29, + "buy_downwards_trend_ema_short_golden_cross_weight": 20, + "buy_downwards_trend_macd_weight": 57, + "buy_downwards_trend_rsi_weight": 81, + "buy_downwards_trend_sma_long_golden_cross_weight": 2, + "buy_downwards_trend_sma_short_golden_cross_weight": 99, + "buy_downwards_trend_vwap_cross_weight": 26, + "buy_sideways_trend_adx_strong_up_weight": 40, + "buy_sideways_trend_bollinger_bands_weight": 73, + "buy_sideways_trend_ema_long_golden_cross_weight": 20, + "buy_sideways_trend_ema_short_golden_cross_weight": 68, + "buy_sideways_trend_macd_weight": 58, + "buy_sideways_trend_rsi_weight": 99, + "buy_sideways_trend_sma_long_golden_cross_weight": 40, + "buy_sideways_trend_sma_short_golden_cross_weight": 51, + "buy_sideways_trend_vwap_cross_weight": 15, + "buy_upwards_trend_adx_strong_up_weight": 33, + "buy_upwards_trend_bollinger_bands_weight": 17, + "buy_upwards_trend_ema_long_golden_cross_weight": 3, + "buy_upwards_trend_ema_short_golden_cross_weight": 51, + "buy_upwards_trend_macd_weight": 52, + "buy_upwards_trend_rsi_weight": 77, + "buy_upwards_trend_sma_long_golden_cross_weight": 18, + "buy_upwards_trend_sma_short_golden_cross_weight": 31, + "buy_upwards_trend_vwap_cross_weight": 50 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 60, + "sell___unclogger_minimal_losing_trades_open": 5, + "sell___unclogger_open_trades_losing_percentage_needed": 13, + "sell___unclogger_trend_lookback_candles_window": 41, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 32, + "sell__downwards_trend_total_signal_needed": 672, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "sell__sideways_trend_total_signal_needed": 793, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "sell__upwards_trend_total_signal_needed": 836, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "sell_downwards_trend_adx_strong_down_weight": 22, + "sell_downwards_trend_bollinger_bands_weight": 75, + "sell_downwards_trend_ema_long_death_cross_weight": 2, + "sell_downwards_trend_ema_short_death_cross_weight": 41, + "sell_downwards_trend_macd_weight": 77, + "sell_downwards_trend_rsi_weight": 43, + "sell_downwards_trend_sma_long_death_cross_weight": 75, + "sell_downwards_trend_sma_short_death_cross_weight": 49, + "sell_downwards_trend_vwap_cross_weight": 35, + "sell_sideways_trend_adx_strong_down_weight": 65, + "sell_sideways_trend_bollinger_bands_weight": 98, + "sell_sideways_trend_ema_long_death_cross_weight": 46, + "sell_sideways_trend_ema_short_death_cross_weight": 75, + "sell_sideways_trend_macd_weight": 32, + "sell_sideways_trend_rsi_weight": 65, + "sell_sideways_trend_sma_long_death_cross_weight": 73, + "sell_sideways_trend_sma_short_death_cross_weight": 21, + "sell_sideways_trend_vwap_cross_weight": 5, + "sell_upwards_trend_adx_strong_down_weight": 54, + "sell_upwards_trend_bollinger_bands_weight": 51, + "sell_upwards_trend_ema_long_death_cross_weight": 38, + "sell_upwards_trend_ema_short_death_cross_weight": 83, + "sell_upwards_trend_macd_weight": 39, + "sell_upwards_trend_rsi_weight": 2, + "sell_upwards_trend_sma_long_death_cross_weight": 20, + "sell_upwards_trend_sma_short_death_cross_weight": 73, + "sell_upwards_trend_vwap_cross_weight": 93 + } + + # ROI table: + minimal_roi = { + "0": 0.516, + "5": 0.49966, + "10": 0.48333, + "15": 0.46699, + "20": 0.45066, + "25": 0.43432, + "30": 0.41798, + "35": 0.40165, + "40": 0.38531, + "45": 0.36898, + "50": 0.35264, + "55": 0.33631, + "60": 0.31997, + "65": 0.30363, + "70": 0.2873, + "75": 0.27096, + "80": 0.25463, + "85": 0.23829, + "90": 0.22195, + "95": 0.20562, + "100": 0.18928, + "105": 0.17295, + "110": 0.15661, + "115": 0.14027, + "120": 0.12394, + "125": 0.1076, + "130": 0.09127, + "135": 0.08758, + "140": 0.08705, + "145": 0.08652, + "150": 0.08599, + "155": 0.08546, + "160": 0.08493, + "165": 0.0844, + "170": 0.08387, + "175": 0.08334, + "180": 0.08281, + "185": 0.08228, + "190": 0.08175, + "195": 0.08122, + "200": 0.08069, + "205": 0.08016, + "210": 0.07963, + "215": 0.0791, + "220": 0.07857, + "225": 0.07804, + "230": 0.07751, + "235": 0.07698, + "240": 0.07645, + "245": 0.07592, + "250": 0.07539, + "255": 0.07486, + "260": 0.07433, + "265": 0.0738, + "270": 0.07327, + "275": 0.07274, + "280": 0.07221, + "285": 0.07168, + "290": 0.07115, + "295": 0.07062, + "300": 0.07009, + "305": 0.06956, + "310": 0.06903, + "315": 0.0685, + "320": 0.06797, + "325": 0.06744, + "330": 0.06691, + "335": 0.06638, + "340": 0.06585, + "345": 0.06532, + "350": 0.06479, + "355": 0.06426, + "360": 0.06373, + "365": 0.0632, + "370": 0.06267, + "375": 0.06214, + "380": 0.06161, + "385": 0.06108, + "390": 0.06055, + "395": 0.06002, + "400": 0.05949, + "405": 0.05896, + "410": 0.05843, + "415": 0.0579, + "420": 0.05737, + "425": 0.05684, + "430": 0.05631, + "435": 0.05578, + "440": 0.05525, + "445": 0.05472, + "450": 0.05419, + "455": 0.05366, + "460": 0.05313, + "465": 0.0526, + "470": 0.05207, + "475": 0.05154, + "480": 0.05101, + "485": 0.05048, + "490": 0.04995, + "495": 0.04942, + "500": 0.04894, + "505": 0.04866, + "510": 0.04837, + "515": 0.04808, + "520": 0.04779, + "525": 0.04751, + "530": 0.04722, + "535": 0.04693, + "540": 0.04664, + "545": 0.04636, + "550": 0.04607, + "555": 0.04578, + "560": 0.0455, + "565": 0.04521, + "570": 0.04492, + "575": 0.04463, + "580": 0.04435, + "585": 0.04406, + "590": 0.04377, + "595": 0.04349, + "600": 0.0432, + "605": 0.04291, + "610": 0.04262, + "615": 0.04234, + "620": 0.04205, + "625": 0.04176, + "630": 0.04147, + "635": 0.04119, + "640": 0.0409, + "645": 0.04061, + "650": 0.04033, + "655": 0.04004, + "660": 0.03975, + "665": 0.03946, + "670": 0.03918, + "675": 0.03889, + "680": 0.0386, + "685": 0.03832, + "690": 0.03803, + "695": 0.03774, + "700": 0.03745, + "705": 0.03717, + "710": 0.03688, + "715": 0.03659, + "720": 0.0363, + "725": 0.03602, + "730": 0.03573, + "735": 0.03544, + "740": 0.03516, + "745": 0.03487, + "750": 0.03458, + "755": 0.03429, + "760": 0.03401, + "765": 0.03372, + "770": 0.03343, + "775": 0.03315, + "780": 0.03286, + "785": 0.03257, + "790": 0.03228, + "795": 0.032, + "800": 0.03171, + "805": 0.03142, + "810": 0.03113, + "815": 0.03085, + "820": 0.03056, + "825": 0.03027, + "830": 0.02999, + "835": 0.0297, + "840": 0.02941, + "845": 0.02912, + "850": 0.02884, + "855": 0.02855, + "860": 0.02826, + "865": 0.02798, + "870": 0.02769, + "875": 0.0274, + "880": 0.02711, + "885": 0.02683, + "890": 0.02654, + "895": 0.02625, + "900": 0.02596, + "905": 0.02568, + "910": 0.02539, + "915": 0.0251, + "920": 0.02482, + "925": 0.02453, + "930": 0.02424, + "935": 0.02395, + "940": 0.02367, + "945": 0.02338, + "950": 0.02309, + "955": 0.02281, + "960": 0.02252, + "965": 0.02223, + "970": 0.02194, + "975": 0.02166, + "980": 0.02137, + "985": 0.02108, + "990": 0.02079, + "995": 0.02051, + "1000": 0.02022, + "1005": 0.01993, + "1010": 0.01965, + "1015": 0.01936, + "1020": 0.01907, + "1025": 0.01878, + "1030": 0.0185, + "1035": 0.01821, + "1040": 0.01792, + "1045": 0.01764, + "1050": 0.01735, + "1055": 0.01706, + "1060": 0.01677, + "1065": 0.01649, + "1070": 0.0162, + "1075": 0.01591, + "1080": 0.01562, + "1085": 0.01534, + "1090": 0.01505, + "1095": 0.01476, + "1100": 0.01448, + "1105": 0.01419, + "1110": 0.0139, + "1115": 0.01361, + "1120": 0.01333, + "1125": 0.01304, + "1130": 0.01275, + "1135": 0.01247, + "1140": 0.01218, + "1145": 0.01189, + "1150": 0.0116, + "1155": 0.01132, + "1160": 0.01103, + "1165": 0.01074, + "1170": 0.01045, + "1175": 0.01017, + "1180": 0.00988, + "1185": 0.00959, + "1190": 0.00931, + "1195": 0.00902, + "1200": 0.00873, + "1205": 0.00844, + "1210": 0.00816, + "1215": 0.00787, + "1220": 0.00758, + "1225": 0.0073, + "1230": 0.00701, + "1235": 0.00672, + "1240": 0.00643, + "1245": 0.00615, + "1250": 0.00586, + "1255": 0.00557, + "1260": 0.00528, + "1265": 0.005, + "1270": 0.00471, + "1275": 0.00442, + "1280": 0.00414, + "1285": 0.00385, + "1290": 0.00356, + "1295": 0.00327, + "1300": 0.00299, + "1305": 0.0027, + "1310": 0.00241, + "1315": 0.00213, + "1320": 0.00184, + "1325": 0.00155, + "1330": 0.00126, + "1335": 0.00098, + "1340": 0.00069, + "1345": 0.0004, + "1350": 0.00011, + "1355": 0 + } + + # Stoploss: + stoploss = -0.164 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.012 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/user_data/config-btc.json b/user_data/config-btc.json index 22acd5c41..a70b3d04d 100644 --- a/user_data/config-btc.json +++ b/user_data/config-btc.json @@ -1,73 +1,154 @@ { - "dry_run": true, - "dry_run_wallet": 0.01136, - "max_open_trades": -1, - "stake_currency": "BTC", - "stake_amount": 0.001, - "tradable_balance_ratio": 1.00, - "fiat_display_currency": "EUR", - "cancel_open_orders_on_exit": false, - "unfilledtimeout": { - "buy": 10, - "sell": 30 + "dry_run": true, + "dry_run_wallet": 0.01136, + "max_open_trades": -1, + "stake_currency": "BTC", + "stake_amount": 0.001, + "tradable_balance_ratio": 1.00, + "fiat_display_currency": "EUR", + "cancel_open_orders_on_exit": false, + "unfilledtimeout": { + "buy": 10, + "sell": 30 + }, + "bid_strategy": { + "price_side": "bid", + "ask_last_balance": 0.0, + "use_order_book": true, + "order_book_top": 1, + "check_depth_of_market": { + "enabled": false, + "bids_to_ask_delta": 0.95 + } + }, + "ask_strategy": { + "price_side": "ask", + "use_order_book": true, + "order_book_min": 1, + "order_book_max": 1, + "use_sell_signal": true, + "sell_profit_only": true, + "ignore_roi_if_buy_signal": true + }, + "pairlists": [ + { + "method": "StaticPairList" + } + ], + "_pairlists": [ + { + "method": "VolumePairList", + "number_assets": 100, + "sort_key": "quoteVolume", + "refresh_period": 300 + }, + { + "method": "PerformanceFilter" }, - "bid_strategy": { - "price_side": "bid", - "ask_last_balance": 0.0, - "use_order_book": true, - "order_book_top": 1, - "check_depth_of_market": { - "enabled": false, - "bids_to_ask_delta": 0.95 - } + { + "method": "RangeStabilityFilter", + "lookback_days": 10, + "min_rate_of_change": 0.01, + "refresh_period": 1440 + } + ], + "exchange": { + "ccxt_config": { + "enableRateLimit": true }, - "ask_strategy": { - "price_side": "ask", - "use_order_book": true, - "order_book_min": 1, - "order_book_max": 1, - "use_sell_signal": true, - "sell_profit_only": false, - "ignore_roi_if_buy_signal": true + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 200 }, - "pairlists": [{ - "method": "StaticPairList" - }], - "_pairlists": [ - { - "method": "VolumePairList", - "number_assets": 100, - "sort_key": "quoteVolume", - "refresh_period": 300 - }, - { - "method": "PerformanceFilter" - }, - { - "method": "RangeStabilityFilter", - "lookback_days": 10, - "min_rate_of_change": 0.01, - "refresh_period": 1440 - } + "pair_whitelist": [ + "AAVE/BTC", + "ADA/BTC", + "ALGO/BTC", + "ANKR/BTC", + "ATOM/BTC", + "AUDIO/BTC", + "AVAX/BTC", + "BAT/BTC", + "BCH/BTC", + "BNB/BTC", + "CAKE/BTC", + "CHZ/BTC", + "COTI/BTC", + "DOT/BTC", + "ENJ/BTC", + "EOS/BTC", + "ETC/BTC", + "ETH/BTC", + "FIL/BTC", + "HBAR/BTC", + "LINK/BTC", + "LTC/BTC", + "LUNA/BTC", + "MANA/BTC", + "MATIC/BTC", + "MITH/BTC", + "MTL/BTC", + "NEO/BTC", + "NKN/BTC", + "OGN/BTC", + "OMG/BTC", + "ONE/BTC", + "ONT/BTC", + "QTUM/BTC", + "RVN/BTC", + "SOL/BTC", + "STORJ/BTC", + "SXP/BTC", + "TFUEL/BTC", + "THETA/BTC", + "TRX/BTC", + "UNI/BTC", + "VET/BTC", + "WRX/BTC", + "XEM/BTC", + "XLM/BTC", + "XMR/BTC", + "XRP/BTC", + "XTZ/BTC", + "ZEC/BTC" ], - "edge": { - "enabled": false, - "process_throttle_secs": 3600, - "calculate_since_number_of_days": 7, - "allowed_risk": 0.01, - "stoploss_range_min": -0.01, - "stoploss_range_max": -0.1, - "stoploss_range_step": -0.01, - "minimum_winrate": 0.60, - "minimum_expectancy": 0.20, - "min_trade_number": 10, - "max_trade_duration_minute": 1440, - "remove_pumps": false - }, - "bot_name": "Freqtrade - MoniGoMani v0.10.0", - "initial_state": "running", - "forcebuy_enable": false, - "internals": { - "process_throttle_secs": 5 - } -} + "pair_blacklist": [ + ".*DOWN/BTC", + ".*UP/BTC", + ".*DOWN/ETH", + ".*UP/ETH", + ".*DOWN/USDT", + ".*UP/USDT", + ".*DOWN/BNB", + ".*UP/BNB", + ".*/BNB", + "BNB/.*", + ".*_PREMIUM", + ".*PERP", + ".*BULL/.*", + ".*BEAR/.*", + ".*BULL2021/.*", + ".*BEAR2021/.*" + ] + }, + "edge": { + "enabled": false, + "process_throttle_secs": 3600, + "calculate_since_number_of_days": 7, + "allowed_risk": 0.01, + "stoploss_range_min": -0.01, + "stoploss_range_max": -0.1, + "stoploss_range_step": -0.01, + "minimum_winrate": 0.60, + "minimum_expectancy": 0.20, + "min_trade_number": 10, + "max_trade_duration_minute": 1440, + "remove_pumps": false + }, + "bot_name": "Freqtrade - MoniGoMani v0.10.0", + "initial_state": "running", + "forcebuy_enable": false, + "internals": { + "process_throttle_secs": 5 + } +} \ No newline at end of file diff --git a/user_data/config-private.json b/user_data/config-private.json index d6f9b4796..83c0e7005 100644 --- a/user_data/config-private.json +++ b/user_data/config-private.json @@ -2,82 +2,7 @@ "exchange": { "name": "binance", "key": "", - "secret": "", - "ccxt_config": {"enableRateLimit": true}, - "ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 200 - }, - "pair_whitelist": [ - "AAVE/BTC", - "ADA/BTC", - "ALGO/BTC", - "ANKR/BTC", - "ATOM/BTC", - "AUDIO/BTC", - "AVAX/BTC", - "BAT/BTC", - "BCH/BTC", - "BNB/BTC", - "CAKE/BTC", - "CHZ/BTC", - "COTI/BTC", - "DOT/BTC", - "ENJ/BTC", - "EOS/BTC", - "ETC/BTC", - "ETH/BTC", - "FIL/BTC", - "HBAR/BTC", - "LINK/BTC", - "LTC/BTC", - "LUNA/BTC", - "MANA/BTC", - "MATIC/BTC", - "MITH/BTC", - "MTL/BTC", - "NEO/BTC", - "NKN/BTC", - "OGN/BTC", - "OMG/BTC", - "ONE/BTC", - "ONT/BTC", - "QTUM/BTC", - "RVN/BTC", - "SOL/BTC", - "STORJ/BTC", - "SXP/BTC", - "TFUEL/BTC", - "THETA/BTC", - "TRX/BTC", - "UNI/BTC", - "VET/BTC", - "WRX/BTC", - "XEM/BTC", - "XLM/BTC", - "XMR/BTC", - "XRP/BTC", - "XTZ/BTC", - "ZEC/BTC" - ], - "pair_blacklist": [ - ".*DOWN/BTC", - ".*UP/BTC", - ".*DOWN/ETH", - ".*UP/ETH", - ".*DOWN/USDT", - ".*UP/USDT", - ".*DOWN/BNB", - ".*UP/BNB", - ".*/BNB", - "BNB/.*", - ".*_PREMIUM", - ".*PERP", - ".*BULL/.*", - ".*BEAR/.*", - ".*BULL2021/.*", - ".*BEAR2021/.*" - ] + "secret": "" }, "telegram": { "enabled": false, diff --git a/user_data/config-usdt.json b/user_data/config-usdt.json new file mode 100644 index 000000000..b40cd952f --- /dev/null +++ b/user_data/config-usdt.json @@ -0,0 +1,115 @@ +{ + "dry_run": true, + "dry_run_wallet": 500, + "max_open_trades": -1, + "stake_currency": "USDT", + "stake_amount": 45, + "tradable_balance_ratio": 1.00, + "fiat_display_currency": "EUR", + "cancel_open_orders_on_exit": false, + "unfilledtimeout": { + "buy": 10, + "sell": 30 + }, + "bid_strategy": { + "price_side": "bid", + "ask_last_balance": 0.0, + "use_order_book": true, + "order_book_top": 1, + "check_depth_of_market": { + "enabled": false, + "bids_to_ask_delta": 0.95 + } + }, + "ask_strategy": { + "price_side": "ask", + "use_order_book": true, + "order_book_min": 1, + "order_book_max": 1, + "use_sell_signal": true, + "sell_profit_only": true, + "ignore_roi_if_buy_signal": true + }, + "pairlists": [{ + "method": "StaticPairList" + }], + "_pairlists": [ + { + "method": "VolumePairList", + "number_assets": 100, + "sort_key": "quoteVolume", + "refresh_period": 300 + }, + { + "method": "PerformanceFilter" + }, + { + "method": "RangeStabilityFilter", + "lookback_days": 10, + "min_rate_of_change": 0.01, + "refresh_period": 1440 + } + ], + "exchange": { + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 200 + }, + "pair_whitelist": [ + "BTC/USDT", + "ETH/USDT", + "XRP/USDT", + "MATIC/USDT", + "DOGE/USDT", + "ADA/USDT", + "BUSD/USDT", + "LTC/USDT", + "DOT/USDT", + "SOL/USDT", + "XVS/USDT", + "EOS/USDT", + "ETC/USDT", + "AAVE/USDT", + "LINK/USDT" + ], + "pair_blacklist": [ + ".*DOWN/BTC", + ".*UP/BTC", + ".*DOWN/ETH", + ".*UP/ETH", + ".*DOWN/USDT", + ".*UP/USDT", + ".*DOWN/BNB", + ".*UP/BNB", + ".*/BNB", + "BNB/.*", + ".*_PREMIUM", + ".*PERP", + ".*BULL/.*", + ".*BEAR/.*", + ".*BULL2021/.*", + ".*BEAR2021/.*" + ] + }, + "edge": { + "enabled": false, + "process_throttle_secs": 3600, + "calculate_since_number_of_days": 7, + "allowed_risk": 0.01, + "stoploss_range_min": -0.01, + "stoploss_range_max": -0.1, + "stoploss_range_step": -0.01, + "minimum_winrate": 0.60, + "minimum_expectancy": 0.20, + "min_trade_number": 10, + "max_trade_duration_minute": 1440, + "remove_pumps": false + }, + "bot_name": "Freqtrade - MoniGoMani v0.10.0", + "initial_state": "running", + "forcebuy_enable": false, + "internals": { + "process_throttle_secs": 5 + } +} diff --git a/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json b/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json new file mode 100644 index 000000000..8adf61828 --- /dev/null +++ b/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json @@ -0,0 +1,21 @@ +{ + "exchange": { + "pair_whitelist": [ + "BTC/USDT", + "ETH/USDT", + "XRP/USDT", + "MATIC/USDT", + "DOGE/USDT", + "ADA/USDT", + "BUSD/USDT", + "LTC/USDT", + "DOT/USDT", + "SOL/USDT", + "XVS/USDT", + "EOS/USDT", + "ETC/USDT", + "AAVE/USDT", + "LINK/USDT" + ] + } +} diff --git a/user_data/strategies/MoniGoManiHyperStrategy.py b/user_data/strategies/MoniGoManiHyperStrategy.py index f03827595..25b19a334 100644 --- a/user_data/strategies/MoniGoManiHyperStrategy.py +++ b/user_data/strategies/MoniGoManiHyperStrategy.py @@ -78,39 +78,39 @@ class MoniGoManiHyperStrategy(IStrategy): "buy___trades_when_downwards": True, # value loaded from strategy "buy___trades_when_sideways": False, # value loaded from strategy "buy___trades_when_upwards": True, # value loaded from strategy - "buy__downwards_trend_total_signal_needed": 281, - "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, # value loaded from strategy - "buy__sideways_trend_total_signal_needed": 859, - "buy__sideways_trend_total_signal_needed_candles_lookback_window": 3, # value loaded from strategy - "buy__upwards_trend_total_signal_needed": 268, - "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, # value loaded from strategy - "buy_downwards_trend_adx_strong_up_weight": 100, # value loaded from strategy - "buy_downwards_trend_bollinger_bands_weight": 100, # value loaded from strategy - "buy_downwards_trend_ema_long_golden_cross_weight": 55, - "buy_downwards_trend_ema_short_golden_cross_weight": 87, - "buy_downwards_trend_macd_weight": 70, - "buy_downwards_trend_rsi_weight": 99, - "buy_downwards_trend_sma_long_golden_cross_weight": 100, # value loaded from strategy - "buy_downwards_trend_sma_short_golden_cross_weight": 29, - "buy_downwards_trend_vwap_cross_weight": 66, - "buy_sideways_trend_adx_strong_up_weight": 75, - "buy_sideways_trend_bollinger_bands_weight": 64, - "buy_sideways_trend_ema_long_golden_cross_weight": 50, - "buy_sideways_trend_ema_short_golden_cross_weight": 100, # value loaded from strategy - "buy_sideways_trend_macd_weight": 64, - "buy_sideways_trend_rsi_weight": 0, # value loaded from strategy - "buy_sideways_trend_sma_long_golden_cross_weight": 37, - "buy_sideways_trend_sma_short_golden_cross_weight": 100, # value loaded from strategy - "buy_sideways_trend_vwap_cross_weight": 81, - "buy_upwards_trend_adx_strong_up_weight": 73, - "buy_upwards_trend_bollinger_bands_weight": 100, # value loaded from strategy - "buy_upwards_trend_ema_long_golden_cross_weight": 49, - "buy_upwards_trend_ema_short_golden_cross_weight": 30, - "buy_upwards_trend_macd_weight": 83, - "buy_upwards_trend_rsi_weight": 61, - "buy_upwards_trend_sma_long_golden_cross_weight": 80, - "buy_upwards_trend_sma_short_golden_cross_weight": 100, # value loaded from strategy - "buy_upwards_trend_vwap_cross_weight": 43 + "buy__downwards_trend_total_signal_needed": 109, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 809, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "buy__upwards_trend_total_signal_needed": 285, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 68, + "buy_downwards_trend_bollinger_bands_weight": 73, + "buy_downwards_trend_ema_long_golden_cross_weight": 10, + "buy_downwards_trend_ema_short_golden_cross_weight": 81, + "buy_downwards_trend_macd_weight": 33, + "buy_downwards_trend_rsi_weight": 33, + "buy_downwards_trend_sma_long_golden_cross_weight": 42, + "buy_downwards_trend_sma_short_golden_cross_weight": 84, + "buy_downwards_trend_vwap_cross_weight": 21, + "buy_sideways_trend_adx_strong_up_weight": 83, + "buy_sideways_trend_bollinger_bands_weight": 75, + "buy_sideways_trend_ema_long_golden_cross_weight": 81, + "buy_sideways_trend_ema_short_golden_cross_weight": 46, + "buy_sideways_trend_macd_weight": 67, + "buy_sideways_trend_rsi_weight": 4, + "buy_sideways_trend_sma_long_golden_cross_weight": 8, + "buy_sideways_trend_sma_short_golden_cross_weight": 83, + "buy_sideways_trend_vwap_cross_weight": 26, + "buy_upwards_trend_adx_strong_up_weight": 96, + "buy_upwards_trend_bollinger_bands_weight": 49, + "buy_upwards_trend_ema_long_golden_cross_weight": 66, + "buy_upwards_trend_ema_short_golden_cross_weight": 32, + "buy_upwards_trend_macd_weight": 69, + "buy_upwards_trend_rsi_weight": 37, + "buy_upwards_trend_sma_long_golden_cross_weight": 3, + "buy_upwards_trend_sma_short_golden_cross_weight": 97, + "buy_upwards_trend_vwap_cross_weight": 53 } # Sell hyperspace params: @@ -119,331 +119,325 @@ class MoniGoManiHyperStrategy(IStrategy): "sell___trades_when_sideways": False, # value loaded from strategy "sell___trades_when_upwards": True, # value loaded from strategy "sell___unclogger_enabled": True, # value loaded from strategy - "sell___unclogger_minimal_losing_trade_duration_minutes": 14, - "sell___unclogger_minimal_losing_trades_open": 1, - "sell___unclogger_open_trades_losing_percentage_needed": 20, - "sell___unclogger_trend_lookback_candles_window": 48, - "sell___unclogger_trend_lookback_candles_window_percentage_needed": 42, + "sell___unclogger_minimal_losing_trade_duration_minutes": 19, + "sell___unclogger_minimal_losing_trades_open": 4, + "sell___unclogger_open_trades_losing_percentage_needed": 31, + "sell___unclogger_trend_lookback_candles_window": 51, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 35, "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy - "sell__downwards_trend_total_signal_needed": 252, - "sell__downwards_trend_total_signal_needed_candles_lookback_window": 1, # value loaded from strategy - "sell__sideways_trend_total_signal_needed": 187, - "sell__sideways_trend_total_signal_needed_candles_lookback_window": 3, # value loaded from strategy - "sell__upwards_trend_total_signal_needed": 647, - "sell__upwards_trend_total_signal_needed_candles_lookback_window": 3, # value loaded from strategy - "sell_downwards_trend_adx_strong_down_weight": 4, - "sell_downwards_trend_bollinger_bands_weight": 65, - "sell_downwards_trend_ema_long_death_cross_weight": 0, # value loaded from strategy - "sell_downwards_trend_ema_short_death_cross_weight": 45, - "sell_downwards_trend_macd_weight": 68, - "sell_downwards_trend_rsi_weight": 50, - "sell_downwards_trend_sma_long_death_cross_weight": 44, - "sell_downwards_trend_sma_short_death_cross_weight": 72, - "sell_downwards_trend_vwap_cross_weight": 5, - "sell_sideways_trend_adx_strong_down_weight": 100, # value loaded from strategy - "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy - "sell_sideways_trend_ema_long_death_cross_weight": 44, - "sell_sideways_trend_ema_short_death_cross_weight": 23, - "sell_sideways_trend_macd_weight": 34, - "sell_sideways_trend_rsi_weight": 60, - "sell_sideways_trend_sma_long_death_cross_weight": 100, # value loaded from strategy - "sell_sideways_trend_sma_short_death_cross_weight": 44, - "sell_sideways_trend_vwap_cross_weight": 49, - "sell_upwards_trend_adx_strong_down_weight": 14, - "sell_upwards_trend_bollinger_bands_weight": 19, - "sell_upwards_trend_ema_long_death_cross_weight": 80, - "sell_upwards_trend_ema_short_death_cross_weight": 0, - "sell_upwards_trend_macd_weight": 97, - "sell_upwards_trend_rsi_weight": 62, - "sell_upwards_trend_sma_long_death_cross_weight": 19, - "sell_upwards_trend_sma_short_death_cross_weight": 18, - "sell_upwards_trend_vwap_cross_weight": 78 + "sell__downwards_trend_total_signal_needed": 565, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 638, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "sell__upwards_trend_total_signal_needed": 590, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 63, + "sell_downwards_trend_bollinger_bands_weight": 5, + "sell_downwards_trend_ema_long_death_cross_weight": 14, + "sell_downwards_trend_ema_short_death_cross_weight": 6, + "sell_downwards_trend_macd_weight": 92, + "sell_downwards_trend_rsi_weight": 98, + "sell_downwards_trend_sma_long_death_cross_weight": 91, + "sell_downwards_trend_sma_short_death_cross_weight": 86, + "sell_downwards_trend_vwap_cross_weight": 54, + "sell_sideways_trend_adx_strong_down_weight": 69, + "sell_sideways_trend_bollinger_bands_weight": 57, + "sell_sideways_trend_ema_long_death_cross_weight": 78, + "sell_sideways_trend_ema_short_death_cross_weight": 72, + "sell_sideways_trend_macd_weight": 0, + "sell_sideways_trend_rsi_weight": 41, + "sell_sideways_trend_sma_long_death_cross_weight": 76, + "sell_sideways_trend_sma_short_death_cross_weight": 49, + "sell_sideways_trend_vwap_cross_weight": 1, + "sell_upwards_trend_adx_strong_down_weight": 72, + "sell_upwards_trend_bollinger_bands_weight": 38, + "sell_upwards_trend_ema_long_death_cross_weight": 48, + "sell_upwards_trend_ema_short_death_cross_weight": 65, + "sell_upwards_trend_macd_weight": 24, + "sell_upwards_trend_rsi_weight": 58, + "sell_upwards_trend_sma_long_death_cross_weight": 65, + "sell_upwards_trend_sma_short_death_cross_weight": 99, + "sell_upwards_trend_vwap_cross_weight": 37 } # ROI table: minimal_roi = { - "0": 0.364, - "5": 0.36208, - "10": 0.36016, - "15": 0.35824, - "20": 0.35632, - "25": 0.3544, - "30": 0.35248, - "35": 0.35056, - "40": 0.34864, - "45": 0.34672, - "50": 0.3448, - "55": 0.34288, - "60": 0.34096, - "65": 0.33904, - "70": 0.33712, - "75": 0.3352, - "80": 0.33328, - "85": 0.33136, - "90": 0.32944, - "95": 0.32752, - "100": 0.32561, - "105": 0.32369, - "110": 0.32177, - "115": 0.31985, - "120": 0.31793, - "125": 0.31601, - "130": 0.31409, - "135": 0.31217, - "140": 0.31025, - "145": 0.30833, - "150": 0.30641, - "155": 0.30449, - "160": 0.30257, - "165": 0.30065, - "170": 0.29873, - "175": 0.29681, - "180": 0.29489, - "185": 0.29297, - "190": 0.29105, - "195": 0.28913, - "200": 0.28721, - "205": 0.28529, - "210": 0.28337, - "215": 0.28145, - "220": 0.27953, - "225": 0.27761, - "230": 0.27569, - "235": 0.27377, - "240": 0.27185, - "245": 0.26993, - "250": 0.26801, - "255": 0.26609, - "260": 0.26417, - "265": 0.26225, - "270": 0.26033, - "275": 0.25841, - "280": 0.25649, - "285": 0.25457, - "290": 0.25266, - "295": 0.25074, - "300": 0.24882, - "305": 0.2469, - "310": 0.24498, - "315": 0.24306, - "320": 0.24114, - "325": 0.23922, - "330": 0.2373, - "335": 0.23538, - "340": 0.23346, - "345": 0.23154, - "350": 0.22962, - "355": 0.2277, - "360": 0.22578, - "365": 0.22386, - "370": 0.22194, - "375": 0.22002, - "380": 0.2181, - "385": 0.21618, - "390": 0.21426, - "395": 0.21234, - "400": 0.21042, - "405": 0.2085, - "410": 0.20658, - "415": 0.20466, - "420": 0.20274, - "425": 0.20082, - "430": 0.1989, - "435": 0.19698, - "440": 0.19506, - "445": 0.19314, - "450": 0.19122, - "455": 0.1893, - "460": 0.18738, - "465": 0.18437, - "470": 0.18108, - "475": 0.17779, - "480": 0.1745, - "485": 0.17121, - "490": 0.16792, - "495": 0.16463, - "500": 0.16134, - "505": 0.15805, - "510": 0.15476, - "515": 0.15147, - "520": 0.14818, - "525": 0.14489, - "530": 0.14161, - "535": 0.13832, - "540": 0.13503, - "545": 0.13174, - "550": 0.12845, - "555": 0.12516, - "560": 0.12187, - "565": 0.11858, - "570": 0.11529, - "575": 0.112, - "580": 0.10871, - "585": 0.10542, - "590": 0.10213, - "595": 0.09884, - "600": 0.09555, - "605": 0.09226, - "610": 0.08897, - "615": 0.08568, - "620": 0.08239, - "625": 0.07911, - "630": 0.07582, - "635": 0.07253, - "640": 0.06924, - "645": 0.06595, - "650": 0.06266, - "655": 0.06164, - "660": 0.06119, - "665": 0.06075, - "670": 0.0603, - "675": 0.05985, - "680": 0.0594, - "685": 0.05895, - "690": 0.05851, - "695": 0.05806, - "700": 0.05761, - "705": 0.05716, - "710": 0.05671, - "715": 0.05627, - "720": 0.05582, - "725": 0.05537, - "730": 0.05492, - "735": 0.05447, - "740": 0.05403, - "745": 0.05358, - "750": 0.05313, - "755": 0.05268, - "760": 0.05223, - "765": 0.05179, - "770": 0.05134, - "775": 0.05089, - "780": 0.05044, - "785": 0.04999, - "790": 0.04955, - "795": 0.0491, - "800": 0.04865, - "805": 0.0482, - "810": 0.04775, - "815": 0.04731, - "820": 0.04686, - "825": 0.04641, - "830": 0.04596, - "835": 0.04551, - "840": 0.04507, - "845": 0.04462, - "850": 0.04417, - "855": 0.04372, - "860": 0.04327, - "865": 0.04283, - "870": 0.04238, - "875": 0.04193, - "880": 0.04148, - "885": 0.04103, - "890": 0.04059, - "895": 0.04014, - "900": 0.03969, - "905": 0.03924, - "910": 0.03879, - "915": 0.03835, - "920": 0.0379, - "925": 0.03745, - "930": 0.037, - "935": 0.03655, - "940": 0.03611, - "945": 0.03566, - "950": 0.03521, - "955": 0.03476, - "960": 0.03432, - "965": 0.03387, - "970": 0.03342, - "975": 0.03297, - "980": 0.03252, - "985": 0.03208, - "990": 0.03163, - "995": 0.03118, - "1000": 0.03073, - "1005": 0.03028, - "1010": 0.02984, - "1015": 0.02939, - "1020": 0.02894, - "1025": 0.02849, - "1030": 0.02804, - "1035": 0.0276, - "1040": 0.02715, - "1045": 0.0267, - "1050": 0.02625, - "1055": 0.0258, - "1060": 0.02536, - "1065": 0.02491, - "1070": 0.02446, - "1075": 0.02401, - "1080": 0.02356, - "1085": 0.02312, - "1090": 0.02267, - "1095": 0.02222, - "1100": 0.02177, - "1105": 0.02132, - "1110": 0.02088, - "1115": 0.02043, - "1120": 0.01998, - "1125": 0.01953, - "1130": 0.01908, - "1135": 0.01864, - "1140": 0.01819, - "1145": 0.01774, - "1150": 0.01729, - "1155": 0.01684, - "1160": 0.0164, - "1165": 0.01595, - "1170": 0.0155, - "1175": 0.01505, - "1180": 0.0146, - "1185": 0.01416, - "1190": 0.01371, - "1195": 0.01326, - "1200": 0.01281, - "1205": 0.01236, - "1210": 0.01192, - "1215": 0.01147, - "1220": 0.01102, - "1225": 0.01057, - "1230": 0.01012, - "1235": 0.00968, - "1240": 0.00923, - "1245": 0.00878, - "1250": 0.00833, - "1255": 0.00788, - "1260": 0.00744, - "1265": 0.00699, - "1270": 0.00654, - "1275": 0.00609, - "1280": 0.00564, - "1285": 0.0052, - "1290": 0.00475, - "1295": 0.0043, - "1300": 0.00385, - "1305": 0.0034, - "1310": 0.00296, - "1315": 0.00251, - "1320": 0.00206, - "1325": 0.00161, - "1330": 0.00116, - "1335": 0.00072, - "1340": 0.00027, - "1345": 0 + "0": 0.17, + "5": 0.16926, + "10": 0.16853, + "15": 0.16779, + "20": 0.16705, + "25": 0.16631, + "30": 0.16558, + "35": 0.16484, + "40": 0.1641, + "45": 0.16336, + "50": 0.16263, + "55": 0.16189, + "60": 0.16115, + "65": 0.16041, + "70": 0.15968, + "75": 0.15894, + "80": 0.1582, + "85": 0.15746, + "90": 0.15673, + "95": 0.15599, + "100": 0.15525, + "105": 0.15451, + "110": 0.15378, + "115": 0.15304, + "120": 0.1523, + "125": 0.15156, + "130": 0.15083, + "135": 0.15009, + "140": 0.14935, + "145": 0.14862, + "150": 0.14788, + "155": 0.14714, + "160": 0.1464, + "165": 0.14567, + "170": 0.14493, + "175": 0.14419, + "180": 0.14345, + "185": 0.14272, + "190": 0.14198, + "195": 0.14124, + "200": 0.1405, + "205": 0.13977, + "210": 0.13903, + "215": 0.13829, + "220": 0.13755, + "225": 0.13682, + "230": 0.13608, + "235": 0.13534, + "240": 0.1346, + "245": 0.13387, + "250": 0.13313, + "255": 0.13239, + "260": 0.13165, + "265": 0.13092, + "270": 0.13018, + "275": 0.12944, + "280": 0.1284, + "285": 0.12689, + "290": 0.12539, + "295": 0.12389, + "300": 0.12238, + "305": 0.12088, + "310": 0.11937, + "315": 0.11787, + "320": 0.11636, + "325": 0.11486, + "330": 0.11336, + "335": 0.11185, + "340": 0.11035, + "345": 0.10884, + "350": 0.10734, + "355": 0.10583, + "360": 0.10433, + "365": 0.10283, + "370": 0.10132, + "375": 0.09982, + "380": 0.09831, + "385": 0.09681, + "390": 0.0953, + "395": 0.0938, + "400": 0.0923, + "405": 0.09079, + "410": 0.08929, + "415": 0.08778, + "420": 0.08628, + "425": 0.08477, + "430": 0.08327, + "435": 0.08177, + "440": 0.08026, + "445": 0.07876, + "450": 0.07725, + "455": 0.07575, + "460": 0.07424, + "465": 0.07274, + "470": 0.07123, + "475": 0.06973, + "480": 0.06823, + "485": 0.06672, + "490": 0.06522, + "495": 0.06371, + "500": 0.06221, + "505": 0.0607, + "510": 0.0592, + "515": 0.0577, + "520": 0.05619, + "525": 0.05469, + "530": 0.05318, + "535": 0.05168, + "540": 0.05017, + "545": 0.04867, + "550": 0.04717, + "555": 0.04566, + "560": 0.04416, + "565": 0.04265, + "570": 0.04115, + "575": 0.03964, + "580": 0.03814, + "585": 0.03664, + "590": 0.03513, + "595": 0.03363, + "600": 0.03212, + "605": 0.03062, + "610": 0.02911, + "615": 0.02761, + "620": 0.02611, + "625": 0.0246, + "630": 0.0239, + "635": 0.02372, + "640": 0.02355, + "645": 0.02337, + "650": 0.0232, + "655": 0.02302, + "660": 0.02285, + "665": 0.02267, + "670": 0.0225, + "675": 0.02232, + "680": 0.02215, + "685": 0.02197, + "690": 0.0218, + "695": 0.02162, + "700": 0.02145, + "705": 0.02127, + "710": 0.0211, + "715": 0.02092, + "720": 0.02075, + "725": 0.02057, + "730": 0.0204, + "735": 0.02022, + "740": 0.02005, + "745": 0.01987, + "750": 0.0197, + "755": 0.01952, + "760": 0.01935, + "765": 0.01917, + "770": 0.019, + "775": 0.01882, + "780": 0.01865, + "785": 0.01847, + "790": 0.0183, + "795": 0.01812, + "800": 0.01795, + "805": 0.01777, + "810": 0.0176, + "815": 0.01742, + "820": 0.01725, + "825": 0.01707, + "830": 0.0169, + "835": 0.01672, + "840": 0.01655, + "845": 0.01637, + "850": 0.0162, + "855": 0.01602, + "860": 0.01585, + "865": 0.01567, + "870": 0.0155, + "875": 0.01532, + "880": 0.01515, + "885": 0.01497, + "890": 0.0148, + "895": 0.01462, + "900": 0.01445, + "905": 0.01427, + "910": 0.0141, + "915": 0.01392, + "920": 0.01375, + "925": 0.01357, + "930": 0.0134, + "935": 0.01322, + "940": 0.01305, + "945": 0.01287, + "950": 0.0127, + "955": 0.01252, + "960": 0.01235, + "965": 0.01217, + "970": 0.012, + "975": 0.01183, + "980": 0.01165, + "985": 0.01148, + "990": 0.0113, + "995": 0.01113, + "1000": 0.01095, + "1005": 0.01078, + "1010": 0.0106, + "1015": 0.01043, + "1020": 0.01025, + "1025": 0.01008, + "1030": 0.0099, + "1035": 0.00973, + "1040": 0.00955, + "1045": 0.00938, + "1050": 0.0092, + "1055": 0.00903, + "1060": 0.00885, + "1065": 0.00868, + "1070": 0.0085, + "1075": 0.00833, + "1080": 0.00815, + "1085": 0.00798, + "1090": 0.0078, + "1095": 0.00763, + "1100": 0.00745, + "1105": 0.00728, + "1110": 0.0071, + "1115": 0.00693, + "1120": 0.00675, + "1125": 0.00658, + "1130": 0.0064, + "1135": 0.00623, + "1140": 0.00605, + "1145": 0.00588, + "1150": 0.0057, + "1155": 0.00553, + "1160": 0.00535, + "1165": 0.00518, + "1170": 0.005, + "1175": 0.00483, + "1180": 0.00465, + "1185": 0.00448, + "1190": 0.0043, + "1195": 0.00413, + "1200": 0.00395, + "1205": 0.00378, + "1210": 0.0036, + "1215": 0.00343, + "1220": 0.00325, + "1225": 0.00308, + "1230": 0.0029, + "1235": 0.00273, + "1240": 0.00255, + "1245": 0.00238, + "1250": 0.0022, + "1255": 0.00203, + "1260": 0.00185, + "1265": 0.00168, + "1270": 0.0015, + "1275": 0.00133, + "1280": 0.00115, + "1285": 0.00098, + "1290": 0.0008, + "1295": 0.00063, + "1300": 0.00045, + "1305": 0.00028, + "1310": 0.0001, + "1315": 0 } # Stoploss: - stoploss = -0.095 + stoploss = -0.111 # Trailing stop: trailing_stop = True trailing_stop_positive = 0.01 - trailing_stop_positive_offset = 0.011 - trailing_only_offset_is_reached = False + trailing_stop_positive_offset = 0.013 + trailing_only_offset_is_reached = True #################################################################################################################### # END OF HYPEROPT RESULTS COPY-PASTE SECTION # @@ -489,8 +483,8 @@ class MoniGoManiHyperStrategy(IStrategy): # These values can be overridden in the "ask_strategy" section in the config use_sell_signal = True - sell_profit_only = False - ignore_roi_if_buy_signal = False + sell_profit_only = True + ignore_roi_if_buy_signal = True # Number of candles the strategy requires before producing valid signals. # In live and dry runs this ratio will be 1, so nothing changes there. From c9a5278d595aacf87eeb76b0a81cae60b5d81c66 Mon Sep 17 00:00:00 2001 From: Rikj000 Date: Fri, 21 May 2021 01:11:37 +0200 Subject: [PATCH 4/6] Renamed variables/functions, Fixed Warnings/WeakWarnings, Added 'precision' to 'init_vars()' --- ...Pt1-20-05-2021_MoniGoManiHyperStrategy.log | 597 +++++++++++++ ...Pt1-20-05-2021_MoniGoManiConfiguration.log | 565 +++++++++++++ .../strategies/MoniGoManiConfiguration.py | 787 +++++++++++------- .../strategies/MoniGoManiHyperStrategy.py | 2 +- 4 files changed, 1630 insertions(+), 321 deletions(-) create mode 100644 Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log create mode 100644 Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log diff --git a/Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log b/Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log new file mode 100644 index 000000000..9575f41dc --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log @@ -0,0 +1,597 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +=============================================================================================================================================================================================================== +WARNING - Parameter "buy___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "buy___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "buy___trades_when_upwards" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed = 109 +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed_candles_lookback_window = 6 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed = 809 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed = 285 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed_candles_lookback_window = 6 +INFO - Strategy Parameter: buy_downwards_trend_adx_strong_up_weight = 68 +INFO - Strategy Parameter: buy_downwards_trend_bollinger_bands_weight = 73 +INFO - Strategy Parameter: buy_downwards_trend_ema_long_golden_cross_weight = 10 +INFO - Strategy Parameter: buy_downwards_trend_ema_short_golden_cross_weight = 81 +INFO - Strategy Parameter: buy_downwards_trend_macd_weight = 33 +INFO - Strategy Parameter: buy_downwards_trend_rsi_weight = 33 +INFO - Strategy Parameter: buy_downwards_trend_sma_long_golden_cross_weight = 42 +INFO - Strategy Parameter: buy_downwards_trend_sma_short_golden_cross_weight = 84 +INFO - Strategy Parameter: buy_downwards_trend_vwap_cross_weight = 21 +INFO - Strategy Parameter: buy_sideways_trend_adx_strong_up_weight = 83 +INFO - Strategy Parameter: buy_sideways_trend_bollinger_bands_weight = 75 +INFO - Strategy Parameter: buy_sideways_trend_ema_long_golden_cross_weight = 81 +INFO - Strategy Parameter: buy_sideways_trend_ema_short_golden_cross_weight = 46 +INFO - Strategy Parameter: buy_sideways_trend_macd_weight = 67 +INFO - Strategy Parameter: buy_sideways_trend_rsi_weight = 4 +INFO - Strategy Parameter: buy_sideways_trend_sma_long_golden_cross_weight = 8 +INFO - Strategy Parameter: buy_sideways_trend_sma_short_golden_cross_weight = 83 +INFO - Strategy Parameter: buy_sideways_trend_vwap_cross_weight = 26 +INFO - Strategy Parameter: buy_upwards_trend_adx_strong_up_weight = 96 +INFO - Strategy Parameter: buy_upwards_trend_bollinger_bands_weight = 49 +INFO - Strategy Parameter: buy_upwards_trend_ema_long_golden_cross_weight = 66 +INFO - Strategy Parameter: buy_upwards_trend_ema_short_golden_cross_weight = 32 +INFO - Strategy Parameter: buy_upwards_trend_macd_weight = 69 +INFO - Strategy Parameter: buy_upwards_trend_rsi_weight = 37 +INFO - Strategy Parameter: buy_upwards_trend_sma_long_golden_cross_weight = 3 +INFO - Strategy Parameter: buy_upwards_trend_sma_short_golden_cross_weight = 97 +INFO - Strategy Parameter: buy_upwards_trend_vwap_cross_weight = 53 +WARNING - Parameter "sell___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "sell___trades_when_upwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_enabled" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trade_duration_minutes = 19 +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trades_open = 4 +INFO - Strategy Parameter: sell___unclogger_open_trades_losing_percentage_needed = 31 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window = 51 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window_percentage_needed = 35 +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_downwards_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_sideways_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_upwards_candles" exists, but is disabled. Default value "False" used. +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed = 565 +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed = 638 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed = 590 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: sell_downwards_trend_adx_strong_down_weight = 63 +INFO - Strategy Parameter: sell_downwards_trend_bollinger_bands_weight = 5 +INFO - Strategy Parameter: sell_downwards_trend_ema_long_death_cross_weight = 14 +INFO - Strategy Parameter: sell_downwards_trend_ema_short_death_cross_weight = 6 +INFO - Strategy Parameter: sell_downwards_trend_macd_weight = 92 +INFO - Strategy Parameter: sell_downwards_trend_rsi_weight = 98 +INFO - Strategy Parameter: sell_downwards_trend_sma_long_death_cross_weight = 91 +INFO - Strategy Parameter: sell_downwards_trend_sma_short_death_cross_weight = 86 +INFO - Strategy Parameter: sell_downwards_trend_vwap_cross_weight = 54 +INFO - Strategy Parameter: sell_sideways_trend_adx_strong_down_weight = 69 +INFO - Strategy Parameter: sell_sideways_trend_bollinger_bands_weight = 57 +INFO - Strategy Parameter: sell_sideways_trend_ema_long_death_cross_weight = 78 +INFO - Strategy Parameter: sell_sideways_trend_ema_short_death_cross_weight = 72 +INFO - Strategy Parameter: sell_sideways_trend_macd_weight = 0 +INFO - Strategy Parameter: sell_sideways_trend_rsi_weight = 41 +INFO - Strategy Parameter: sell_sideways_trend_sma_long_death_cross_weight = 76 +INFO - Strategy Parameter: sell_sideways_trend_sma_short_death_cross_weight = 49 +INFO - Strategy Parameter: sell_sideways_trend_vwap_cross_weight = 1 +INFO - Strategy Parameter: sell_upwards_trend_adx_strong_down_weight = 72 +INFO - Strategy Parameter: sell_upwards_trend_bollinger_bands_weight = 38 +INFO - Strategy Parameter: sell_upwards_trend_ema_long_death_cross_weight = 48 +INFO - Strategy Parameter: sell_upwards_trend_ema_short_death_cross_weight = 65 +INFO - Strategy Parameter: sell_upwards_trend_macd_weight = 24 +INFO - Strategy Parameter: sell_upwards_trend_rsi_weight = 58 +INFO - Strategy Parameter: sell_upwards_trend_sma_long_death_cross_weight = 65 +INFO - Strategy Parameter: sell_upwards_trend_sma_short_death_cross_weight = 99 +INFO - Strategy Parameter: sell_upwards_trend_vwap_cross_weight = 37 + +INFO - Using optimizer random state: 24261 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 2/1000 | 358 | 214 29 115 | 0.71% | 114.701 USDT (22.94%) | 0 days 13:16:00 | -15,221.29211 | +| * Best | 4/1000 | 315 | 190 3 122 | 0.83% | 117.591 USDT (23.52%) | 0 days 14:23:00 | -15,746.01874 | +| * Best | 6/1000 | 253 | 177 48 28 | 1.27% | 145.285 USDT (29.06%) | 1 days 08:23:00 | -22,564.59111 | +| * Best | 7/1000 | 474 | 340 69 65 | 1.73% | 369.994 USDT (74.00%) | 0 days 22:07:00 | -58,918.07049 | +| * Best | 15/1000 | 435 | 366 41 28 | 2.42% | 474.593 USDT (94.92%) | 1 days 08:02:00 | -88,647.57967 | +| Best | 41/1000 | 318 | 205 88 25 | 4.54% | 649.832 USDT (129.97%) | 2 days 09:15:00 | -92,999.62782 | +| Best | 44/1000 | 762 | 572 95 95 | 1.87% | 640.392 USDT (128.08%) | 0 days 20:33:00 | -106,718.70260 | +| Best | 59/1000 | 524 | 409 38 77 | 2.84% | 670.928 USDT (134.19%) | 1 days 08:10:00 | -116,257.54994 | +| Best | 81/1000 | 522 | 418 78 26 | 3.11% | 730.278 USDT (146.06%) | 1 days 06:41:00 | -129,821.75719 | +| Best | 112/1000 | 436 | 337 73 26 | 3.89% | 763.497 USDT (152.70%) | 1 days 17:17:00 | -131,009.97093 | +| Best | 125/1000 | 610 | 486 88 36 | 3.35% | 920.906 USDT (184.18%) | 1 days 06:54:00 | -162,882.82806 | +| Best | 138/1000 | 1066 | 969 59 38 | 3.17% | 1523.735 USDT (304.75%) | 0 days 21:31:00 | -307,488.79637 | +| Best | 260/1000 | 1371 | 1263 65 43 | 2.57% | 1584.853 USDT (316.97%) | 0 days 15:00:00 | -324,121.79882 | +| Best | 262/1000 | 1808 | 1648 109 51 | 2.05% | 1672.904 USDT (334.58%) | 0 days 10:45:00 | -338,519.13980 | +| Best | 292/1000 | 1531 | 1436 60 35 | 2.40% | 1658.142 USDT (331.63%) | 0 days 13:04:00 | -345,266.38526 | +| Best | 314/1000 | 1523 | 1422 58 43 | 2.45% | 1679.942 USDT (335.99%) | 0 days 12:45:00 | -348,215.02640 | +| Best | 356/1000 | 1766 | 1624 101 41 | 2.33% | 1857.390 USDT (371.48%) | 0 days 11:53:00 | -379,185.55574 | +| Best | 450/1000 | 2550 | 2407 64 79 | 1.84% | 2118.427 USDT (423.69%) | 0 days 07:59:00 | -443,918.00618 | + +Elapsed Time: 1:16:23 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-20_20-00-45.fthypt'. + +Best result: + + 450/1000: + 2550 trades. + 2407/64/79 Wins/Draws/Losses. + Avg profit 1.84%. + Median profit 1.29%. + Total profit 2118.42667821 USDT ( 423.69Σ%). + Avg duration 7:59:00 min. + Objective: -443918.00618 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 82, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 447, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "buy__upwards_trend_total_signal_needed": 214, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy_downwards_trend_adx_strong_up_weight": 96, + "buy_downwards_trend_bollinger_bands_weight": 11, + "buy_downwards_trend_ema_long_golden_cross_weight": 62, + "buy_downwards_trend_ema_short_golden_cross_weight": 34, + "buy_downwards_trend_macd_weight": 31, + "buy_downwards_trend_rsi_weight": 43, + "buy_downwards_trend_sma_long_golden_cross_weight": 63, + "buy_downwards_trend_sma_short_golden_cross_weight": 35, + "buy_downwards_trend_vwap_cross_weight": 61, + "buy_sideways_trend_adx_strong_up_weight": 90, + "buy_sideways_trend_bollinger_bands_weight": 43, + "buy_sideways_trend_ema_long_golden_cross_weight": 22, + "buy_sideways_trend_ema_short_golden_cross_weight": 14, + "buy_sideways_trend_macd_weight": 59, + "buy_sideways_trend_rsi_weight": 37, + "buy_sideways_trend_sma_long_golden_cross_weight": 92, + "buy_sideways_trend_sma_short_golden_cross_weight": 30, + "buy_sideways_trend_vwap_cross_weight": 92, + "buy_upwards_trend_adx_strong_up_weight": 57, + "buy_upwards_trend_bollinger_bands_weight": 50, + "buy_upwards_trend_ema_long_golden_cross_weight": 5, + "buy_upwards_trend_ema_short_golden_cross_weight": 2, + "buy_upwards_trend_macd_weight": 94, + "buy_upwards_trend_rsi_weight": 7, + "buy_upwards_trend_sma_long_golden_cross_weight": 16, + "buy_upwards_trend_sma_short_golden_cross_weight": 84, + "buy_upwards_trend_vwap_cross_weight": 43, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 22, + "sell___unclogger_minimal_losing_trades_open": 5, + "sell___unclogger_open_trades_losing_percentage_needed": 24, + "sell___unclogger_trend_lookback_candles_window": 43, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 38, + "sell__downwards_trend_total_signal_needed": 425, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "sell__sideways_trend_total_signal_needed": 525, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "sell__upwards_trend_total_signal_needed": 702, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "sell_downwards_trend_adx_strong_down_weight": 14, + "sell_downwards_trend_bollinger_bands_weight": 20, + "sell_downwards_trend_ema_long_death_cross_weight": 58, + "sell_downwards_trend_ema_short_death_cross_weight": 54, + "sell_downwards_trend_macd_weight": 33, + "sell_downwards_trend_rsi_weight": 35, + "sell_downwards_trend_sma_long_death_cross_weight": 45, + "sell_downwards_trend_sma_short_death_cross_weight": 95, + "sell_downwards_trend_vwap_cross_weight": 74, + "sell_sideways_trend_adx_strong_down_weight": 38, + "sell_sideways_trend_bollinger_bands_weight": 39, + "sell_sideways_trend_ema_long_death_cross_weight": 75, + "sell_sideways_trend_ema_short_death_cross_weight": 89, + "sell_sideways_trend_macd_weight": 86, + "sell_sideways_trend_rsi_weight": 18, + "sell_sideways_trend_sma_long_death_cross_weight": 94, + "sell_sideways_trend_sma_short_death_cross_weight": 57, + "sell_sideways_trend_vwap_cross_weight": 39, + "sell_upwards_trend_adx_strong_down_weight": 21, + "sell_upwards_trend_bollinger_bands_weight": 90, + "sell_upwards_trend_ema_long_death_cross_weight": 72, + "sell_upwards_trend_ema_short_death_cross_weight": 3, + "sell_upwards_trend_macd_weight": 48, + "sell_upwards_trend_rsi_weight": 94, + "sell_upwards_trend_sma_long_death_cross_weight": 17, + "sell_upwards_trend_sma_short_death_cross_weight": 100, + "sell_upwards_trend_vwap_cross_weight": 59, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.322, + "5": 0.31913, + "10": 0.31627, + "15": 0.3134, + "20": 0.31054, + "25": 0.30767, + "30": 0.3048, + "35": 0.30194, + "40": 0.29907, + "45": 0.2962, + "50": 0.29334, + "55": 0.29047, + "60": 0.28761, + "65": 0.28474, + "70": 0.28187, + "75": 0.27901, + "80": 0.27614, + "85": 0.27328, + "90": 0.27041, + "95": 0.26754, + "100": 0.26468, + "105": 0.26181, + "110": 0.25894, + "115": 0.25608, + "120": 0.25321, + "125": 0.25035, + "130": 0.24748, + "135": 0.24461, + "140": 0.24175, + "145": 0.23888, + "150": 0.23602, + "155": 0.23315, + "160": 0.23028, + "165": 0.22742, + "170": 0.22455, + "175": 0.22168, + "180": 0.21882, + "185": 0.21595, + "190": 0.21309, + "195": 0.21022, + "200": 0.20735, + "205": 0.20449, + "210": 0.20162, + "215": 0.19876, + "220": 0.19589, + "225": 0.19302, + "230": 0.19016, + "235": 0.18729, + "240": 0.18442, + "245": 0.18156, + "250": 0.17869, + "255": 0.17583, + "260": 0.17296, + "265": 0.17009, + "270": 0.16723, + "275": 0.16436, + "280": 0.16149, + "285": 0.15863, + "290": 0.15576, + "295": 0.1529, + "300": 0.15003, + "305": 0.14716, + "310": 0.1443, + "315": 0.14143, + "320": 0.13857, + "325": 0.1357, + "330": 0.13283, + "335": 0.12997, + "340": 0.1271, + "345": 0.12423, + "350": 0.12137, + "355": 0.1185, + "360": 0.11564, + "365": 0.11277, + "370": 0.1099, + "375": 0.10704, + "380": 0.10417, + "385": 0.10131, + "390": 0.09844, + "395": 0.09557, + "400": 0.09446, + "405": 0.09378, + "410": 0.09311, + "415": 0.09243, + "420": 0.09176, + "425": 0.09108, + "430": 0.09041, + "435": 0.08973, + "440": 0.08906, + "445": 0.08838, + "450": 0.08771, + "455": 0.08703, + "460": 0.08636, + "465": 0.08568, + "470": 0.08501, + "475": 0.08433, + "480": 0.08365, + "485": 0.08298, + "490": 0.0823, + "495": 0.08163, + "500": 0.08095, + "505": 0.08028, + "510": 0.0796, + "515": 0.07893, + "520": 0.07825, + "525": 0.07758, + "530": 0.0769, + "535": 0.07623, + "540": 0.07555, + "545": 0.07488, + "550": 0.0742, + "555": 0.07352, + "560": 0.07285, + "565": 0.07217, + "570": 0.0715, + "575": 0.07082, + "580": 0.07015, + "585": 0.06947, + "590": 0.0688, + "595": 0.06812, + "600": 0.06745, + "605": 0.06677, + "610": 0.0661, + "615": 0.06542, + "620": 0.06475, + "625": 0.06407, + "630": 0.06339, + "635": 0.06272, + "640": 0.06204, + "645": 0.06137, + "650": 0.06069, + "655": 0.06002, + "660": 0.05934, + "665": 0.05867, + "670": 0.05799, + "675": 0.05732, + "680": 0.05664, + "685": 0.05597, + "690": 0.05529, + "695": 0.05462, + "700": 0.05394, + "705": 0.05326, + "710": 0.05259, + "715": 0.05191, + "720": 0.05124, + "725": 0.05056, + "730": 0.04989, + "735": 0.04921, + "740": 0.04854, + "745": 0.04786, + "750": 0.04719, + "755": 0.04651, + "760": 0.04584, + "765": 0.04516, + "770": 0.04449, + "775": 0.04381, + "780": 0.04314, + "785": 0.04284, + "790": 0.04264, + "795": 0.04243, + "800": 0.04223, + "805": 0.04203, + "810": 0.04183, + "815": 0.04162, + "820": 0.04142, + "825": 0.04122, + "830": 0.04102, + "835": 0.04082, + "840": 0.04061, + "845": 0.04041, + "850": 0.04021, + "855": 0.04001, + "860": 0.0398, + "865": 0.0396, + "870": 0.0394, + "875": 0.0392, + "880": 0.039, + "885": 0.03879, + "890": 0.03859, + "895": 0.03839, + "900": 0.03819, + "905": 0.03798, + "910": 0.03778, + "915": 0.03758, + "920": 0.03738, + "925": 0.03717, + "930": 0.03697, + "935": 0.03677, + "940": 0.03657, + "945": 0.03637, + "950": 0.03616, + "955": 0.03596, + "960": 0.03576, + "965": 0.03556, + "970": 0.03535, + "975": 0.03515, + "980": 0.03495, + "985": 0.03475, + "990": 0.03455, + "995": 0.03434, + "1000": 0.03414, + "1005": 0.03394, + "1010": 0.03374, + "1015": 0.03353, + "1020": 0.03333, + "1025": 0.03313, + "1030": 0.03293, + "1035": 0.03273, + "1040": 0.03252, + "1045": 0.03232, + "1050": 0.03212, + "1055": 0.03192, + "1060": 0.03171, + "1065": 0.03151, + "1070": 0.03131, + "1075": 0.03111, + "1080": 0.0309, + "1085": 0.0307, + "1090": 0.0305, + "1095": 0.0303, + "1100": 0.0301, + "1105": 0.02989, + "1110": 0.02969, + "1115": 0.02949, + "1120": 0.02929, + "1125": 0.02908, + "1130": 0.02888, + "1135": 0.02868, + "1140": 0.02848, + "1145": 0.02828, + "1150": 0.02807, + "1155": 0.02787, + "1160": 0.02767, + "1165": 0.02747, + "1170": 0.02726, + "1175": 0.02706, + "1180": 0.02686, + "1185": 0.02666, + "1190": 0.02646, + "1195": 0.02625, + "1200": 0.02605, + "1205": 0.02585, + "1210": 0.02565, + "1215": 0.02544, + "1220": 0.02524, + "1225": 0.02504, + "1230": 0.02484, + "1235": 0.02463, + "1240": 0.02443, + "1245": 0.02423, + "1250": 0.02403, + "1255": 0.02383, + "1260": 0.02362, + "1265": 0.02342, + "1270": 0.02322, + "1275": 0.02302, + "1280": 0.02281, + "1285": 0.02261, + "1290": 0.02241, + "1295": 0.02221, + "1300": 0.02201, + "1305": 0.0218, + "1310": 0.0216, + "1315": 0.0214, + "1320": 0.0212, + "1325": 0.02099, + "1330": 0.02079, + "1335": 0.02059, + "1340": 0.02039, + "1345": 0.02019, + "1350": 0.01998, + "1355": 0.01978, + "1360": 0.01958, + "1365": 0.01938, + "1370": 0.01917, + "1375": 0.01897, + "1380": 0.01877, + "1385": 0.01857, + "1390": 0.01837, + "1395": 0.01816, + "1400": 0.01796, + "1405": 0.01776, + "1410": 0.01756, + "1415": 0.01735, + "1420": 0.01715, + "1425": 0.01695, + "1430": 0.01675, + "1435": 0.01654, + "1440": 0.01634, + "1445": 0.01614, + "1450": 0.01594, + "1455": 0.01574, + "1460": 0.01553, + "1465": 0.01533, + "1470": 0.01513, + "1475": 0.01493, + "1480": 0.01472, + "1485": 0.01452, + "1490": 0.01432, + "1495": 0.01412, + "1500": 0.01392, + "1505": 0.01371, + "1510": 0.01351, + "1515": 0.01331, + "1520": 0.01311, + "1525": 0.0129, + "1530": 0.0127, + "1535": 0.0125, + "1540": 0.0123, + "1545": 0.0121, + "1550": 0.01189, + "1555": 0.01169, + "1560": 0.01149, + "1565": 0.01129, + "1570": 0.01108, + "1575": 0.01088, + "1580": 0.01068, + "1585": 0.01048, + "1590": 0.01027, + "1595": 0.01007, + "1600": 0.00987, + "1605": 0.00967, + "1610": 0.00947, + "1615": 0.00926, + "1620": 0.00906, + "1625": 0.00886, + "1630": 0.00866, + "1635": 0.00845, + "1640": 0.00825, + "1645": 0.00805, + "1650": 0.00785, + "1655": 0.00765, + "1660": 0.00744, + "1665": 0.00724, + "1670": 0.00704, + "1675": 0.00684, + "1680": 0.00663, + "1685": 0.00643, + "1690": 0.00623, + "1695": 0.00603, + "1700": 0.00583, + "1705": 0.00562, + "1710": 0.00542, + "1715": 0.00522, + "1720": 0.00502, + "1725": 0.00481, + "1730": 0.00461, + "1735": 0.00441, + "1740": 0.00421, + "1745": 0.004, + "1750": 0.0038, + "1755": 0.0036, + "1760": 0.0034, + "1765": 0.0032, + "1770": 0.00299, + "1775": 0.00279, + "1780": 0.00259, + "1785": 0.00239, + "1790": 0.00218, + "1795": 0.00198, + "1800": 0.00178, + "1805": 0.00158, + "1810": 0.00138, + "1815": 0.00117, + "1820": 0.00097, + "1825": 0.00077, + "1830": 0.00057, + "1835": 0.00036, + "1840": 0.00016, + "1845": 0 + } + + # Stoploss: + stoploss = -0.237 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log b/Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log new file mode 100644 index 000000000..0a25515cf --- /dev/null +++ b/Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log @@ -0,0 +1,565 @@ + freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 --random-state 24261 +==================================================================================================================================================================================================================================== +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 0 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 0 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 15 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 1 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 1 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 10 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 10 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 30 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 0 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 0 +INFO - Using optimizer random state: 24261 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 216 | 151 38 27 | 2.27% | 221.272 USDT (44.25%) | 1 days 13:38:00 | -34,340.23447 | +| * Best | 4/1000 | 477 | 363 29 85 | 1.45% | 312.250 USDT (62.45%) | 1 days 00:15:00 | -52,752.61816 | +| * Best | 8/1000 | 285 | 212 52 21 | 2.87% | 368.076 USDT (73.62%) | 1 days 11:41:00 | -60,782.93887 | +| * Best | 9/1000 | 341 | 265 33 43 | 2.49% | 382.149 USDT (76.43%) | 1 days 02:18:00 | -65,929.23996 | +| * Best | 10/1000 | 294 | 193 73 28 | 3.64% | 481.952 USDT (96.39%) | 2 days 06:39:00 | -70,237.19972 | +| * Best | 18/1000 | 381 | 286 53 42 | 2.57% | 441.296 USDT (88.26%) | 1 days 04:50:00 | -73,540.14797 | +| Best | 34/1000 | 448 | 357 56 35 | 2.60% | 525.276 USDT (105.06%) | 1 days 03:27:00 | -92,924.77687 | +| Best | 64/1000 | 652 | 462 90 100 | 2.28% | 668.667 USDT (133.73%) | 1 days 02:49:00 | -105,185.88430 | +| Best | 92/1000 | 406 | 312 51 43 | 3.70% | 675.884 USDT (135.18%) | 1 days 21:38:00 | -115,306.58634 | +| Best | 94/1000 | 2083 | 1888 93 102 | 1.61% | 1513.473 USDT (302.69%) | 0 days 09:59:00 | -304,537.54062 | +| Best | 192/1000 | 2033 | 1884 69 80 | 1.82% | 1670.127 USDT (334.03%) | 0 days 07:44:00 | -343,594.61751 | +| Best | 218/1000 | 3162 | 2770 78 314 | 1.30% | 1847.109 USDT (369.42%) | 0 days 04:34:00 | -359,222.70421 | +| Best | 224/1000 | 1879 | 1761 74 44 | 2.27% | 1918.863 USDT (383.77%) | 0 days 11:29:00 | -399,236.24636 | +| Best | 294/1000 | 3117 | 2871 76 170 | 1.41% | 1986.682 USDT (397.34%) | 0 days 05:45:00 | -406,235.86376 | +| Best | 472/1000 | 2159 | 2008 101 50 | 2.13% | 2073.677 USDT (414.74%) | 0 days 09:55:00 | -428,159.40984 | +| Best | 513/1000 | 2766 | 2589 76 101 | 1.70% | 2121.560 USDT (424.31%) | 0 days 07:03:00 | -440,847.74484 | + +Elapsed Time: 1:11:37 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-20_21-43-43.fthypt'. + +Best result: + + 513/1000: + 2766 trades. + 2589/76/101 Wins/Draws/Losses. + Avg profit 1.70%. + Median profit 1.26%. + Total profit 2121.56009865 USDT ( 424.31Σ%). + Avg duration 7:03:00 min. + Objective: -440847.74484 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 11, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 174, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 4, + "buy__upwards_trend_total_signal_needed": 199, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy_downwards_trend_adx_strong_up_weight": 92, + "buy_downwards_trend_bollinger_bands_weight": 3, + "buy_downwards_trend_ema_long_golden_cross_weight": 91, + "buy_downwards_trend_ema_short_golden_cross_weight": 24, + "buy_downwards_trend_macd_weight": 64, + "buy_downwards_trend_rsi_weight": 59, + "buy_downwards_trend_sma_long_golden_cross_weight": 89, + "buy_downwards_trend_sma_short_golden_cross_weight": 86, + "buy_downwards_trend_vwap_cross_weight": 55, + "buy_sideways_trend_adx_strong_up_weight": 0, + "buy_sideways_trend_bollinger_bands_weight": 22, + "buy_sideways_trend_ema_long_golden_cross_weight": 84, + "buy_sideways_trend_ema_short_golden_cross_weight": 5, + "buy_sideways_trend_macd_weight": 70, + "buy_sideways_trend_rsi_weight": 91, + "buy_sideways_trend_sma_long_golden_cross_weight": 95, + "buy_sideways_trend_sma_short_golden_cross_weight": 9, + "buy_sideways_trend_vwap_cross_weight": 10, + "buy_upwards_trend_adx_strong_up_weight": 61, + "buy_upwards_trend_bollinger_bands_weight": 95, + "buy_upwards_trend_ema_long_golden_cross_weight": 28, + "buy_upwards_trend_ema_short_golden_cross_weight": 20, + "buy_upwards_trend_macd_weight": 54, + "buy_upwards_trend_rsi_weight": 71, + "buy_upwards_trend_sma_long_golden_cross_weight": 15, + "buy_upwards_trend_sma_short_golden_cross_weight": 0, + "buy_upwards_trend_vwap_cross_weight": 24, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 25, + "sell___unclogger_minimal_losing_trades_open": 1, + "sell___unclogger_open_trades_losing_percentage_needed": 10, + "sell___unclogger_trend_lookback_candles_window": 24, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 10, + "sell__downwards_trend_total_signal_needed": 502, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "sell__sideways_trend_total_signal_needed": 599, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "sell__upwards_trend_total_signal_needed": 672, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 3, + "sell_downwards_trend_adx_strong_down_weight": 20, + "sell_downwards_trend_bollinger_bands_weight": 19, + "sell_downwards_trend_ema_long_death_cross_weight": 42, + "sell_downwards_trend_ema_short_death_cross_weight": 7, + "sell_downwards_trend_macd_weight": 93, + "sell_downwards_trend_rsi_weight": 72, + "sell_downwards_trend_sma_long_death_cross_weight": 60, + "sell_downwards_trend_sma_short_death_cross_weight": 25, + "sell_downwards_trend_vwap_cross_weight": 74, + "sell_sideways_trend_adx_strong_down_weight": 92, + "sell_sideways_trend_bollinger_bands_weight": 38, + "sell_sideways_trend_ema_long_death_cross_weight": 43, + "sell_sideways_trend_ema_short_death_cross_weight": 77, + "sell_sideways_trend_macd_weight": 15, + "sell_sideways_trend_rsi_weight": 55, + "sell_sideways_trend_sma_long_death_cross_weight": 22, + "sell_sideways_trend_sma_short_death_cross_weight": 98, + "sell_sideways_trend_vwap_cross_weight": 76, + "sell_upwards_trend_adx_strong_down_weight": 19, + "sell_upwards_trend_bollinger_bands_weight": 62, + "sell_upwards_trend_ema_long_death_cross_weight": 26, + "sell_upwards_trend_ema_short_death_cross_weight": 69, + "sell_upwards_trend_macd_weight": 70, + "sell_upwards_trend_rsi_weight": 6, + "sell_upwards_trend_sma_long_death_cross_weight": 58, + "sell_upwards_trend_sma_short_death_cross_weight": 30, + "sell_upwards_trend_vwap_cross_weight": 61, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.483, + "5": 0.47969, + "10": 0.47639, + "15": 0.47308, + "20": 0.46977, + "25": 0.46647, + "30": 0.46316, + "35": 0.45985, + "40": 0.45655, + "45": 0.45324, + "50": 0.44993, + "55": 0.44663, + "60": 0.44332, + "65": 0.44001, + "70": 0.43671, + "75": 0.4334, + "80": 0.43009, + "85": 0.42679, + "90": 0.42348, + "95": 0.42017, + "100": 0.41687, + "105": 0.41356, + "110": 0.41025, + "115": 0.40695, + "120": 0.40364, + "125": 0.40033, + "130": 0.39703, + "135": 0.39372, + "140": 0.39041, + "145": 0.38711, + "150": 0.3838, + "155": 0.38049, + "160": 0.37719, + "165": 0.37388, + "170": 0.37057, + "175": 0.36727, + "180": 0.36396, + "185": 0.36065, + "190": 0.35735, + "195": 0.35404, + "200": 0.35073, + "205": 0.34743, + "210": 0.34412, + "215": 0.34081, + "220": 0.33751, + "225": 0.3342, + "230": 0.33089, + "235": 0.32759, + "240": 0.32428, + "245": 0.32097, + "250": 0.31767, + "255": 0.31436, + "260": 0.31105, + "265": 0.30775, + "270": 0.30444, + "275": 0.30114, + "280": 0.29783, + "285": 0.29452, + "290": 0.29122, + "295": 0.28791, + "300": 0.2846, + "305": 0.2813, + "310": 0.27799, + "315": 0.27468, + "320": 0.27138, + "325": 0.26807, + "330": 0.26476, + "335": 0.26146, + "340": 0.25815, + "345": 0.25484, + "350": 0.25154, + "355": 0.24823, + "360": 0.24492, + "365": 0.24162, + "370": 0.23831, + "375": 0.235, + "380": 0.2317, + "385": 0.22839, + "390": 0.22508, + "395": 0.22178, + "400": 0.21847, + "405": 0.21516, + "410": 0.21186, + "415": 0.20855, + "420": 0.20524, + "425": 0.20194, + "430": 0.19863, + "435": 0.19532, + "440": 0.19325, + "445": 0.19199, + "450": 0.19074, + "455": 0.18948, + "460": 0.18823, + "465": 0.18698, + "470": 0.18572, + "475": 0.18447, + "480": 0.18321, + "485": 0.18196, + "490": 0.1807, + "495": 0.17945, + "500": 0.1782, + "505": 0.17694, + "510": 0.17569, + "515": 0.17443, + "520": 0.17318, + "525": 0.17192, + "530": 0.17067, + "535": 0.16942, + "540": 0.16816, + "545": 0.16691, + "550": 0.16565, + "555": 0.1644, + "560": 0.16315, + "565": 0.16189, + "570": 0.16064, + "575": 0.15938, + "580": 0.15813, + "585": 0.15687, + "590": 0.15562, + "595": 0.15437, + "600": 0.15311, + "605": 0.15186, + "610": 0.1506, + "615": 0.14935, + "620": 0.14809, + "625": 0.14684, + "630": 0.14559, + "635": 0.14433, + "640": 0.14308, + "645": 0.14182, + "650": 0.14057, + "655": 0.13931, + "660": 0.13806, + "665": 0.13681, + "670": 0.13555, + "675": 0.1343, + "680": 0.13304, + "685": 0.13179, + "690": 0.13053, + "695": 0.12928, + "700": 0.12803, + "705": 0.12677, + "710": 0.12552, + "715": 0.12426, + "720": 0.12301, + "725": 0.12175, + "730": 0.1205, + "735": 0.11925, + "740": 0.11799, + "745": 0.11674, + "750": 0.11548, + "755": 0.11423, + "760": 0.11297, + "765": 0.11172, + "770": 0.11047, + "775": 0.10921, + "780": 0.10796, + "785": 0.1067, + "790": 0.10545, + "795": 0.10419, + "800": 0.10294, + "805": 0.10169, + "810": 0.10043, + "815": 0.09918, + "820": 0.09792, + "825": 0.09667, + "830": 0.09541, + "835": 0.09416, + "840": 0.09291, + "845": 0.09165, + "850": 0.0904, + "855": 0.08914, + "860": 0.08789, + "865": 0.08663, + "870": 0.08538, + "875": 0.08413, + "880": 0.08287, + "885": 0.08162, + "890": 0.08036, + "895": 0.07911, + "900": 0.07785, + "905": 0.0766, + "910": 0.07535, + "915": 0.07409, + "920": 0.07284, + "925": 0.07158, + "930": 0.07033, + "935": 0.06908, + "940": 0.06782, + "945": 0.06657, + "950": 0.06531, + "955": 0.06406, + "960": 0.0628, + "965": 0.06155, + "970": 0.0603, + "975": 0.05904, + "980": 0.05779, + "985": 0.05653, + "990": 0.05528, + "995": 0.05402, + "1000": 0.05277, + "1005": 0.05152, + "1010": 0.05026, + "1015": 0.04901, + "1020": 0.04775, + "1025": 0.04686, + "1030": 0.0465, + "1035": 0.04615, + "1040": 0.04579, + "1045": 0.04544, + "1050": 0.04509, + "1055": 0.04473, + "1060": 0.04438, + "1065": 0.04402, + "1070": 0.04367, + "1075": 0.04331, + "1080": 0.04296, + "1085": 0.0426, + "1090": 0.04225, + "1095": 0.0419, + "1100": 0.04154, + "1105": 0.04119, + "1110": 0.04083, + "1115": 0.04048, + "1120": 0.04012, + "1125": 0.03977, + "1130": 0.03941, + "1135": 0.03906, + "1140": 0.03871, + "1145": 0.03835, + "1150": 0.038, + "1155": 0.03764, + "1160": 0.03729, + "1165": 0.03693, + "1170": 0.03658, + "1175": 0.03622, + "1180": 0.03587, + "1185": 0.03552, + "1190": 0.03516, + "1195": 0.03481, + "1200": 0.03445, + "1205": 0.0341, + "1210": 0.03374, + "1215": 0.03339, + "1220": 0.03303, + "1225": 0.03268, + "1230": 0.03233, + "1235": 0.03197, + "1240": 0.03162, + "1245": 0.03126, + "1250": 0.03091, + "1255": 0.03055, + "1260": 0.0302, + "1265": 0.02984, + "1270": 0.02949, + "1275": 0.02914, + "1280": 0.02878, + "1285": 0.02843, + "1290": 0.02807, + "1295": 0.02772, + "1300": 0.02736, + "1305": 0.02701, + "1310": 0.02665, + "1315": 0.0263, + "1320": 0.02595, + "1325": 0.02559, + "1330": 0.02524, + "1335": 0.02488, + "1340": 0.02453, + "1345": 0.02417, + "1350": 0.02382, + "1355": 0.02346, + "1360": 0.02311, + "1365": 0.02276, + "1370": 0.0224, + "1375": 0.02205, + "1380": 0.02169, + "1385": 0.02134, + "1390": 0.02098, + "1395": 0.02063, + "1400": 0.02027, + "1405": 0.01992, + "1410": 0.01957, + "1415": 0.01921, + "1420": 0.01886, + "1425": 0.0185, + "1430": 0.01815, + "1435": 0.01779, + "1440": 0.01744, + "1445": 0.01708, + "1450": 0.01673, + "1455": 0.01638, + "1460": 0.01602, + "1465": 0.01567, + "1470": 0.01531, + "1475": 0.01496, + "1480": 0.0146, + "1485": 0.01425, + "1490": 0.01389, + "1495": 0.01354, + "1500": 0.01319, + "1505": 0.01283, + "1510": 0.01248, + "1515": 0.01212, + "1520": 0.01177, + "1525": 0.01141, + "1530": 0.01106, + "1535": 0.0107, + "1540": 0.01035, + "1545": 0.01, + "1550": 0.00964, + "1555": 0.00929, + "1560": 0.00893, + "1565": 0.00858, + "1570": 0.00822, + "1575": 0.00787, + "1580": 0.00751, + "1585": 0.00716, + "1590": 0.00681, + "1595": 0.00645, + "1600": 0.0061, + "1605": 0.00574, + "1610": 0.00539, + "1615": 0.00503, + "1620": 0.00468, + "1625": 0.00432, + "1630": 0.00397, + "1635": 0.00362, + "1640": 0.00326, + "1645": 0.00291, + "1650": 0.00255, + "1655": 0.0022, + "1660": 0.00184, + "1665": 0.00149, + "1670": 0.00113, + "1675": 0.00078, + "1680": 0.00043, + "1685": 7e-05, + "1690": 0 + } + + # Stoploss: + stoploss = -0.218 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/user_data/strategies/MoniGoManiConfiguration.py b/user_data/strategies/MoniGoManiConfiguration.py index 0b582e2eb..3e33a68e0 100644 --- a/user_data/strategies/MoniGoManiConfiguration.py +++ b/user_data/strategies/MoniGoManiConfiguration.py @@ -1,50 +1,64 @@ -################################################################################# -### *** THIS IS A CHILD STRATEGY, REQUIRES IMPORT OF PARENT STRATEGY ** ### -################################################################################# +# --- Do not remove these libs ---------------------------------------------------------------------- +from MoniGoManiHyperStrategy import MoniGoManiHyperStrategy as MGMStrategy from freqtrade.strategy \ import IStrategy, CategoricalParameter, IntParameter, RealParameter, merge_informative_pair, timeframe_to_minutes -# Strategy specific imports, files must reside in same folder as strategy import sys from pathlib import Path + sys.path.append(str(Path(__file__).parent)) -from MoniGoManiHyperStrategy import MoniGoManiHyperStrategy as MGMStrategy -### function to initialize the parameters values without manual overriding -def initVars(pDict, pParameter, pDefaultValue, pMaxValue, pThreshold): - pValue = pDict.get(pParameter) +# Function to initialize the parameters values without manual overriding +def init_vars(parameter_dictionary, parameter_name, parameter_default_value, parameter_max_value, + parameter_threshold, precision): + parameter_value = parameter_dictionary.get(parameter_name) - if pValue == None : - minValue = 0 - maxValue = pMaxValue + if parameter_value is None: + min_value = 0 + max_value = parameter_max_value else: - minValue = 0 if pValue <= (0 + pThreshold) else pValue - pThreshold - maxValue = pMaxValue if pValue >= (pMaxValue - pThreshold) else pValue + pThreshold - - dictReturnVars = { - "minValue": minValue, - "maxValue": maxValue, - "defValue": pDefaultValue if pValue == None else (pMaxValue if maxValue == pMaxValue else (0 if minValue == 0 else pValue )), - "opt&load": False if pValue != None and (minValue == 0 or maxValue == pMaxValue) else True + min_value = 0 if parameter_value <= (0 + parameter_threshold) else \ + parameter_value - parameter_threshold + max_value = parameter_max_value if parameter_value >= (parameter_max_value - parameter_threshold) else \ + parameter_value + parameter_threshold + + if parameter_value is None: + default_value = parameter_default_value + elif max_value == parameter_max_value: + default_value = parameter_max_value + elif min_value == 0: + default_value = 0 + else: + default_value = parameter_value + + return_vars_dictionary = { + "min_value": min_value * precision, + "max_value": max_value * precision, + "default_value": default_value * precision, + "opt_and_Load": False if parameter_value is not None and ( + min_value == 0 or max_value == parameter_max_value) else True } - return dictReturnVars + return return_vars_dictionary + -### Sub-strategy with your own specific parameters +################################################################################# +# *** THIS IS A CHILD STRATEGY, REQUIRES IMPORT OF PARENT STRATEGY *** # +################################################################################# class MoniGoManiConfiguration(MGMStrategy): #################################################################################################################### - ### Global parameters you want to override + # Global parameters you want to override #################################################################################################################### timeframe = '1h' precision = 1 - + # Search space threshold: to reduce the search space with min / max around the first value found - searchThreshold = 10 + search_threshold = 10 # Maximum value for weighted indicators - weightMaxValue = 100 + max_weight_value = 100 # Maximum value for trend lookback indicators - trendLookbackMaxValue = int(360 / timeframe_to_minutes(timeframe)) + max_trend_lookback_value = int(360 / timeframe_to_minutes(timeframe)) # Number of weighted signals: # Fill in the total number of different weighted signals in use in the weighted tables @@ -58,9 +72,9 @@ class MoniGoManiConfiguration(MGMStrategy): roi_table_step_size = 5 #################################################################################################################### - ################################## START OF HYPEROPT RESULTS COPY-PASTE SECTION ################################ - #################################################################################################################### - #### COPY/PASTE hyperopt results after 1st iteration below ##### + # START OF HYPEROPT RESULTS COPY-PASTE SECTION # + # ################################################################################################################## + # ### COPY/PASTE hyperopt results after 1st iteration below ##### # Buy hyperspace params: buy_params = { } @@ -75,26 +89,21 @@ class MoniGoManiConfiguration(MGMStrategy): # Trailing stop: - - - ###################################################################### - #### DO NOT REMOVE / MODIFY THESE LINES ##### + # ##################################################################### + # ### DO NOT REMOVE / MODIFY THESE LINES ##### buy_param_final = buy_params sell_param_final = sell_params - ###################################################################### - - ###################################################################### - #### COPY/PASTE hyperopt result of 2nd (or more) iteration below ##### - #################################################################################################################### - - - ################################### END OF HYPEROPT RESULTS COPY-PASTE SECTION ################################# - #################################################################################################################### + # #################################################################### + # #################################################################### + # ### COPY/PASTE hyperopt result of 2nd (or more) iteration below ##### + # ################################################################################################################## + # ################################# END OF HYPEROPT RESULTS COPY-PASTE SECTION ################################# + # ################################################################################################################## - #################################################################################################################### - #### DO NOT REMOVE / MODIFY THESE LINES --- CONCATENATION OF 1st AND 2nd result ##### + # ################################################################################################################## + # ### DO NOT REMOVE / MODIFY THESE LINES --- CONCATENATION OF 1st AND 2nd result ##### buy_param_final.update(buy_params) sell_param_final.update(sell_params) @@ -102,38 +111,46 @@ class MoniGoManiConfiguration(MGMStrategy): sell_params = sell_param_final #################################################################################################################### - - #################################################################################################################### - ########################################### START OF OVERRIDES SECTION ######################################### + # START OF OVERRIDES SECTION # #################################################################################################################### - - ################## 1st run --- initial overrides ################### + + # ################ 1st run --- initial overrides ################### # ---------------------------------------------------------------- # # Buy HyperOpt Space Parameters # # ---------------------------------------------------------------- # # React to Buy Signals when certain trends are detected (False would disable trading in said trend) - buy___trades_when_downwards = CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - buy___trades_when_sideways = CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - buy___trades_when_upwards = CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + buy___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + buy___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) + buy___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) # ---------------------------------------------------------------- # # Sell HyperOpt Space Parameters # # ---------------------------------------------------------------- # # React to Sell Signals when certain trends are detected (False would disable trading in said trend) - sell___trades_when_downwards = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___trades_when_sideways = CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - sell___trades_when_upwards = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + sell___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) # ---------------------------------------------------------------- # # Sell Unclogger HyperOpt Space Parameters # # ---------------------------------------------------------------- # - sell___unclogger_enabled = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_downwards_candles = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_sideways_candles = CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_upwards_candles = CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - - ################## 2nd run --- addtional overrides ################# + sell___unclogger_enabled = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_downwards_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_sideways_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_upwards_candles = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + + # ################# 2nd run --- addtional overrides ################# # # !!!!!!!!!! Before going further make sure have set "optimize=False" for the parameters of section 1 !!!!!!!!! # @@ -170,148 +187,209 @@ class MoniGoManiConfiguration(MGMStrategy): # ------------------- # Total Buy Signal Percentage needed for a signal to be positive - pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - buy__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - buy__downwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), + search_threshold, precision) + buy__downwards_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + buy__downwards_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - pInit = initVars(buy_params, "buy_downwards_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_downwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - buy_downwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = \ + init_vars(buy_params, "buy_downwards_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, + precision) + buy_downwards_trend_adx_strong_up_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + buy_downwards_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_downwards_trend_ema_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_downwards_trend_ema_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + buy_downwards_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + buy_downwards_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_downwards_trend_sma_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_downwards_trend_sma_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + buy_downwards_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sideways Trend Buy # ------------------ # Total Buy Signal Percentage needed for a signal to be positive - pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - buy__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - buy__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), + search_threshold, precision) + buy__sideways_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + buy__sideways_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - pInit = initVars(buy_params, "buy_sideways_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_macd_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_sideways_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - buy_sideways_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(buy_params, "buy_sideways_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, + precision) + buy_sideways_trend_adx_strong_up_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + buy_sideways_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_sideways_trend_ema_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_sideways_trend_ema_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + buy_sideways_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + buy_sideways_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_sideways_trend_sma_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_sideways_trend_sma_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + buy_sideways_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Upwards Trend Buy # ----------------- # Total Buy Signal Percentage needed for a signal to be positive - pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - buy__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - buy__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), + search_threshold, precision) + buy__upwards_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + buy__upwards_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - pInit = initVars(buy_params, "buy_upwards_trend_adx_strong_up_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_adx_strong_up_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_ema_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_ema_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_sma_long_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_sma_short_golden_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(buy_params, "buy_upwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - buy_upwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='buy', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(buy_params, "buy_upwards_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, + precision) + buy_upwards_trend_adx_strong_up_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + buy_upwards_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_upwards_trend_ema_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_upwards_trend_ema_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + buy_upwards_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + buy_upwards_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_upwards_trend_sma_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", 0, max_weight_value, + search_threshold, precision) + buy_upwards_trend_sma_short_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + buy_upwards_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # ---------------------------------------------------------------- # # Sell HyperOpt Space Parameters # @@ -329,159 +407,228 @@ class MoniGoManiConfiguration(MGMStrategy): # -------------------- # Total Sell Signal Percentage needed for a signal to be positive - pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - sell__downwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed", 30, + int(100 * number_of_weighted_signals), search_threshold, precision) + sell__downwards_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + sell__downwards_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - pInit = initVars(sell_params, "sell_downwards_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_downwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - sell_downwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell_downwards_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, + precision) + sell_downwards_trend_adx_strong_down_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + sell_downwards_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_downwards_trend_ema_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_downwards_trend_ema_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + sell_downwards_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + sell_downwards_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_downwards_trend_sma_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_downwards_trend_sma_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + sell_downwards_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sideways Trend Sell # ------------------- # Total Sell Signal Percentage needed for a signal to be positive - pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - sell__sideways_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - sell__sideways_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed", 30, + int(100 * number_of_weighted_signals), search_threshold, precision) + sell__sideways_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + sell__sideways_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - pInit = initVars(sell_params, "sell_sideways_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_macd_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_sideways_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - sell_sideways_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell_sideways_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, + precision) + sell_sideways_trend_adx_strong_down_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + sell_sideways_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_sideways_trend_ema_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_sideways_trend_ema_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + sell_sideways_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + sell_sideways_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_sideways_trend_sma_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_sideways_trend_sma_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + sell_sideways_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Upwards Trend Sell # ------------------ # Total Sell Signal Percentage needed for a signal to be positive - pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), searchThreshold) - sell__upwards_trend_total_signal_needed = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 1, trendLookbackMaxValue, searchThreshold) - sell__upwards_trend_total_signal_needed_candles_lookback_window = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), + search_threshold, precision) + sell__upwards_trend_total_signal_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 1, + max_trend_lookback_value, search_threshold, precision) + sell__upwards_trend_total_signal_needed_candles_lookback_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - pInit = initVars(sell_params, "sell_upwards_trend_adx_strong_down_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_adx_strong_down_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_bollinger_bands_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_bollinger_bands_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_ema_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_ema_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_macd_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_macd_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_rsi_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_rsi_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_sma_long_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_sma_short_death_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) - - pInit = initVars(sell_params, "sell_upwards_trend_vwap_cross_weight", 0, weightMaxValue, searchThreshold) - sell_upwards_trend_vwap_cross_weight = IntParameter(pInit["minValue"], int(pInit["maxValue"] * precision), \ - default=pInit["defValue"], space='sell', optimize=pInit["opt&load"], load=pInit["opt&load"]) + param = init_vars(sell_params, "sell_upwards_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, + precision) + sell_upwards_trend_adx_strong_down_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, + precision) + sell_upwards_trend_bollinger_bands_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_upwards_trend_ema_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_upwards_trend_ema_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + sell_upwards_trend_macd_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + sell_upwards_trend_rsi_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_upwards_trend_sma_long_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", 0, max_weight_value, + search_threshold, precision) + sell_upwards_trend_sma_short_death_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, + precision) + sell_upwards_trend_vwap_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # ---------------------------------------------------------------- # # Sell Unclogger HyperOpt Space Parameters # # ---------------------------------------------------------------- # - sell___unclogger_minimal_losing_trade_duration_minutes = IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), space='sell', optimize=True, load=True) - sell___unclogger_minimal_losing_trades_open = IntParameter(1, 5, default=1, space='sell', optimize=True, load=True) - sell___unclogger_open_trades_losing_percentage_needed = IntParameter(1, int(60 * precision), default=1, space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window = IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window_percentage_needed = IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) + sell___unclogger_minimal_losing_trade_duration_minutes = \ + IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), + space='sell', optimize=True, load=True) + sell___unclogger_minimal_losing_trades_open = \ + IntParameter(int(1 * precision), int(5 * precision), default=int(1 * precision), + space='sell', optimize=True, load=True) + sell___unclogger_open_trades_losing_percentage_needed = \ + IntParameter(int(1 * precision), int(60 * precision), default=int(1 * precision), + space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window = \ + IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), + space='sell', optimize=True, load=True) + sell___unclogger_trend_lookback_candles_window_percentage_needed = \ + IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), + space='sell', optimize=True, load=True) #################################################################################################################### - ############################################ END OF OVERRIDES SECTION ########################################## + # END OF OVERRIDES SECTION # #################################################################################################################### - diff --git a/user_data/strategies/MoniGoManiHyperStrategy.py b/user_data/strategies/MoniGoManiHyperStrategy.py index 25b19a334..0de3b418e 100644 --- a/user_data/strategies/MoniGoManiHyperStrategy.py +++ b/user_data/strategies/MoniGoManiHyperStrategy.py @@ -24,7 +24,7 @@ # Then change back to ta. so IDE won't nag about accessing a protected member of TA-Lib # ---------------------------------------------------------------------------------------------------- - +# ToDo: Fix 'precision', child strat will apply precision to all values, unclogger doesn't yet class MoniGoManiHyperStrategy(IStrategy): """ #################################################################################### From 41f987543cb689d045d27d2af456c184f8eb230e Mon Sep 17 00:00:00 2001 From: Rikj000 Date: Mon, 24 May 2021 12:10:17 +0200 Subject: [PATCH 5/6] Reworked MoniGoManiConfiguration: Renamed variables, Reworked init_vars (Added precision and overrideable parameters, Implemented unclogger), Added easily tweak-able minimum/maximum search space values and thresholds. + Reworked mgm-config.json files (Applied more VolumePairList Filters + Moved Static pair_white/blacklists to public files) + Added Some Test Results and new StaticPairLists + Made USDT/MGMConfiguration the new default --- MGM_DOCUMENTATION.md | 27 +- README.md | 30 +- ...d_startup_candle_count_bear_market_TFZ.log | 73 ++ ...d_startup_candle_count_bull_market_TFZ.log | 81 +++ ...tartup_candle_count_bull_market_no_TFZ.log | 80 ++ ...ation_freqtrade_develop-ae037b0e_nr524.log | 239 ++++++ ...ation_freqtrade_develop-ae037b0e_nr954.log | 221 ++++++ ...t1-20-05-2021_MoniGoManiHyperStrategy.log} | 0 ...t1-20-05-2021_MoniGoManiConfiguration.log} | 0 ...GoManiConfiguration_bugfixed_precision.log | 554 ++++++++++++++ ..._signal_needed_candles_lookback_window.log | 672 +++++++++++++++++ ...GoManiConfiguration_bugfixed_precision.log | 684 ++++++++++++++++++ ...iConfiguration_bugfixed_timeframe_zoom.log | 263 +++++++ ...guration_bugfixed_startup_candle_count.log | 258 +++++++ ...guration_bugfixed_startup_candle_count.log | 240 ++++++ ...guration_bugfixed_startup_candle_count.log | 246 +++++++ ...nfiguration_freqtrade_develop-ae037b0e.log | 251 +++++++ docker-compose.yml | 8 +- .../{config-btc.json => mgm-config-btc.json} | 161 ++--- ...g-private.json => mgm-config-private.json} | 2 + ...{config-usdt.json => mgm-config-usdt.json} | 118 +-- ...Binance-BTC-Top-Volume-StaticPairList.json | 46 +- ...ance-USDT-All-Tradable-StaticPairList.json | 133 ++++ ...inance-USDT-Top-Volume-StaticPairList.json | 18 +- ...ce-Retrieve-Top-Volume-StaticPairList.json | 43 +- .../strategies/MoniGoManiConfiguration.py | 494 +++++++------ .../strategies/MoniGoManiHyperStrategy.py | 387 ++++++---- 27 files changed, 4746 insertions(+), 583 deletions(-) create mode 100644 Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bear_market_TFZ.log create mode 100644 Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_TFZ.log create mode 100644 Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_no_TFZ.log create mode 100644 Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr524.log create mode 100644 Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr954.log rename Some Test Results/{v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log => v0.11.0/HyperOptResults1_Pt1-20-05-2021_MoniGoManiHyperStrategy.log} (100%) rename Some Test Results/{v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log => v0.11.0/HyperOptResults2_Pt1-20-05-2021_MoniGoManiConfiguration.log} (100%) create mode 100644 Some Test Results/v0.11.0/HyperOptResults3_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults3_Pt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision_wrong_total_signal_needed_candles_lookback_window.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults3_Pt2-Attempt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults4_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_timeframe_zoom.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021-Attempt2_MoniGoManiConfiguration_bugfixed_startup_candle_count.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults5_Pt2-23-05-2021-MoniGoManiConfiguration_bugfixed_startup_candle_count.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults6_Pt1-23-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e.log rename user_data/{config-btc.json => mgm-config-btc.json} (61%) rename user_data/{config-private.json => mgm-config-private.json} (84%) rename user_data/{config-usdt.json => mgm-config-usdt.json} (62%) create mode 100644 user_data/mgm_pair_lists/Binance-USDT-All-Tradable-StaticPairList.json diff --git a/MGM_DOCUMENTATION.md b/MGM_DOCUMENTATION.md index 4e71175c9..4c3b48b90 100644 --- a/MGM_DOCUMENTATION.md +++ b/MGM_DOCUMENTATION.md @@ -334,28 +334,28 @@ trailing stoploss and ROI behaviour during backtesting/hyperopting. # Go-To Commands: -For Hyper Opting *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py))*: +For **Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py): ```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 ``` -For Back Testing *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) or legacy [MoniGoManiHyperOpted.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoManiHyperOpted.py) or legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py))*: +For **Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py):: ```powershell -freqtrade backtesting -s MoniGoManiHyperStrategy -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 +freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 ``` -For Total Average Signal Importance Calculation *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +For **Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: ```powershell -python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc BTC +python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT ``` -To retrieve a current **Binance-BTC-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: +To retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: ```powershell -freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote BTC --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json -# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'config-private.json' file to start using it! +freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote USDT --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json +# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config-usdt.json' file to start using it! ``` -For Hyper Opting *(the legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py) + legacy [MoniGoManiHyperOpt.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/hyperopts/MoniGoManiHyperOpt.py). Please use the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) instead though since support for Legacy versions stopped!)*: +To **Download Candle Data**: ```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all --hyperopt MoniGoManiHyperOpt -s MoniGoMani -e 1000 --timerange 20210101-20210316 +freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json ``` # How to share your test results properly: @@ -374,4 +374,7 @@ The epoch table being generated when hyperopting + the number of the epoch you u ### TypeError: integer argument expected, got float You likely are using a `Float` value where you should be using a `Integer` value. Hopefully your error will show more information about which Parameter. - `Integer` = Whole number. Examples: 1, 3, 23 -- `Float` = Decimal number. Examples: 1.53, 4.2, 17.12 \ No newline at end of file +- `Float` = Decimal number. Examples: 1.53, 4.2, 17.12 + +### -bash: jq: command not found +[jq](https://stedolan.github.io/jq/) (command-line JSON processor) still needs to be installed. \ No newline at end of file diff --git a/README.md b/README.md index 18eeb3bf5..c7c23c04b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# **Current `MoniGoMani` status @ `v0.10.0`** +# **Current `MoniGoMani` status @ `v0.11.0`**

@@ -24,7 +24,7 @@ ``` #################################################################################### #### #### - ### MoniGoMani v0.10.0 by Rikj000 ### + ### MoniGoMani v0.11.0 by Rikj000 ### ## ----------------------------- ## # Isn't that what we all want? Our money to go many? # # Well that's what this Freqtrade strategy hopes to do for you! # @@ -82,6 +82,7 @@ Further it will do various HyperOptable checks upon the open trades to see if th - Configurable Trading on Downwards/Sideways/Upwards trends for Buys/Sells ***(HyperOptable!)*** - Settings to Enable/Disable HyperOpting for individual `buy_params` & `sell_params` and setting them to a static value through [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides) - Configurable [Open Trade Unclogger](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#open-trade-unclogger), if enabled it attempts to unclog the bot when it's stuck with losing trades & unable to trade more new trades ***(HyperOptable!)*** :rocket: +- [TimeFrame-Zoom](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#timeframe-zoom) during backtesting/hyperopting to prevent profit exploitation! *(Read: [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/))* - Custom Long Continuously decreasing ROI Table generation with configurable `roi_table_step_size` - [Precision Setting](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#precision-setting) to alter the step-size used during HyperOpting - 2 [Custom HyperLoss Functions](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#custom-hyperloss-functions): @@ -89,39 +90,37 @@ Further it will do various HyperOptable checks upon the open trades to see if th - [UncloggedWinRatioAndProfitRatioLoss](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/hyperopts/UncloggedWinRatioAndProfitRatioLoss.py): Same as WinRatioAndProfitRatioLoss but has a configurable Percentage of loss to ignore while HyperOpting (Small losses are a by-product of the Unclogger) - [Top Volume & All Tradable StaticPairList Downloading](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#download-staticpairlists) to easily fetch a good StaticPairList - [Total Overall Signal Importance Calculator](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#total-overall-signal-importance-calculator) for Total Average Signal Importance Calculation upon the HyperOpt Results (With some really handy subcommands) -- \*\*[TimeFrame-Zoom](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#timeframe-zoom) during backtesting/hyperopting to prevent profit exploitation! *(Read: [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/))* - Pre-Configured Main/Sub Plot Configurations for visualisation of all indicators used in FreqUI - Turn On/Off **All** Individual Weighted Signal DataFrame entries for easy debugging in an IDE or better speed while dry/live running or hyperopting *\*Support/Updates for Legacy versions stopped since Auto-HyperOptable Strategies are merged into the official Freqtrade Development Branch! Please switch to the new MoniGoManiHyperStrategy!* -*\*\*It's recommended to run **without** TimeFrame-Zoom since **v0.10.0**!* ## Need help getting started? Take a good read at the [**MGM_DOCUMENTATION.md**](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md), the current place where you can find all MoniGoMani Documentation! ## Go-To Commands: -For Hyper Opting *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py))*: +For **Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py): ```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 ``` -For Back Testing *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) or legacy [MoniGoManiHyperOpted.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoManiHyperOpted.py) or legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py))*: +For **Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py):: ```powershell -freqtrade backtesting -s MoniGoManiHyperStrategy -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 +freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 ``` -For Total Average Signal Importance Calculation *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +For **Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: ```powershell -python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc BTC +python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT ``` -To retrieve a current **Binance-BTC-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: +To retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: ```powershell -freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote BTC --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json -# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'config-private.json' file to start using it! +freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote USDT --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json +# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config-usdt.json' file to start using it! ``` -For Hyper Opting *(the legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py) + legacy [MoniGoManiHyperOpt.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/hyperopts/MoniGoManiHyperOpt.py). Please use the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) instead though since support for Legacy versions stopped!)*: +To **Download Candle Data**: ```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all --hyperopt MoniGoManiHyperOpt -s MoniGoMani -e 1000 --timerange 20210101-20210316 +freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json ``` ## **Got Test Results / Ideas / Config Improvements?** @@ -141,6 +140,7 @@ More general chats for `Technical Analysis`, `Freqtrade`, `Iconomi` and `Random` - Extract all `MoniGoMani Settings` into a `config-mgm.json` that will require manual configuration + Extract the `HyperOpt Results Copy/Paste section` into a `config-mgm-hyperopt.json`, this last file will be extractable from HyperOpt Results using a command! - Implement Parent/Child Strategy format - Automate as much of the [optimization process](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) of MoniGoMani as possible +- More global/broader trend detection using zoomed out indicator data - **Other & Better indicators!** MoniGoMani has been designed so signals can easily be inserted / swapped out Please use the `Total-Overall-Signal-Importance-Calculator.py` to find out which signals do best and report your results to the [Discord Server](https://discord.gg/xFZ9bB6vEz), so we can improve! :rocket: - [Sigmoid](https://en.wikipedia.org/wiki/Sigmoid_function) Buy/Sell Signals diff --git a/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bear_market_TFZ.log b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bear_market_TFZ.log new file mode 100644 index 000000000..3dd53e871 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bear_market_TFZ.log @@ -0,0 +1,73 @@ +freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 +================================================================================================================================================ +Strategy using timeframe: 5m +Result for strategy MoniGoManiConfiguration +============================================================== BACKTESTING REPORT ============================================================= +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|------------+--------+----------------+----------------+-------------------+----------------+------------------+--------+---------+----------| +| DOGE/USDT | 7 | 5.60 | 39.17 | 17.643 | 3.53 | 1 day, 14:26:00 | 3 | 3 | 1 | +| XRP/USDT | 3 | 5.31 | 15.92 | 7.172 | 1.43 | 4 days, 12:05:00 | 1 | 2 | 0 | +| UNI/USDT | 9 | 1.00 | 9.01 | 4.058 | 0.81 | 12:27:00 | 6 | 3 | 0 | +| ADA/USDT | 11 | 0.34 | 3.74 | 1.685 | 0.34 | 21:33:00 | 7 | 2 | 2 | +| ICP/USDT | 0 | 0.00 | 0.00 | 0.000 | 0.00 | 0:00 | 0 | 0 | 0 | +| TRX/USDT | 5 | -1.27 | -6.37 | -2.868 | -0.57 | 2 days, 22:14:00 | 1 | 3 | 1 | +| ETH/USDT | 9 | -1.13 | -10.16 | -4.576 | -0.92 | 1 day, 1:54:00 | 7 | 1 | 1 | +| BTT/USDT | 6 | -1.95 | -11.68 | -5.262 | -1.05 | 1 day, 16:21:00 | 2 | 3 | 1 | +| XLM/USDT | 11 | -1.30 | -14.27 | -6.429 | -1.29 | 1 day, 1:59:00 | 5 | 5 | 1 | +| TFUEL/USDT | 8 | -2.87 | -22.95 | -10.337 | -2.07 | 1 day, 6:22:00 | 4 | 3 | 1 | +| ALGO/USDT | 2 | -14.32 | -28.64 | -12.902 | -2.58 | 7 days, 18:30:00 | 1 | 0 | 1 | +| HOT/USDT | 8 | -3.82 | -30.55 | -13.759 | -2.75 | 1 day, 11:18:00 | 2 | 5 | 1 | +| BTC/USDT | 5 | -7.60 | -38.00 | -17.119 | -3.42 | 3 days, 10:07:00 | 2 | 1 | 2 | +| MKR/USDT | 6 | -6.93 | -41.55 | -18.718 | -3.74 | 2 days, 10:11:00 | 4 | 0 | 2 | +| WIN/USDT | 11 | -4.87 | -53.57 | -24.131 | -4.83 | 1 day, 0:41:00 | 6 | 3 | 2 | +| TOTAL | 101 | -1.88 | -189.91 | -85.543 | -17.11 | 1 day, 15:27:00 | 51 | 34 | 16 | +============================================================= SELL REASON STATS ============================================================== +| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------+---------+----------+----------------+----------------+-------------------+----------------| +| roi | 83 | 49 | 34 | 0 | 3.52 | 292.19 | 131.615 | 19.48 | +| stop_loss | 13 | 0 | 0 | 13 | -34.43 | -447.61 | -201.624 | -29.84 | +| force_sell | 3 | 0 | 0 | 3 | -11.58 | -34.73 | -15.646 | -2.32 | +| MGM_unclogging_losing_trade | 2 | 2 | 0 | 0 | 0.12 | 0.25 | 0.112 | 0.02 | +========================================================= LEFT OPEN TRADES REPORT ========================================================= +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|----------+--------+----------------+----------------+-------------------+----------------+----------------+--------+---------+----------| +| BTC/USDT | 1 | -4.25 | -4.25 | -1.914 | -0.38 | 3:00:00 | 0 | 0 | 1 | +| ADA/USDT | 1 | -12.48 | -12.48 | -5.621 | -1.12 | 4:45:00 | 0 | 0 | 1 | +| MKR/USDT | 1 | -18.01 | -18.01 | -8.111 | -1.62 | 7:00:00 | 0 | 0 | 1 | +| TOTAL | 3 | -11.58 | -34.73 | -15.646 | -3.13 | 4:55:00 | 0 | 0 | 3 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-05-01 00:00:00 | +| Backtesting to | 2021-05-20 00:00:00 | +| Max open trades | 15 | +| | | +| Total trades | 101 | +| Starting balance | 500.000 USDT | +| Final balance | 414.457 USDT | +| Absolute profit | -85.543 USDT | +| Total profit % | -17.11% | +| Trades per day | 5.32 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 4545.000 USDT | +| | | +| Best Pair | DOGE/USDT 39.17% | +| Worst Pair | WIN/USDT -53.57% | +| Best trade | DOGE/USDT 52.33% | +| Worst trade | DOGE/USDT -34.43% | +| Best day | 39.487 USDT | +| Worst day | -155.096 USDT | +| Days win/draw/lose | 13 / 4 / 3 | +| Avg. Duration Winners | 21:57:00 | +| Avg. Duration Loser | 4 days, 11:26:00 | +| | | +| Min balance | 414.457 USDT | +| Max balance | 605.333 USDT | +| Drawdown | 423.74% | +| Drawdown | 190.876 USDT | +| Drawdown high | 105.333 USDT | +| Drawdown low | -85.543 USDT | +| Drawdown Start | 2021-05-12 23:00:00 | +| Drawdown End | 2021-05-20 00:00:00 | +| Market change | -22.62% | +=============================================== \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_TFZ.log b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_TFZ.log new file mode 100644 index 000000000..bddda3583 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_TFZ.log @@ -0,0 +1,81 @@ +freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 +================================================================================================================================================ +Strategy using timeframe: 5m +Result for strategy MoniGoManiConfiguration +============================================================== BACKTESTING REPORT ============================================================= +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|------------+--------+----------------+----------------+-------------------+----------------+------------------+--------+---------+----------| +| DOGE/USDT | 29 | 11.70 | 339.36 | 152.863 | 30.57 | 1 day, 20:05:00 | 12 | 12 | 5 | +| HOT/USDT | 29 | 10.27 | 297.83 | 134.156 | 26.83 | 1 day, 17:32:00 | 17 | 12 | 0 | +| BTT/USDT | 27 | 7.49 | 202.12 | 91.046 | 18.21 | 1 day, 18:56:00 | 15 | 12 | 0 | +| TFUEL/USDT | 21 | 8.72 | 183.15 | 82.498 | 16.50 | 2 days, 9:30:00 | 13 | 6 | 2 | +| WIN/USDT | 26 | 5.89 | 153.10 | 68.964 | 13.79 | 1 day, 23:51:00 | 17 | 8 | 1 | +| UNI/USDT | 32 | 3.53 | 113.10 | 50.948 | 10.19 | 1 day, 8:56:00 | 16 | 15 | 1 | +| ADA/USDT | 29 | 3.55 | 103.08 | 46.432 | 9.29 | 1 day, 6:18:00 | 16 | 12 | 1 | +| XLM/USDT | 26 | 3.79 | 98.64 | 44.430 | 8.89 | 1 day, 22:45:00 | 9 | 15 | 2 | +| MKR/USDT | 28 | 2.86 | 80.05 | 36.059 | 7.21 | 1 day, 15:06:00 | 12 | 13 | 3 | +| ETH/USDT | 17 | 2.84 | 48.29 | 21.754 | 4.35 | 3 days, 13:54:00 | 9 | 7 | 1 | +| TRX/USDT | 26 | 1.82 | 47.29 | 21.301 | 4.26 | 2 days, 1:25:00 | 10 | 16 | 0 | +| BTC/USDT | 27 | 1.31 | 35.24 | 15.874 | 3.17 | 1 day, 15:15:00 | 14 | 13 | 0 | +| XRP/USDT | 17 | 1.80 | 30.66 | 13.809 | 2.76 | 3 days, 16:56:00 | 4 | 11 | 2 | +| ALGO/USDT | 35 | 0.87 | 30.59 | 13.778 | 2.76 | 1 day, 13:18:00 | 12 | 21 | 2 | +| TOTAL | 369 | 4.78 | 1762.49 | 793.912 | 158.78 | 1 day, 21:58:00 | 176 | 173 | 20 | +============================================================= SELL REASON STATS ============================================================== +| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------+---------+----------+----------------+----------------+-------------------+----------------| +| roi | 328 | 155 | 173 | 0 | 3.88 | 1273.9 | 573.828 | 90.99 | +| trailing_stop_loss | 14 | 13 | 0 | 1 | 57.48 | 804.77 | 362.51 | 57.48 | +| force_sell | 11 | 2 | 0 | 9 | 2.45 | 26.9 | 12.118 | 1.92 | +| stop_loss | 10 | 0 | 0 | 10 | -34.43 | -344.31 | -155.096 | -24.59 | +| MGM_unclogging_losing_trade | 6 | 6 | 0 | 0 | 0.2 | 1.22 | 0.551 | 0.09 | +=========================================================== LEFT OPEN TRADES REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|-----------+--------+----------------+----------------+-------------------+----------------+-------------------+--------+---------+----------| +| HOT/USDT | 1 | 86.47 | 86.47 | 38.952 | 7.79 | 2 days, 14:00:00 | 1 | 0 | 0 | +| TRX/USDT | 1 | 0.22 | 0.22 | 0.097 | 0.02 | 3:00:00 | 1 | 0 | 0 | +| DOGE/USDT | 1 | -0.22 | -0.22 | -0.099 | -0.02 | 2:00:00 | 0 | 0 | 1 | +| WIN/USDT | 1 | -0.72 | -0.72 | -0.325 | -0.06 | 10:00:00 | 0 | 0 | 1 | +| UNI/USDT | 1 | -1.02 | -1.02 | -0.458 | -0.09 | 3:00:00 | 0 | 0 | 1 | +| XRP/USDT | 1 | -7.97 | -7.97 | -3.589 | -0.72 | 7 days, 8:00:00 | 0 | 0 | 1 | +| ETH/USDT | 1 | -8.09 | -8.09 | -3.642 | -0.73 | 22 days, 10:00:00 | 0 | 0 | 1 | +| ADA/USDT | 1 | -8.42 | -8.42 | -3.792 | -0.76 | 4 days, 7:00:00 | 0 | 0 | 1 | +| ALGO/USDT | 1 | -8.50 | -8.50 | -3.828 | -0.77 | 11:00:00 | 0 | 0 | 1 | +| XLM/USDT | 1 | -11.33 | -11.33 | -5.102 | -1.02 | 12 days, 12:00:00 | 0 | 0 | 1 | +| MKR/USDT | 1 | -13.53 | -13.53 | -6.095 | -1.22 | 5 days, 23:00:00 | 0 | 0 | 1 | +| TOTAL | 11 | 2.45 | 26.90 | 12.118 | 2.42 | 5 days, 2:49:00 | 2 | 0 | 9 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 369 | +| Starting balance | 500.000 USDT | +| Final balance | 1293.912 USDT | +| Absolute profit | 793.912 USDT | +| Total profit % | 158.78% | +| Trades per day | 4.99 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 16605.000 USDT | +| | | +| Best Pair | DOGE/USDT 339.36% | +| Worst Pair | ALGO/USDT 30.59% | +| Best trade | TFUEL/USDT 134.99% | +| Worst trade | TFUEL/USDT -34.43% | +| Best day | 83.774 USDT | +| Worst day | -62.038 USDT | +| Days win/draw/lose | 57 / 13 / 5 | +| Avg. Duration Winners | 1 day, 18:19:00 | +| Avg. Duration Loser | 4 days, 8:08:00 | +| | | +| Min balance | 500.000 USDT | +| Max balance | 1304.160 USDT | +| Drawdown | 137.73% | +| Drawdown | 62.038 USDT | +| Drawdown high | 703.706 USDT | +| Drawdown low | 641.668 USDT | +| Drawdown Start | 2021-02-22 23:50:00 | +| Drawdown End | 2021-02-23 09:10:00 | +| Market change | 565.56% | +=============================================== \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_no_TFZ.log b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_no_TFZ.log new file mode 100644 index 000000000..0716eb51f --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults5_Pt2-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count_bull_market_no_TFZ.log @@ -0,0 +1,80 @@ +freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 +================================================================================================================================================ +Strategy using timeframe: 1h +Result for strategy MoniGoManiConfiguration +============================================================== BACKTESTING REPORT ============================================================= +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|------------+--------+----------------+----------------+-------------------+----------------+------------------+--------+---------+----------| +| DOGE/USDT | 34 | 7.79 | 264.81 | 119.283 | 23.86 | 1 day, 9:12:00 | 17 | 13 | 4 | +| HOT/USDT | 35 | 6.82 | 238.75 | 107.544 | 21.51 | 1 day, 11:21:00 | 19 | 16 | 0 | +| BTT/USDT | 31 | 6.54 | 202.81 | 91.356 | 18.27 | 1 day, 13:43:00 | 15 | 16 | 0 | +| TFUEL/USDT | 22 | 7.05 | 155.14 | 69.884 | 13.98 | 2 days, 7:00:00 | 10 | 10 | 2 | +| UNI/USDT | 36 | 3.14 | 112.98 | 50.890 | 10.18 | 1 day, 5:25:00 | 20 | 15 | 1 | +| WIN/USDT | 27 | 3.86 | 104.16 | 46.921 | 9.38 | 1 day, 19:47:00 | 14 | 13 | 0 | +| ADA/USDT | 34 | 2.51 | 85.44 | 38.485 | 7.70 | 1 day, 3:44:00 | 12 | 21 | 1 | +| XLM/USDT | 30 | 2.76 | 82.84 | 37.316 | 7.46 | 1 day, 16:14:00 | 11 | 17 | 2 | +| MKR/USDT | 33 | 2.00 | 66.15 | 29.799 | 5.96 | 1 day, 9:38:00 | 14 | 16 | 3 | +| ETH/USDT | 19 | 2.26 | 42.86 | 19.305 | 3.86 | 3 days, 5:03:00 | 9 | 9 | 1 | +| BTC/USDT | 31 | 1.14 | 35.22 | 15.865 | 3.17 | 1 day, 11:19:00 | 18 | 13 | 0 | +| TRX/USDT | 28 | 1.14 | 31.94 | 14.388 | 2.88 | 2 days, 0:17:00 | 10 | 17 | 1 | +| XRP/USDT | 17 | 1.87 | 31.85 | 14.349 | 2.87 | 3 days, 15:25:00 | 6 | 9 | 2 | +| ALGO/USDT | 40 | 0.65 | 26.04 | 11.728 | 2.35 | 1 day, 8:40:00 | 16 | 22 | 2 | +| TOTAL | 417 | 3.55 | 1481.00 | 667.115 | 133.42 | 1 day, 16:39:00 | 191 | 207 | 19 | +============================================================= SELL REASON STATS ============================================================== +| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------+---------+----------+----------------+----------------+-------------------+----------------| +| roi | 379 | 172 | 207 | 0 | 2.92 | 1106.9 | 498.602 | 79.06 | +| trailing_stop_loss | 15 | 15 | 0 | 0 | 46.49 | 697.38 | 314.134 | 49.81 | +| stop_loss | 10 | 0 | 0 | 10 | -34.43 | -344.31 | -155.096 | -24.59 | +| force_sell | 10 | 1 | 0 | 9 | 2 | 20.01 | 9.014 | 1.43 | +| MGM_unclogging_losing_trade | 3 | 3 | 0 | 0 | 0.34 | 1.02 | 0.461 | 0.07 | +=========================================================== LEFT OPEN TRADES REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|-----------+--------+----------------+----------------+-------------------+----------------+-------------------+--------+---------+----------| +| HOT/USDT | 1 | 86.47 | 86.47 | 38.952 | 7.79 | 2 days, 14:00:00 | 1 | 0 | 0 | +| DOGE/USDT | 1 | -0.22 | -0.22 | -0.099 | -0.02 | 2:00:00 | 0 | 0 | 1 | +| UNI/USDT | 1 | -1.02 | -1.02 | -0.458 | -0.09 | 3:00:00 | 0 | 0 | 1 | +| TRX/USDT | 1 | -7.40 | -7.40 | -3.332 | -0.67 | 21 days, 2:00:00 | 0 | 0 | 1 | +| XRP/USDT | 1 | -7.97 | -7.97 | -3.589 | -0.72 | 7 days, 8:00:00 | 0 | 0 | 1 | +| ETH/USDT | 1 | -8.09 | -8.09 | -3.642 | -0.73 | 22 days, 10:00:00 | 0 | 0 | 1 | +| ADA/USDT | 1 | -8.42 | -8.42 | -3.792 | -0.76 | 4 days, 7:00:00 | 0 | 0 | 1 | +| ALGO/USDT | 1 | -8.50 | -8.50 | -3.828 | -0.77 | 11:00:00 | 0 | 0 | 1 | +| XLM/USDT | 1 | -11.33 | -11.33 | -5.102 | -1.02 | 12 days, 12:00:00 | 0 | 0 | 1 | +| MKR/USDT | 1 | -13.53 | -13.53 | -6.095 | -1.22 | 5 days, 23:00:00 | 0 | 0 | 1 | +| TOTAL | 10 | 2.00 | 20.01 | 9.014 | 1.80 | 7 days, 16:24:00 | 1 | 0 | 9 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 417 | +| Starting balance | 500.000 USDT | +| Final balance | 1167.115 USDT | +| Absolute profit | 667.115 USDT | +| Total profit % | 133.42% | +| Trades per day | 5.64 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 18765.000 USDT | +| | | +| Best Pair | DOGE/USDT 264.81% | +| Worst Pair | ALGO/USDT 26.04% | +| Best trade | TFUEL/USDT 134.99% | +| Worst trade | TFUEL/USDT -34.43% | +| Best day | 78.393 USDT | +| Worst day | -76.314 USDT | +| Days win/draw/lose | 57 / 13 / 5 | +| Avg. Duration Winners | 1 day, 14:19:00 | +| Avg. Duration Loser | 6 days, 2:13:00 | +| | | +| Min balance | 500.000 USDT | +| Max balance | 1177.037 USDT | +| Drawdown | 172.16% | +| Drawdown | 77.548 USDT | +| Drawdown high | 597.391 USDT | +| Drawdown low | 519.843 USDT | +| Drawdown Start | 2021-02-22 23:00:00 | +| Drawdown End | 2021-02-23 09:00:00 | +| Market change | 537.92% | +=============================================== \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr524.log b/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr524.log new file mode 100644 index 000000000..f3b1403e4 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr524.log @@ -0,0 +1,239 @@ +freqtrade hyperopt-show -n 524 +============================== +Result for strategy MoniGoManiConfiguration +=========================================================== BACKTESTING REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-----------------+-------------------------| +| DOGE/USDT | 215 | 2.66 | 571.17 | 257.282 | 51.46 | 6:29:00 | 201 5 9 93.5 | +| BTT/USDT | 115 | 2.46 | 282.58 | 127.287 | 25.46 | 11:53:00 | 100 11 4 87.0 | +| TFUEL/USDT | 142 | 1.86 | 263.48 | 118.682 | 23.74 | 11:12:00 | 132 7 3 93.0 | +| HOT/USDT | 133 | 1.95 | 259.44 | 116.863 | 23.37 | 10:04:00 | 122 6 5 91.7 | +| WIN/USDT | 109 | 1.86 | 202.32 | 91.134 | 18.23 | 11:32:00 | 95 10 4 87.2 | +| UNI/USDT | 113 | 1.19 | 134.49 | 60.582 | 12.12 | 9:46:00 | 95 17 1 84.1 | +| XRP/USDT | 82 | 1.20 | 98.31 | 44.286 | 8.86 | 14:24:00 | 68 11 3 82.9 | +| MKR/USDT | 94 | 1.04 | 98.15 | 44.210 | 8.84 | 15:07:00 | 84 7 3 89.4 | +| XLM/USDT | 83 | 1.05 | 87.44 | 39.387 | 7.88 | 18:01:00 | 71 9 3 85.5 | +| ALGO/USDT | 80 | 0.87 | 69.55 | 31.327 | 6.27 | 17:57:00 | 64 14 2 80.0 | +| ETH/USDT | 58 | 1.08 | 62.47 | 28.140 | 5.63 | 22:35:00 | 46 11 1 79.3 | +| TRX/USDT | 56 | 1.10 | 61.40 | 27.656 | 5.53 | 1 day, 1:43:00 | 48 6 2 85.7 | +| BTC/USDT | 40 | 0.89 | 35.67 | 16.067 | 3.21 | 1 day, 12:14:00 | 29 10 1 72.5 | +| ADA/USDT | 82 | 0.09 | 7.60 | 3.423 | 0.68 | 18:14:00 | 69 9 4 84.1 | +| TOTAL | 1402 | 1.59 | 2234.05 | 1006.326 | 201.27 | 13:45:00 | 1224 133 45 87.3 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1214 | 1214 0 0 100 | 2.82 | 3429.28 | 1544.72 | 244.95 | +| roi | 139 | 6 133 0 100 | 0.04 | 6.07 | 2.734 | 0.43 | +| stop_loss | 32 | 0 0 32 0 | -32.04 | -1025.15 | -461.781 | -73.23 | +| force_sell | 13 | 0 0 13 0 | -13.6 | -176.76 | -79.624 | -12.63 | +| MGM_unclogging_losing_trade | 4 | 4 0 0 100 | 0.15 | 0.61 | 0.277 | 0.04 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| TRX/USDT | 1 | -5.35 | -5.35 | -2.411 | -0.48 | 2 days, 9:00:00 | 0 0 1 0 | +| ETH/USDT | 1 | -6.02 | -6.02 | -2.710 | -0.54 | 2 days, 5:35:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.62 | -9.62 | -4.334 | -0.87 | 7 days, 0:00:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.01 | -10.01 | -4.508 | -0.90 | 7 days, 6:25:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.23 | -10.23 | -4.610 | -0.92 | 8:40:00 | 0 0 1 0 | +| ADA/USDT | 1 | -12.74 | -12.74 | -5.737 | -1.15 | 2 days, 11:30:00 | 0 0 1 0 | +| MKR/USDT | 1 | -14.73 | -14.73 | -6.634 | -1.33 | 12 days, 10:50:00 | 0 0 1 0 | +| WIN/USDT | 1 | -15.70 | -15.70 | -7.073 | -1.41 | 1 day, 14:45:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -23.52 | -23.52 | -10.593 | -2.12 | 3 days, 17:05:00 | 0 0 1 0 | +| HOT/USDT | 1 | -24.51 | -24.51 | -11.041 | -2.21 | 18:15:00 | 0 0 1 0 | +| TOTAL | 13 | -13.60 | -176.76 | -79.624 | -15.92 | 4 days, 16:59:00 | 0 0 13 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 1402 | +| Starting balance | 500.000 USDT | +| Final balance | 1506.326 USDT | +| Absolute profit | 1006.326 USDT | +| Total profit % | 201.27% | +| Trades per day | 18.95 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 63090.000 USDT | +| | | +| Best Pair | DOGE/USDT 571.17% | +| Worst Pair | ADA/USDT 7.6% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -32.04% | +| Best day | 164.336 USDT | +| Worst day | -100.609 USDT | +| Days win/draw/lose | 60 / 4 / 11 | +| Avg. Duration Winners | 6:33:00 | +| Avg. Duration Loser | 3 days, 16:07:00 | +| Zero Duration Trades | 26.89% (377) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 501.491 USDT | +| Max balance | 1585.950 USDT | +| Drawdown | 351.5% | +| Drawdown | 158.332 USDT | +| Drawdown high | 1028.949 USDT | +| Drawdown low | 870.617 USDT | +| Drawdown Start | 2021-02-22 03:35:00 | +| Drawdown End | 2021-02-23 11:45:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 524/1000: + 1402 trades. + 1224/133/45 Wins/Draws/Losses. + Avg profit 1.59%. + Median profit 1.69%. + Total profit 1006.32615148 USDT ( 201.27Σ%). + Avg duration 13:45:00 min. + Objective: -195040.84394 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": "738", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "3", + "buy__sideways_trend_total_signal_needed": "486", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "6", + "buy__upwards_trend_total_signal_needed": "167", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "5", + "buy_downwards_trend_adx_strong_up_weight": "31", + "buy_downwards_trend_bollinger_bands_weight": "64", + "buy_downwards_trend_ema_long_golden_cross_weight": "90", + "buy_downwards_trend_ema_short_golden_cross_weight": "13", + "buy_downwards_trend_macd_weight": "32", + "buy_downwards_trend_rsi_weight": "58", + "buy_downwards_trend_sma_long_golden_cross_weight": "76", + "buy_downwards_trend_sma_short_golden_cross_weight": "16", + "buy_downwards_trend_vwap_cross_weight": "20", + "buy_sideways_trend_adx_strong_up_weight": "46", + "buy_sideways_trend_bollinger_bands_weight": "35", + "buy_sideways_trend_ema_long_golden_cross_weight": "63", + "buy_sideways_trend_ema_short_golden_cross_weight": "94", + "buy_sideways_trend_macd_weight": "56", + "buy_sideways_trend_rsi_weight": "53", + "buy_sideways_trend_sma_long_golden_cross_weight": "96", + "buy_sideways_trend_sma_short_golden_cross_weight": "54", + "buy_sideways_trend_vwap_cross_weight": "9", + "buy_upwards_trend_adx_strong_up_weight": "79", + "buy_upwards_trend_bollinger_bands_weight": "23", + "buy_upwards_trend_ema_long_golden_cross_weight": "81", + "buy_upwards_trend_ema_short_golden_cross_weight": "81", + "buy_upwards_trend_macd_weight": "54", + "buy_upwards_trend_rsi_weight": "5", + "buy_upwards_trend_sma_long_golden_cross_weight": "30", + "buy_upwards_trend_sma_short_golden_cross_weight": "87", + "buy_upwards_trend_vwap_cross_weight": "27" + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": "47", + "sell___unclogger_minimal_losing_trades_open": "3", + "sell___unclogger_open_trades_losing_percentage_needed": "49", + "sell___unclogger_trend_lookback_candles_window": "12", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "28", + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": "512", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell__sideways_trend_total_signal_needed": "181", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "4", + "sell__upwards_trend_total_signal_needed": "354", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "6", + "sell_downwards_trend_adx_strong_down_weight": "48", + "sell_downwards_trend_bollinger_bands_weight": "83", + "sell_downwards_trend_ema_long_death_cross_weight": "53", + "sell_downwards_trend_ema_short_death_cross_weight": "32", + "sell_downwards_trend_macd_weight": "48", + "sell_downwards_trend_rsi_weight": "33", + "sell_downwards_trend_sma_long_death_cross_weight": "6", + "sell_downwards_trend_sma_short_death_cross_weight": "4", + "sell_downwards_trend_vwap_cross_weight": "10", + "sell_sideways_trend_adx_strong_down_weight": "22", + "sell_sideways_trend_bollinger_bands_weight": "64", + "sell_sideways_trend_ema_long_death_cross_weight": "18", + "sell_sideways_trend_ema_short_death_cross_weight": "49", + "sell_sideways_trend_macd_weight": "2", + "sell_sideways_trend_rsi_weight": "66", + "sell_sideways_trend_sma_long_death_cross_weight": "37", + "sell_sideways_trend_sma_short_death_cross_weight": "59", + "sell_sideways_trend_vwap_cross_weight": "2", + "sell_upwards_trend_adx_strong_down_weight": "18", + "sell_upwards_trend_bollinger_bands_weight": "26", + "sell_upwards_trend_ema_long_death_cross_weight": "44", + "sell_upwards_trend_ema_short_death_cross_weight": "82", + "sell_upwards_trend_macd_weight": "44", + "sell_upwards_trend_rsi_weight": "24", + "sell_upwards_trend_sma_long_death_cross_weight": "52", + "sell_upwards_trend_sma_short_death_cross_weight": "19", + "sell_upwards_trend_vwap_cross_weight": "29" + } + + # ROI table: + minimal_roi = { + "0": 0.23, + "5": 0.20208, + "10": 0.17417, + "15": 0.14625, + "20": 0.11833, + "25": 0.09496, + "30": 0.08978, + "35": 0.0846, + "40": 0.07942, + "45": 0.07424, + "50": 0.06905, + "55": 0.06387, + "60": 0.05869, + "65": 0.05351, + "70": 0.04833, + "75": 0.04315, + "80": 0.03865, + "85": 0.03691, + "90": 0.03517, + "95": 0.03343, + "100": 0.03169, + "105": 0.02995, + "110": 0.02821, + "115": 0.02646, + "120": 0.02472, + "125": 0.02298, + "130": 0.02124, + "135": 0.0195, + "140": 0.01776, + "145": 0.01602, + "150": 0.01428, + "155": 0.01254, + "160": 0.01079, + "165": 0.00905, + "170": 0.00731, + "175": 0.00557, + "180": 0.00383, + "185": 0.00209, + "190": 0.00035, + "195": 0 + } + + # Stoploss: + stoploss = -0.319 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.019 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr954.log b/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr954.log new file mode 100644 index 000000000..59f6907e6 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults6_Pt1-24-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e_nr954.log @@ -0,0 +1,221 @@ +freqtrade hyperopt-show -n 954 +============================== +Result for strategy MoniGoManiConfiguration +=========================================================== BACKTESTING REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+----------------+-------------------------| +| DOGE/USDT | 311 | 2.11 | 657.61 | 296.219 | 59.24 | 5:18:00 | 296 2 13 95.2 | +| HOT/USDT | 200 | 1.66 | 332.43 | 149.742 | 29.95 | 8:17:00 | 191 4 5 95.5 | +| TFUEL/USDT | 232 | 1.33 | 308.09 | 138.780 | 27.76 | 6:49:00 | 219 8 5 94.4 | +| BTT/USDT | 160 | 1.69 | 270.09 | 121.662 | 24.33 | 9:30:00 | 143 12 5 89.4 | +| WIN/USDT | 146 | 1.44 | 209.81 | 94.510 | 18.90 | 10:47:00 | 132 10 4 90.4 | +| UNI/USDT | 173 | 0.84 | 145.43 | 65.511 | 13.10 | 8:21:00 | 151 19 3 87.3 | +| XRP/USDT | 127 | 1.12 | 141.70 | 63.829 | 12.77 | 12:14:00 | 115 9 3 90.6 | +| XLM/USDT | 134 | 0.86 | 115.67 | 52.104 | 10.42 | 12:14:00 | 121 9 4 90.3 | +| MKR/USDT | 124 | 0.80 | 99.48 | 44.811 | 8.96 | 13:11:00 | 114 7 3 91.9 | +| TRX/USDT | 94 | 0.87 | 81.64 | 36.773 | 7.35 | 16:52:00 | 82 10 2 87.2 | +| ALGO/USDT | 131 | 0.53 | 69.00 | 31.079 | 6.22 | 12:14:00 | 113 15 3 86.3 | +| ADA/USDT | 152 | 0.32 | 48.06 | 21.648 | 4.33 | 9:46:00 | 134 14 4 88.2 | +| ETH/USDT | 117 | 0.27 | 31.64 | 14.254 | 2.85 | 11:51:00 | 95 19 3 81.2 | +| BTC/USDT | 49 | 0.59 | 28.83 | 12.985 | 2.60 | 1 day, 7:52:00 | 39 9 1 79.6 | +| TOTAL | 2150 | 1.18 | 2539.48 | 1143.908 | 228.78 | 10:11:00 | 1945 147 58 90.5 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1936 | 1936 0 0 100 | 2.12 | 4099.71 | 1846.71 | 292.84 | +| roi | 154 | 7 147 0 100 | 0.03 | 4.22 | 1.899 | 0.3 | +| stop_loss | 44 | 0 0 44 0 | -31.34 | -1378.85 | -621.102 | -98.49 | +| force_sell | 14 | 0 0 14 0 | -13.28 | -185.86 | -83.719 | -13.28 | +| MGM_unclogging_losing_trade | 2 | 2 0 0 100 | 0.13 | 0.26 | 0.116 | 0.02 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| UNI/USDT | 1 | -3.20 | -3.20 | -1.442 | -0.29 | 9:40:00 | 0 0 1 0 | +| TRX/USDT | 1 | -5.35 | -5.35 | -2.411 | -0.48 | 2 days, 9:00:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.62 | -9.62 | -4.334 | -0.87 | 7 days, 0:00:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.01 | -10.01 | -4.508 | -0.90 | 7 days, 6:25:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| ADA/USDT | 1 | -13.33 | -13.33 | -6.004 | -1.20 | 2 days, 11:25:00 | 0 0 1 0 | +| WIN/USDT | 1 | -15.70 | -15.70 | -7.073 | -1.41 | 1 day, 14:45:00 | 0 0 1 0 | +| MKR/USDT | 1 | -17.33 | -17.33 | -7.806 | -1.56 | 21 days, 2:20:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -24.34 | -24.34 | -10.964 | -2.19 | 3 days, 17:00:00 | 0 0 1 0 | +| HOT/USDT | 1 | -24.51 | -24.51 | -11.041 | -2.21 | 18:15:00 | 0 0 1 0 | +| TOTAL | 14 | -13.28 | -185.86 | -83.719 | -16.74 | 5 days, 0:12:00 | 0 0 14 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 2150 | +| Starting balance | 500.000 USDT | +| Final balance | 1643.908 USDT | +| Absolute profit | 1143.908 USDT | +| Total profit % | 228.78% | +| Trades per day | 29.05 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 96750.000 USDT | +| | | +| Best Pair | DOGE/USDT 657.61% | +| Worst Pair | BTC/USDT 28.83% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -31.34% | +| Best day | 197.555 USDT | +| Worst day | -83.719 USDT | +| Days win/draw/lose | 63 / 1 / 11 | +| Avg. Duration Winners | 5:03:00 | +| Avg. Duration Loser | 3 days, 6:59:00 | +| Zero Duration Trades | 31.91% (686) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 500.339 USDT | +| Max balance | 1727.627 USDT | +| Drawdown | 328.37% | +| Drawdown | 147.914 USDT | +| Drawdown high | 1116.517 USDT | +| Drawdown low | 968.602 USDT | +| Drawdown Start | 2021-02-22 11:50:00 | +| Drawdown End | 2021-02-23 09:10:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 954/1000: + 2150 trades. + 1945/147/58 Wins/Draws/Losses. + Avg profit 1.18%. + Median profit 1.08%. + Total profit 1143.90822134 USDT ( 228.78Σ%). + Avg duration 10:11:00 min. + Objective: -229734.24005 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "155", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "2", + "buy__sideways_trend_total_signal_needed": "265", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "2", + "buy__upwards_trend_total_signal_needed": "187", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "6", + "buy_downwards_trend_adx_strong_up_weight": "96", + "buy_downwards_trend_bollinger_bands_weight": "28", + "buy_downwards_trend_ema_long_golden_cross_weight": "5", + "buy_downwards_trend_ema_short_golden_cross_weight": "97", + "buy_downwards_trend_macd_weight": "85", + "buy_downwards_trend_rsi_weight": "13", + "buy_downwards_trend_sma_long_golden_cross_weight": "31", + "buy_downwards_trend_sma_short_golden_cross_weight": "76", + "buy_downwards_trend_vwap_cross_weight": "45", + "buy_sideways_trend_adx_strong_up_weight": "55", + "buy_sideways_trend_bollinger_bands_weight": "55", + "buy_sideways_trend_ema_long_golden_cross_weight": "74", + "buy_sideways_trend_ema_short_golden_cross_weight": "45", + "buy_sideways_trend_macd_weight": "36", + "buy_sideways_trend_rsi_weight": "49", + "buy_sideways_trend_sma_long_golden_cross_weight": "68", + "buy_sideways_trend_sma_short_golden_cross_weight": "46", + "buy_sideways_trend_vwap_cross_weight": "20", + "buy_upwards_trend_adx_strong_up_weight": "49", + "buy_upwards_trend_bollinger_bands_weight": "5", + "buy_upwards_trend_ema_long_golden_cross_weight": "6", + "buy_upwards_trend_ema_short_golden_cross_weight": "22", + "buy_upwards_trend_macd_weight": "45", + "buy_upwards_trend_rsi_weight": "26", + "buy_upwards_trend_sma_long_golden_cross_weight": "16", + "buy_upwards_trend_sma_short_golden_cross_weight": "37", + "buy_upwards_trend_vwap_cross_weight": "59", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "22", + "sell___unclogger_minimal_losing_trades_open": "3", + "sell___unclogger_open_trades_losing_percentage_needed": "26", + "sell___unclogger_trend_lookback_candles_window": "22", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "24", + "sell__downwards_trend_total_signal_needed": "356", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "1", + "sell__sideways_trend_total_signal_needed": "214", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "sell__upwards_trend_total_signal_needed": "291", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "1", + "sell_downwards_trend_adx_strong_down_weight": "24", + "sell_downwards_trend_bollinger_bands_weight": "75", + "sell_downwards_trend_ema_long_death_cross_weight": "10", + "sell_downwards_trend_ema_short_death_cross_weight": "10", + "sell_downwards_trend_macd_weight": "44", + "sell_downwards_trend_rsi_weight": "97", + "sell_downwards_trend_sma_long_death_cross_weight": "4", + "sell_downwards_trend_sma_short_death_cross_weight": "24", + "sell_downwards_trend_vwap_cross_weight": "71", + "sell_sideways_trend_adx_strong_down_weight": "93", + "sell_sideways_trend_bollinger_bands_weight": "47", + "sell_sideways_trend_ema_long_death_cross_weight": "24", + "sell_sideways_trend_ema_short_death_cross_weight": "3", + "sell_sideways_trend_macd_weight": "82", + "sell_sideways_trend_rsi_weight": "7", + "sell_sideways_trend_sma_long_death_cross_weight": "46", + "sell_sideways_trend_sma_short_death_cross_weight": "21", + "sell_sideways_trend_vwap_cross_weight": "52", + "sell_upwards_trend_adx_strong_down_weight": "77", + "sell_upwards_trend_bollinger_bands_weight": "2", + "sell_upwards_trend_ema_long_death_cross_weight": "55", + "sell_upwards_trend_ema_short_death_cross_weight": "20", + "sell_upwards_trend_macd_weight": "52", + "sell_upwards_trend_rsi_weight": "84", + "sell_upwards_trend_sma_long_death_cross_weight": "91", + "sell_upwards_trend_sma_short_death_cross_weight": "3", + "sell_upwards_trend_vwap_cross_weight": "82", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.139, + "5": 0.12457, + "10": 0.11014, + "15": 0.09571, + "20": 0.08129, + "25": 0.06686, + "30": 0.05243, + "35": 0.038, + "40": 0.03363, + "45": 0.02925, + "50": 0.02488, + "55": 0.02191, + "60": 0.0193, + "65": 0.0167, + "70": 0.01409, + "75": 0.01148, + "80": 0.00887, + "85": 0.00626, + "90": 0.00365, + "95": 0.00104, + "100": 0 + } + + # Stoploss: + stoploss = -0.312 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.014 + trailing_only_offset_is_reached = True diff --git a/Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log b/Some Test Results/v0.11.0/HyperOptResults1_Pt1-20-05-2021_MoniGoManiHyperStrategy.log similarity index 100% rename from Some Test Results/v0.10.0/HyperOptResults12_Pt1-20-05-2021_MoniGoManiHyperStrategy.log rename to Some Test Results/v0.11.0/HyperOptResults1_Pt1-20-05-2021_MoniGoManiHyperStrategy.log diff --git a/Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log b/Some Test Results/v0.11.0/HyperOptResults2_Pt1-20-05-2021_MoniGoManiConfiguration.log similarity index 100% rename from Some Test Results/v0.10.0/HyperOptResults13_Pt1-20-05-2021_MoniGoManiConfiguration.log rename to Some Test Results/v0.11.0/HyperOptResults2_Pt1-20-05-2021_MoniGoManiConfiguration.log diff --git a/Some Test Results/v0.11.0/HyperOptResults3_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log b/Some Test Results/v0.11.0/HyperOptResults3_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log new file mode 100644 index 000000000..23fe74b74 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults3_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log @@ -0,0 +1,554 @@ +freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 --random-state 24261 +==================================================================================================================================================================================================================================== +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 +INFO - Override strategy 'stake_currency' with value in config file: USDT. + +INFO - Using optimizer random state: 24261 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 2/1000 | 358 | 214 29 115 | 0.71% | 114.701 USDT (22.94%) | 0 days 13:16:00 | -15,221.29211 | +| * Best | 4/1000 | 315 | 190 3 122 | 0.83% | 117.591 USDT (23.52%) | 0 days 14:23:00 | -15,746.01874 | +| * Best | 6/1000 | 253 | 177 48 28 | 1.27% | 145.285 USDT (29.06%) | 1 days 08:23:00 | -22,564.59111 | +| * Best | 7/1000 | 474 | 340 69 65 | 1.73% | 369.994 USDT (74.00%) | 0 days 22:07:00 | -58,918.07049 | +| * Best | 15/1000 | 435 | 366 41 28 | 2.42% | 474.593 USDT (94.92%) | 1 days 08:02:00 | -88,647.57967 | +| Best | 35/1000 | 870 | 549 69 252 | 2.04% | 797.683 USDT (159.54%) | 0 days 13:53:00 | -111,747.21144 | +| Best | 62/1000 | 904 | 661 70 173 | 1.73% | 705.937 USDT (141.19%) | 0 days 16:50:00 | -114,591.45853 | +| Best | 68/1000 | 477 | 378 68 31 | 3.41% | 732.956 USDT (146.59%) | 1 days 16:59:00 | -128,945.04594 | +| Best | 100/1000 | 544 | 427 72 45 | 4.76% | 1165.886 USDT (233.18%) | 1 days 13:19:00 | -203,160.09225 | +| Best | 101/1000 | 1793 | 1642 110 41 | 2.31% | 1862.035 USDT (372.41%) | 0 days 11:40:00 | -378,559.41672 | +| Best | 244/1000 | 1898 | 1756 104 38 | 2.27% | 1938.137 USDT (387.63%) | 0 days 11:04:00 | -398,076.16058 | +| Best | 488/1000 | 1893 | 1774 85 34 | 2.25% | 1915.677 USDT (383.14%) | 0 days 11:04:00 | -398,546.22889 | +| Best | 548/1000 | 2004 | 1881 66 57 | 2.22% | 2003.115 USDT (400.62%) | 0 days 10:44:00 | -417,397.92632 | +| Best | 775/1000 | 2119 | 1974 104 41 | 2.19% | 2086.850 USDT (417.37%) | 0 days 10:08:00 | -431,579.52012 | +| Best | 949/1000 | 2243 | 2128 69 46 | 2.04% | 2062.298 USDT (412.46%) | 0 days 09:07:00 | -434,357.29446 | + +Elapsed Time: 1:11:40 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-22_14-38-22.fthypt'. + +Best result: + + 949/1000: + 2243 trades. + 2128/69/46 Wins/Draws/Losses. + Avg profit 2.04%. + Median profit 1.31%. + Total profit 2062.29771663 USDT ( 412.46Σ%). + Avg duration 9:07:00 min. + Objective: -434357.29446 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 84, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 531, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "buy__upwards_trend_total_signal_needed": 205, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy_downwards_trend_adx_strong_up_weight": 88, + "buy_downwards_trend_bollinger_bands_weight": 34, + "buy_downwards_trend_ema_long_golden_cross_weight": 71, + "buy_downwards_trend_ema_short_golden_cross_weight": 50, + "buy_downwards_trend_macd_weight": 58, + "buy_downwards_trend_rsi_weight": 14, + "buy_downwards_trend_sma_long_golden_cross_weight": 35, + "buy_downwards_trend_sma_short_golden_cross_weight": 20, + "buy_downwards_trend_vwap_cross_weight": 31, + "buy_sideways_trend_adx_strong_up_weight": 97, + "buy_sideways_trend_bollinger_bands_weight": 73, + "buy_sideways_trend_ema_long_golden_cross_weight": 17, + "buy_sideways_trend_ema_short_golden_cross_weight": 45, + "buy_sideways_trend_macd_weight": 100, + "buy_sideways_trend_rsi_weight": 17, + "buy_sideways_trend_sma_long_golden_cross_weight": 44, + "buy_sideways_trend_sma_short_golden_cross_weight": 73, + "buy_sideways_trend_vwap_cross_weight": 42, + "buy_upwards_trend_adx_strong_up_weight": 39, + "buy_upwards_trend_bollinger_bands_weight": 81, + "buy_upwards_trend_ema_long_golden_cross_weight": 20, + "buy_upwards_trend_ema_short_golden_cross_weight": 59, + "buy_upwards_trend_macd_weight": 76, + "buy_upwards_trend_rsi_weight": 33, + "buy_upwards_trend_sma_long_golden_cross_weight": 62, + "buy_upwards_trend_sma_short_golden_cross_weight": 56, + "buy_upwards_trend_vwap_cross_weight": 66 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 20, + "sell___unclogger_minimal_losing_trades_open": 5, + "sell___unclogger_open_trades_losing_percentage_needed": 6, + "sell___unclogger_trend_lookback_candles_window": 51, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 21, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 507, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 174, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "sell__upwards_trend_total_signal_needed": 895, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 21, + "sell_downwards_trend_bollinger_bands_weight": 54, + "sell_downwards_trend_ema_long_death_cross_weight": 35, + "sell_downwards_trend_ema_short_death_cross_weight": 15, + "sell_downwards_trend_macd_weight": 83, + "sell_downwards_trend_rsi_weight": 59, + "sell_downwards_trend_sma_long_death_cross_weight": 98, + "sell_downwards_trend_sma_short_death_cross_weight": 0, + "sell_downwards_trend_vwap_cross_weight": 21, + "sell_sideways_trend_adx_strong_down_weight": 14, + "sell_sideways_trend_bollinger_bands_weight": 35, + "sell_sideways_trend_ema_long_death_cross_weight": 75, + "sell_sideways_trend_ema_short_death_cross_weight": 28, + "sell_sideways_trend_macd_weight": 99, + "sell_sideways_trend_rsi_weight": 8, + "sell_sideways_trend_sma_long_death_cross_weight": 36, + "sell_sideways_trend_sma_short_death_cross_weight": 50, + "sell_sideways_trend_vwap_cross_weight": 11, + "sell_upwards_trend_adx_strong_down_weight": 60, + "sell_upwards_trend_bollinger_bands_weight": 78, + "sell_upwards_trend_ema_long_death_cross_weight": 7, + "sell_upwards_trend_ema_short_death_cross_weight": 65, + "sell_upwards_trend_macd_weight": 10, + "sell_upwards_trend_rsi_weight": 3, + "sell_upwards_trend_sma_long_death_cross_weight": 41, + "sell_upwards_trend_sma_short_death_cross_weight": 2, + "sell_upwards_trend_vwap_cross_weight": 5 + } + + # ROI table: + minimal_roi = { + "0": 0.515, + "5": 0.50849, + "10": 0.50198, + "15": 0.49548, + "20": 0.48897, + "25": 0.48246, + "30": 0.47595, + "35": 0.46945, + "40": 0.46294, + "45": 0.45643, + "50": 0.44992, + "55": 0.44342, + "60": 0.43691, + "65": 0.4304, + "70": 0.42389, + "75": 0.41739, + "80": 0.41088, + "85": 0.40437, + "90": 0.39786, + "95": 0.39135, + "100": 0.38485, + "105": 0.37834, + "110": 0.37183, + "115": 0.36532, + "120": 0.35882, + "125": 0.35231, + "130": 0.3458, + "135": 0.33929, + "140": 0.33279, + "145": 0.32628, + "150": 0.31977, + "155": 0.31326, + "160": 0.30676, + "165": 0.30025, + "170": 0.29374, + "175": 0.28723, + "180": 0.28073, + "185": 0.27422, + "190": 0.26771, + "195": 0.2612, + "200": 0.25469, + "205": 0.24819, + "210": 0.24168, + "215": 0.23517, + "220": 0.22866, + "225": 0.22216, + "230": 0.21565, + "235": 0.20914, + "240": 0.20263, + "245": 0.19613, + "250": 0.18962, + "255": 0.18311, + "260": 0.1766, + "265": 0.17225, + "270": 0.16934, + "275": 0.16642, + "280": 0.16351, + "285": 0.16059, + "290": 0.15768, + "295": 0.15476, + "300": 0.15185, + "305": 0.14893, + "310": 0.14602, + "315": 0.1431, + "320": 0.14019, + "325": 0.13727, + "330": 0.13436, + "335": 0.13144, + "340": 0.12853, + "345": 0.12561, + "350": 0.12269, + "355": 0.11978, + "360": 0.11686, + "365": 0.11395, + "370": 0.11103, + "375": 0.10812, + "380": 0.1052, + "385": 0.10229, + "390": 0.09937, + "395": 0.09646, + "400": 0.09354, + "405": 0.09063, + "410": 0.08771, + "415": 0.0848, + "420": 0.08188, + "425": 0.07897, + "430": 0.07605, + "435": 0.07314, + "440": 0.07022, + "445": 0.06731, + "450": 0.06439, + "455": 0.06148, + "460": 0.05856, + "465": 0.05565, + "470": 0.05273, + "475": 0.04982, + "480": 0.0469, + "485": 0.04399, + "490": 0.04107, + "495": 0.03816, + "500": 0.03524, + "505": 0.03233, + "510": 0.02941, + "515": 0.0265, + "520": 0.02358, + "525": 0.02292, + "530": 0.02281, + "535": 0.02271, + "540": 0.02261, + "545": 0.0225, + "550": 0.0224, + "555": 0.02229, + "560": 0.02219, + "565": 0.02209, + "570": 0.02198, + "575": 0.02188, + "580": 0.02178, + "585": 0.02167, + "590": 0.02157, + "595": 0.02146, + "600": 0.02136, + "605": 0.02126, + "610": 0.02115, + "615": 0.02105, + "620": 0.02094, + "625": 0.02084, + "630": 0.02074, + "635": 0.02063, + "640": 0.02053, + "645": 0.02043, + "650": 0.02032, + "655": 0.02022, + "660": 0.02011, + "665": 0.02001, + "670": 0.01991, + "675": 0.0198, + "680": 0.0197, + "685": 0.0196, + "690": 0.01949, + "695": 0.01939, + "700": 0.01928, + "705": 0.01918, + "710": 0.01908, + "715": 0.01897, + "720": 0.01887, + "725": 0.01877, + "730": 0.01866, + "735": 0.01856, + "740": 0.01845, + "745": 0.01835, + "750": 0.01825, + "755": 0.01814, + "760": 0.01804, + "765": 0.01794, + "770": 0.01783, + "775": 0.01773, + "780": 0.01762, + "785": 0.01752, + "790": 0.01742, + "795": 0.01731, + "800": 0.01721, + "805": 0.0171, + "810": 0.017, + "815": 0.0169, + "820": 0.01679, + "825": 0.01669, + "830": 0.01659, + "835": 0.01648, + "840": 0.01638, + "845": 0.01627, + "850": 0.01617, + "855": 0.01607, + "860": 0.01596, + "865": 0.01586, + "870": 0.01576, + "875": 0.01565, + "880": 0.01555, + "885": 0.01544, + "890": 0.01534, + "895": 0.01524, + "900": 0.01513, + "905": 0.01503, + "910": 0.01493, + "915": 0.01482, + "920": 0.01472, + "925": 0.01461, + "930": 0.01451, + "935": 0.01441, + "940": 0.0143, + "945": 0.0142, + "950": 0.01409, + "955": 0.01399, + "960": 0.01389, + "965": 0.01378, + "970": 0.01368, + "975": 0.01358, + "980": 0.01347, + "985": 0.01337, + "990": 0.01326, + "995": 0.01316, + "1000": 0.01306, + "1005": 0.01295, + "1010": 0.01285, + "1015": 0.01275, + "1020": 0.01264, + "1025": 0.01254, + "1030": 0.01243, + "1035": 0.01233, + "1040": 0.01223, + "1045": 0.01212, + "1050": 0.01202, + "1055": 0.01192, + "1060": 0.01181, + "1065": 0.01171, + "1070": 0.0116, + "1075": 0.0115, + "1080": 0.0114, + "1085": 0.01129, + "1090": 0.01119, + "1095": 0.01108, + "1100": 0.01098, + "1105": 0.01088, + "1110": 0.01077, + "1115": 0.01067, + "1120": 0.01057, + "1125": 0.01046, + "1130": 0.01036, + "1135": 0.01025, + "1140": 0.01015, + "1145": 0.01005, + "1150": 0.00994, + "1155": 0.00984, + "1160": 0.00974, + "1165": 0.00963, + "1170": 0.00953, + "1175": 0.00942, + "1180": 0.00932, + "1185": 0.00922, + "1190": 0.00911, + "1195": 0.00901, + "1200": 0.00891, + "1205": 0.0088, + "1210": 0.0087, + "1215": 0.00859, + "1220": 0.00849, + "1225": 0.00839, + "1230": 0.00828, + "1235": 0.00818, + "1240": 0.00807, + "1245": 0.00797, + "1250": 0.00787, + "1255": 0.00776, + "1260": 0.00766, + "1265": 0.00756, + "1270": 0.00745, + "1275": 0.00735, + "1280": 0.00724, + "1285": 0.00714, + "1290": 0.00704, + "1295": 0.00693, + "1300": 0.00683, + "1305": 0.00673, + "1310": 0.00662, + "1315": 0.00652, + "1320": 0.00641, + "1325": 0.00631, + "1330": 0.00621, + "1335": 0.0061, + "1340": 0.006, + "1345": 0.0059, + "1350": 0.00579, + "1355": 0.00569, + "1360": 0.00558, + "1365": 0.00548, + "1370": 0.00538, + "1375": 0.00527, + "1380": 0.00517, + "1385": 0.00506, + "1390": 0.00496, + "1395": 0.00486, + "1400": 0.00475, + "1405": 0.00465, + "1410": 0.00455, + "1415": 0.00444, + "1420": 0.00434, + "1425": 0.00423, + "1430": 0.00413, + "1435": 0.00403, + "1440": 0.00392, + "1445": 0.00382, + "1450": 0.00372, + "1455": 0.00361, + "1460": 0.00351, + "1465": 0.0034, + "1470": 0.0033, + "1475": 0.0032, + "1480": 0.00309, + "1485": 0.00299, + "1490": 0.00289, + "1495": 0.00278, + "1500": 0.00268, + "1505": 0.00257, + "1510": 0.00247, + "1515": 0.00237, + "1520": 0.00226, + "1525": 0.00216, + "1530": 0.00206, + "1535": 0.00195, + "1540": 0.00185, + "1545": 0.00174, + "1550": 0.00164, + "1555": 0.00154, + "1560": 0.00143, + "1565": 0.00133, + "1570": 0.00122, + "1575": 0.00112, + "1580": 0.00102, + "1585": 0.00091, + "1590": 0.00081, + "1595": 0.00071, + "1600": 0.0006, + "1605": 0.0005, + "1610": 0.00039, + "1615": 0.00029, + "1620": 0.00019, + "1625": 8e-05, + "1630": 0 + } + + # Stoploss: + stoploss = -0.298 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults3_Pt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision_wrong_total_signal_needed_candles_lookback_window.log b/Some Test Results/v0.11.0/HyperOptResults3_Pt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision_wrong_total_signal_needed_candles_lookback_window.log new file mode 100644 index 000000000..9c5d9389b --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults3_Pt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision_wrong_total_signal_needed_candles_lookback_window.log @@ -0,0 +1,672 @@ +freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +============================================================================================================================================================================================================== +WARNING - Parameter "buy___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "buy___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "buy___trades_when_upwards" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed = 84 +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed_candles_lookback_window = 6 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed = 531 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed = 205 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: buy_downwards_trend_adx_strong_up_weight = 88 +INFO - Strategy Parameter: buy_downwards_trend_bollinger_bands_weight = 34 +INFO - Strategy Parameter: buy_downwards_trend_ema_long_golden_cross_weight = 71 +INFO - Strategy Parameter: buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter: buy_downwards_trend_macd_weight = 58 +INFO - Strategy Parameter: buy_downwards_trend_rsi_weight = 14 +INFO - Strategy Parameter: buy_downwards_trend_sma_long_golden_cross_weight = 35 +INFO - Strategy Parameter: buy_downwards_trend_sma_short_golden_cross_weight = 20 +INFO - Strategy Parameter: buy_downwards_trend_vwap_cross_weight = 31 +WARNING - Parameter "buy_sideways_trend_adx_strong_up_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_sideways_trend_bollinger_bands_weight = 73 +INFO - Strategy Parameter: buy_sideways_trend_ema_long_golden_cross_weight = 17 +INFO - Strategy Parameter: buy_sideways_trend_ema_short_golden_cross_weight = 45 +WARNING - Parameter "buy_sideways_trend_macd_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_sideways_trend_rsi_weight = 17 +INFO - Strategy Parameter: buy_sideways_trend_sma_long_golden_cross_weight = 44 +INFO - Strategy Parameter: buy_sideways_trend_sma_short_golden_cross_weight = 73 +INFO - Strategy Parameter: buy_sideways_trend_vwap_cross_weight = 42 +INFO - Strategy Parameter: buy_upwards_trend_adx_strong_up_weight = 39 +INFO - Strategy Parameter: buy_upwards_trend_bollinger_bands_weight = 81 +INFO - Strategy Parameter: buy_upwards_trend_ema_long_golden_cross_weight = 20 +INFO - Strategy Parameter: buy_upwards_trend_ema_short_golden_cross_weight = 59 +INFO - Strategy Parameter: buy_upwards_trend_macd_weight = 76 +INFO - Strategy Parameter: buy_upwards_trend_rsi_weight = 33 +INFO - Strategy Parameter: buy_upwards_trend_sma_long_golden_cross_weight = 62 +INFO - Strategy Parameter: buy_upwards_trend_sma_short_golden_cross_weight = 56 +INFO - Strategy Parameter: buy_upwards_trend_vwap_cross_weight = 66 +WARNING - Parameter "sell___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "sell___trades_when_upwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_enabled" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trade_duration_minutes = 20 +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trades_open = 5 +INFO - Strategy Parameter: sell___unclogger_open_trades_losing_percentage_needed = 6 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window = 51 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window_percentage_needed = 21 +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_downwards_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_sideways_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_upwards_candles" exists, but is disabled. Default value "False" used. +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed = 507 +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed = 174 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed_candles_lookback_window = 1 +WARNING - Parameter "sell__upwards_trend_total_signal_needed" exists, but is disabled. Default value "900" used. +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: sell_downwards_trend_adx_strong_down_weight = 21 +INFO - Strategy Parameter: sell_downwards_trend_bollinger_bands_weight = 54 +INFO - Strategy Parameter: sell_downwards_trend_ema_long_death_cross_weight = 35 +INFO - Strategy Parameter: sell_downwards_trend_ema_short_death_cross_weight = 15 +INFO - Strategy Parameter: sell_downwards_trend_macd_weight = 83 +INFO - Strategy Parameter: sell_downwards_trend_rsi_weight = 59 +WARNING - Parameter "sell_downwards_trend_sma_long_death_cross_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "sell_downwards_trend_sma_short_death_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_downwards_trend_vwap_cross_weight = 21 +INFO - Strategy Parameter: sell_sideways_trend_adx_strong_down_weight = 14 +INFO - Strategy Parameter: sell_sideways_trend_bollinger_bands_weight = 35 +INFO - Strategy Parameter: sell_sideways_trend_ema_long_death_cross_weight = 75 +INFO - Strategy Parameter: sell_sideways_trend_ema_short_death_cross_weight = 28 +WARNING - Parameter "sell_sideways_trend_macd_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "sell_sideways_trend_rsi_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_sideways_trend_sma_long_death_cross_weight = 36 +INFO - Strategy Parameter: sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter: sell_sideways_trend_vwap_cross_weight = 11 +INFO - Strategy Parameter: sell_upwards_trend_adx_strong_down_weight = 60 +INFO - Strategy Parameter: sell_upwards_trend_bollinger_bands_weight = 78 +WARNING - Parameter "sell_upwards_trend_ema_long_death_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_upwards_trend_ema_short_death_cross_weight = 65 +WARNING - Parameter "sell_upwards_trend_macd_weight" exists, but is disabled. Default value "0" used. +WARNING - Parameter "sell_upwards_trend_rsi_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_upwards_trend_sma_long_death_cross_weight = 41 +WARNING - Parameter "sell_upwards_trend_sma_short_death_cross_weight" exists, but is disabled. Default value "0" used. +WARNING - Parameter "sell_upwards_trend_vwap_cross_weight" exists, but is disabled. Default value "0" used. + +INFO - Using optimizer random state: 61617 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------| +| * Best | 1/1000 | 558 | 406 80 72 | 2.78% | 699.082 USDT (139.82%) | 1 days 13:21:00 | -112,920.57664 | +| * Best | 9/1000 | 468 | 366 45 57 | 3.18% | 670.671 USDT (134.13%) | 1 days 15:14:00 | -116,438.99960 | +| * Best | 12/1000 | 547 | 466 48 33 | 2.68% | 660.546 USDT (132.11%) | 1 days 09:00:00 | -124,926.55975 | +| Best | 39/1000 | 895 | 668 87 140 | 2.21% | 889.068 USDT (177.81%) | 0 days 20:59:00 | -147,313.30445 | +| Best | 60/1000 | 802 | 669 79 54 | 3.67% | 1327.441 USDT (265.49%) | 1 days 02:34:00 | -245,821.74112 | +| Best | 84/1000 | 1496 | 1321 127 48 | 2.04% | 1376.100 USDT (275.22%) | 0 days 14:47:00 | -269,758.15942 | +| Best | 93/1000 | 1225 | 1106 74 45 | 2.74% | 1510.600 USDT (302.12%) | 0 days 17:19:00 | -302,776.25302 | +| Best | 100/1000 | 1577 | 1429 83 65 | 2.16% | 1531.771 USDT (306.35%) | 0 days 13:30:00 | -308,139.74530 | +| Best | 103/1000 | 2235 | 2060 53 122 | 1.78% | 1788.607 USDT (357.72%) | 0 days 08:35:00 | -365,980.59765 | +| Best | 138/1000 | 1988 | 1819 118 51 | 2.12% | 1901.308 USDT (380.26%) | 0 days 10:11:00 | -386,208.75290 | +| Best | 140/1000 | 2991 | 2754 73 164 | 1.47% | 1985.031 USDT (397.01%) | 0 days 05:55:00 | -405,759.14901 | +| Best | 169/1000 | 1958 | 1826 86 46 | 2.28% | 2011.929 USDT (402.39%) | 0 days 11:05:00 | -416,537.44612 | +| Best | 171/1000 | 2136 | 2008 88 40 | 2.13% | 2048.831 USDT (409.77%) | 0 days 09:39:00 | -427,584.62233 | +| Best | 329/1000 | 2169 | 2053 61 55 | 2.13% | 2085.794 USDT (417.16%) | 0 days 09:52:00 | -438,282.57202 | +| Best | 397/1000 | 2490 | 2364 53 73 | 1.90% | 2133.977 USDT (426.80%) | 0 days 08:16:00 | -449,770.76114 | + +Elapsed Time: 1:24:26 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-22_17-19-11.fthypt'. + +Best result: + + 397/1000: + 2490 trades. + 2364/53/73 Wins/Draws/Losses. + Avg profit 1.90%. + Median profit 1.31%. + Total profit 2133.97672484 USDT ( 426.80Σ%). + Avg duration 8:16:00 min. + Objective: -449770.76114 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 86, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy__sideways_trend_total_signal_needed": 527, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "buy__upwards_trend_total_signal_needed": 212, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 81, + "buy_downwards_trend_bollinger_bands_weight": 36, + "buy_downwards_trend_ema_long_golden_cross_weight": 64, + "buy_downwards_trend_ema_short_golden_cross_weight": 52, + "buy_downwards_trend_macd_weight": 56, + "buy_downwards_trend_rsi_weight": 14, + "buy_downwards_trend_sma_long_golden_cross_weight": 40, + "buy_downwards_trend_sma_short_golden_cross_weight": 13, + "buy_downwards_trend_vwap_cross_weight": 23, + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_bollinger_bands_weight": 65, + "buy_sideways_trend_ema_long_golden_cross_weight": 9, + "buy_sideways_trend_ema_short_golden_cross_weight": 39, + "buy_sideways_trend_macd_weight": 100, # value loaded from strategy + "buy_sideways_trend_rsi_weight": 9, + "buy_sideways_trend_sma_long_golden_cross_weight": 41, + "buy_sideways_trend_sma_short_golden_cross_weight": 75, + "buy_sideways_trend_vwap_cross_weight": 34, + "buy_upwards_trend_adx_strong_up_weight": 37, + "buy_upwards_trend_bollinger_bands_weight": 88, + "buy_upwards_trend_ema_long_golden_cross_weight": 20, + "buy_upwards_trend_ema_short_golden_cross_weight": 57, + "buy_upwards_trend_macd_weight": 76, + "buy_upwards_trend_rsi_weight": 37, + "buy_upwards_trend_sma_long_golden_cross_weight": 66, + "buy_upwards_trend_sma_short_golden_cross_weight": 53, + "buy_upwards_trend_vwap_cross_weight": 60 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 24, + "sell___unclogger_minimal_losing_trades_open": 4, + "sell___unclogger_open_trades_losing_percentage_needed": 5, + "sell___unclogger_trend_lookback_candles_window": 55, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 19, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 503, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "sell__sideways_trend_total_signal_needed": 165, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 6, + "sell__upwards_trend_total_signal_needed": 900, # value loaded from strategy + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 5, + "sell_downwards_trend_adx_strong_down_weight": 11, + "sell_downwards_trend_bollinger_bands_weight": 54, + "sell_downwards_trend_ema_long_death_cross_weight": 44, + "sell_downwards_trend_ema_short_death_cross_weight": 5, + "sell_downwards_trend_macd_weight": 86, + "sell_downwards_trend_rsi_weight": 58, + "sell_downwards_trend_sma_long_death_cross_weight": 100, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 0, # value loaded from strategy + "sell_downwards_trend_vwap_cross_weight": 17, + "sell_sideways_trend_adx_strong_down_weight": 14, + "sell_sideways_trend_bollinger_bands_weight": 31, + "sell_sideways_trend_ema_long_death_cross_weight": 78, + "sell_sideways_trend_ema_short_death_cross_weight": 25, + "sell_sideways_trend_macd_weight": 100, # value loaded from strategy + "sell_sideways_trend_rsi_weight": 0, # value loaded from strategy + "sell_sideways_trend_sma_long_death_cross_weight": 31, + "sell_sideways_trend_sma_short_death_cross_weight": 45, + "sell_sideways_trend_vwap_cross_weight": 15, + "sell_upwards_trend_adx_strong_down_weight": 69, + "sell_upwards_trend_bollinger_bands_weight": 73, + "sell_upwards_trend_ema_long_death_cross_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_short_death_cross_weight": 59, + "sell_upwards_trend_macd_weight": 0, # value loaded from strategy + "sell_upwards_trend_rsi_weight": 0, # value loaded from strategy + "sell_upwards_trend_sma_long_death_cross_weight": 45, + "sell_upwards_trend_sma_short_death_cross_weight": 0, # value loaded from strategy + "sell_upwards_trend_vwap_cross_weight": 0, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.272, + "5": 0.27111, + "10": 0.27022, + "15": 0.26932, + "20": 0.26843, + "25": 0.26754, + "30": 0.26665, + "35": 0.26576, + "40": 0.26486, + "45": 0.26397, + "50": 0.26308, + "55": 0.26219, + "60": 0.2613, + "65": 0.26041, + "70": 0.25951, + "75": 0.25862, + "80": 0.25773, + "85": 0.25684, + "90": 0.25595, + "95": 0.25505, + "100": 0.25416, + "105": 0.25327, + "110": 0.25238, + "115": 0.25149, + "120": 0.25059, + "125": 0.2497, + "130": 0.24881, + "135": 0.24792, + "140": 0.24703, + "145": 0.24614, + "150": 0.24524, + "155": 0.24435, + "160": 0.24346, + "165": 0.24257, + "170": 0.24168, + "175": 0.24078, + "180": 0.23989, + "185": 0.239, + "190": 0.23811, + "195": 0.23722, + "200": 0.23632, + "205": 0.23543, + "210": 0.23454, + "215": 0.23365, + "220": 0.23276, + "225": 0.23186, + "230": 0.23097, + "235": 0.23008, + "240": 0.22919, + "245": 0.2283, + "250": 0.22741, + "255": 0.22651, + "260": 0.22562, + "265": 0.22473, + "270": 0.22384, + "275": 0.22295, + "280": 0.22205, + "285": 0.22116, + "290": 0.22027, + "295": 0.21938, + "300": 0.21849, + "305": 0.21759, + "310": 0.2167, + "315": 0.21581, + "320": 0.21492, + "325": 0.21403, + "330": 0.21314, + "335": 0.21224, + "340": 0.21135, + "345": 0.21046, + "350": 0.20957, + "355": 0.20868, + "360": 0.20778, + "365": 0.20689, + "370": 0.206, + "375": 0.20446, + "380": 0.20292, + "385": 0.20138, + "390": 0.19984, + "395": 0.1983, + "400": 0.19675, + "405": 0.19521, + "410": 0.19367, + "415": 0.19213, + "420": 0.19059, + "425": 0.18905, + "430": 0.18751, + "435": 0.18597, + "440": 0.18443, + "445": 0.18289, + "450": 0.18135, + "455": 0.17981, + "460": 0.17826, + "465": 0.17672, + "470": 0.17518, + "475": 0.17364, + "480": 0.1721, + "485": 0.17056, + "490": 0.16902, + "495": 0.16748, + "500": 0.16594, + "505": 0.1644, + "510": 0.16286, + "515": 0.16131, + "520": 0.15977, + "525": 0.15823, + "530": 0.15669, + "535": 0.15515, + "540": 0.15361, + "545": 0.15207, + "550": 0.15053, + "555": 0.14899, + "560": 0.14745, + "565": 0.14591, + "570": 0.14436, + "575": 0.14282, + "580": 0.14128, + "585": 0.13974, + "590": 0.1382, + "595": 0.13666, + "600": 0.13512, + "605": 0.13358, + "610": 0.13204, + "615": 0.1305, + "620": 0.12896, + "625": 0.12742, + "630": 0.12587, + "635": 0.12433, + "640": 0.12279, + "645": 0.12125, + "650": 0.11971, + "655": 0.11817, + "660": 0.11663, + "665": 0.11509, + "670": 0.11355, + "675": 0.11201, + "680": 0.11047, + "685": 0.10892, + "690": 0.10738, + "695": 0.10584, + "700": 0.1043, + "705": 0.10276, + "710": 0.10122, + "715": 0.09968, + "720": 0.09814, + "725": 0.0966, + "730": 0.09506, + "735": 0.09352, + "740": 0.09197, + "745": 0.09043, + "750": 0.08889, + "755": 0.08735, + "760": 0.08581, + "765": 0.08427, + "770": 0.08273, + "775": 0.08119, + "780": 0.07965, + "785": 0.07811, + "790": 0.07657, + "795": 0.07503, + "800": 0.07348, + "805": 0.07194, + "810": 0.0704, + "815": 0.06886, + "820": 0.06732, + "825": 0.06578, + "830": 0.06424, + "835": 0.0627, + "840": 0.06116, + "845": 0.05962, + "850": 0.05887, + "855": 0.05866, + "860": 0.05845, + "865": 0.05823, + "870": 0.05802, + "875": 0.05781, + "880": 0.0576, + "885": 0.05738, + "890": 0.05717, + "895": 0.05696, + "900": 0.05674, + "905": 0.05653, + "910": 0.05632, + "915": 0.05611, + "920": 0.05589, + "925": 0.05568, + "930": 0.05547, + "935": 0.05525, + "940": 0.05504, + "945": 0.05483, + "950": 0.05462, + "955": 0.0544, + "960": 0.05419, + "965": 0.05398, + "970": 0.05376, + "975": 0.05355, + "980": 0.05334, + "985": 0.05313, + "990": 0.05291, + "995": 0.0527, + "1000": 0.05249, + "1005": 0.05227, + "1010": 0.05206, + "1015": 0.05185, + "1020": 0.05164, + "1025": 0.05142, + "1030": 0.05121, + "1035": 0.051, + "1040": 0.05078, + "1045": 0.05057, + "1050": 0.05036, + "1055": 0.05015, + "1060": 0.04993, + "1065": 0.04972, + "1070": 0.04951, + "1075": 0.04929, + "1080": 0.04908, + "1085": 0.04887, + "1090": 0.04866, + "1095": 0.04844, + "1100": 0.04823, + "1105": 0.04802, + "1110": 0.0478, + "1115": 0.04759, + "1120": 0.04738, + "1125": 0.04717, + "1130": 0.04695, + "1135": 0.04674, + "1140": 0.04653, + "1145": 0.04631, + "1150": 0.0461, + "1155": 0.04589, + "1160": 0.04568, + "1165": 0.04546, + "1170": 0.04525, + "1175": 0.04504, + "1180": 0.04482, + "1185": 0.04461, + "1190": 0.0444, + "1195": 0.04419, + "1200": 0.04397, + "1205": 0.04376, + "1210": 0.04355, + "1215": 0.04333, + "1220": 0.04312, + "1225": 0.04291, + "1230": 0.0427, + "1235": 0.04248, + "1240": 0.04227, + "1245": 0.04206, + "1250": 0.04184, + "1255": 0.04163, + "1260": 0.04142, + "1265": 0.04121, + "1270": 0.04099, + "1275": 0.04078, + "1280": 0.04057, + "1285": 0.04035, + "1290": 0.04014, + "1295": 0.03993, + "1300": 0.03972, + "1305": 0.0395, + "1310": 0.03929, + "1315": 0.03908, + "1320": 0.03887, + "1325": 0.03865, + "1330": 0.03844, + "1335": 0.03823, + "1340": 0.03801, + "1345": 0.0378, + "1350": 0.03759, + "1355": 0.03738, + "1360": 0.03716, + "1365": 0.03695, + "1370": 0.03674, + "1375": 0.03652, + "1380": 0.03631, + "1385": 0.0361, + "1390": 0.03589, + "1395": 0.03567, + "1400": 0.03546, + "1405": 0.03525, + "1410": 0.03503, + "1415": 0.03482, + "1420": 0.03461, + "1425": 0.0344, + "1430": 0.03418, + "1435": 0.03397, + "1440": 0.03376, + "1445": 0.03354, + "1450": 0.03333, + "1455": 0.03312, + "1460": 0.03291, + "1465": 0.03269, + "1470": 0.03248, + "1475": 0.03227, + "1480": 0.03205, + "1485": 0.03184, + "1490": 0.03163, + "1495": 0.03142, + "1500": 0.0312, + "1505": 0.03099, + "1510": 0.03078, + "1515": 0.03056, + "1520": 0.03035, + "1525": 0.03014, + "1530": 0.02993, + "1535": 0.02971, + "1540": 0.0295, + "1545": 0.02929, + "1550": 0.02907, + "1555": 0.02886, + "1560": 0.02865, + "1565": 0.02844, + "1570": 0.02822, + "1575": 0.02801, + "1580": 0.0278, + "1585": 0.02758, + "1590": 0.02737, + "1595": 0.02716, + "1600": 0.02695, + "1605": 0.02673, + "1610": 0.02652, + "1615": 0.02631, + "1620": 0.02609, + "1625": 0.02588, + "1630": 0.02567, + "1635": 0.02546, + "1640": 0.02524, + "1645": 0.02503, + "1650": 0.02482, + "1655": 0.0246, + "1660": 0.02439, + "1665": 0.02418, + "1670": 0.02397, + "1675": 0.02375, + "1680": 0.02354, + "1685": 0.02333, + "1690": 0.02311, + "1695": 0.0229, + "1700": 0.02269, + "1705": 0.02248, + "1710": 0.02226, + "1715": 0.02205, + "1720": 0.02184, + "1725": 0.02162, + "1730": 0.02141, + "1735": 0.0212, + "1740": 0.02099, + "1745": 0.02077, + "1750": 0.02056, + "1755": 0.02035, + "1760": 0.02013, + "1765": 0.01992, + "1770": 0.01971, + "1775": 0.0195, + "1780": 0.01928, + "1785": 0.01907, + "1790": 0.01886, + "1795": 0.01865, + "1800": 0.01843, + "1805": 0.01822, + "1810": 0.01801, + "1815": 0.01779, + "1820": 0.01758, + "1825": 0.01737, + "1830": 0.01716, + "1835": 0.01694, + "1840": 0.01673, + "1845": 0.01652, + "1850": 0.0163, + "1855": 0.01609, + "1860": 0.01588, + "1865": 0.01567, + "1870": 0.01545, + "1875": 0.01524, + "1880": 0.01503, + "1885": 0.01481, + "1890": 0.0146, + "1895": 0.01439, + "1900": 0.01418, + "1905": 0.01396, + "1910": 0.01375, + "1915": 0.01354, + "1920": 0.01332, + "1925": 0.01311, + "1930": 0.0129, + "1935": 0.01269, + "1940": 0.01247, + "1945": 0.01226, + "1950": 0.01205, + "1955": 0.01183, + "1960": 0.01162, + "1965": 0.01141, + "1970": 0.0112, + "1975": 0.01098, + "1980": 0.01077, + "1985": 0.01056, + "1990": 0.01034, + "1995": 0.01013, + "2000": 0.00992, + "2005": 0.00971, + "2010": 0.00949, + "2015": 0.00928, + "2020": 0.00907, + "2025": 0.00885, + "2030": 0.00864, + "2035": 0.00843, + "2040": 0.00822, + "2045": 0.008, + "2050": 0.00779, + "2055": 0.00758, + "2060": 0.00736, + "2065": 0.00715, + "2070": 0.00694, + "2075": 0.00673, + "2080": 0.00651, + "2085": 0.0063, + "2090": 0.00609, + "2095": 0.00587, + "2100": 0.00566, + "2105": 0.00545, + "2110": 0.00524, + "2115": 0.00502, + "2120": 0.00481, + "2125": 0.0046, + "2130": 0.00438, + "2135": 0.00417, + "2140": 0.00396, + "2145": 0.00375, + "2150": 0.00353, + "2155": 0.00332, + "2160": 0.00311, + "2165": 0.00289, + "2170": 0.00268, + "2175": 0.00247, + "2180": 0.00226, + "2185": 0.00204, + "2190": 0.00183, + "2195": 0.00162, + "2200": 0.0014, + "2205": 0.00119, + "2210": 0.00098, + "2215": 0.00077, + "2220": 0.00055, + "2225": 0.00034, + "2230": 0.00013, + "2235": 0 + } + + # Stoploss: + stoploss = -0.243 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults3_Pt2-Attempt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log b/Some Test Results/v0.11.0/HyperOptResults3_Pt2-Attempt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log new file mode 100644 index 000000000..f0880b1f0 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults3_Pt2-Attempt2-22-05-2021_MoniGoManiConfiguration_bugfixed_precision.log @@ -0,0 +1,684 @@ +freqtrade hyperopt -c ./user_data/config-usdt.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 +============================================================================================================================================================================================================== +WARNING - Parameter "buy___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "buy___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "buy___trades_when_upwards" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed = 84 +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed_candles_lookback_window = 6 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed = 531 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed = 205 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: buy_downwards_trend_adx_strong_up_weight = 88 +INFO - Strategy Parameter: buy_downwards_trend_bollinger_bands_weight = 34 +INFO - Strategy Parameter: buy_downwards_trend_ema_long_golden_cross_weight = 71 +INFO - Strategy Parameter: buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter: buy_downwards_trend_macd_weight = 58 +INFO - Strategy Parameter: buy_downwards_trend_rsi_weight = 14 +INFO - Strategy Parameter: buy_downwards_trend_sma_long_golden_cross_weight = 35 +INFO - Strategy Parameter: buy_downwards_trend_sma_short_golden_cross_weight = 20 +INFO - Strategy Parameter: buy_downwards_trend_vwap_cross_weight = 31 +WARNING - Parameter "buy_sideways_trend_adx_strong_up_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_sideways_trend_bollinger_bands_weight = 73 +INFO - Strategy Parameter: buy_sideways_trend_ema_long_golden_cross_weight = 17 +INFO - Strategy Parameter: buy_sideways_trend_ema_short_golden_cross_weight = 45 +WARNING - Parameter "buy_sideways_trend_macd_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_sideways_trend_rsi_weight = 17 +INFO - Strategy Parameter: buy_sideways_trend_sma_long_golden_cross_weight = 44 +INFO - Strategy Parameter: buy_sideways_trend_sma_short_golden_cross_weight = 73 +INFO - Strategy Parameter: buy_sideways_trend_vwap_cross_weight = 42 +INFO - Strategy Parameter: buy_upwards_trend_adx_strong_up_weight = 39 +INFO - Strategy Parameter: buy_upwards_trend_bollinger_bands_weight = 81 +INFO - Strategy Parameter: buy_upwards_trend_ema_long_golden_cross_weight = 20 +INFO - Strategy Parameter: buy_upwards_trend_ema_short_golden_cross_weight = 59 +INFO - Strategy Parameter: buy_upwards_trend_macd_weight = 76 +INFO - Strategy Parameter: buy_upwards_trend_rsi_weight = 33 +INFO - Strategy Parameter: buy_upwards_trend_sma_long_golden_cross_weight = 62 +INFO - Strategy Parameter: buy_upwards_trend_sma_short_golden_cross_weight = 56 +INFO - Strategy Parameter: buy_upwards_trend_vwap_cross_weight = 66 +WARNING - Parameter "sell___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "sell___trades_when_upwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_enabled" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trade_duration_minutes = 20 +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trades_open = 5 +INFO - Strategy Parameter: sell___unclogger_open_trades_losing_percentage_needed = 6 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window = 51 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window_percentage_needed = 21 +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_downwards_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_sideways_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_upwards_candles" exists, but is disabled. Default value "False" used. +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed = 507 +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed = 174 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed_candles_lookback_window = 1 +WARNING - Parameter "sell__upwards_trend_total_signal_needed" exists, but is disabled. Default value "900" used. +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: sell_downwards_trend_adx_strong_down_weight = 21 +INFO - Strategy Parameter: sell_downwards_trend_bollinger_bands_weight = 54 +INFO - Strategy Parameter: sell_downwards_trend_ema_long_death_cross_weight = 35 +INFO - Strategy Parameter: sell_downwards_trend_ema_short_death_cross_weight = 15 +INFO - Strategy Parameter: sell_downwards_trend_macd_weight = 83 +INFO - Strategy Parameter: sell_downwards_trend_rsi_weight = 59 +WARNING - Parameter "sell_downwards_trend_sma_long_death_cross_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "sell_downwards_trend_sma_short_death_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_downwards_trend_vwap_cross_weight = 21 +INFO - Strategy Parameter: sell_sideways_trend_adx_strong_down_weight = 14 +INFO - Strategy Parameter: sell_sideways_trend_bollinger_bands_weight = 35 +INFO - Strategy Parameter: sell_sideways_trend_ema_long_death_cross_weight = 75 +INFO - Strategy Parameter: sell_sideways_trend_ema_short_death_cross_weight = 28 +WARNING - Parameter "sell_sideways_trend_macd_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "sell_sideways_trend_rsi_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_sideways_trend_sma_long_death_cross_weight = 36 +INFO - Strategy Parameter: sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter: sell_sideways_trend_vwap_cross_weight = 11 +INFO - Strategy Parameter: sell_upwards_trend_adx_strong_down_weight = 60 +INFO - Strategy Parameter: sell_upwards_trend_bollinger_bands_weight = 78 +WARNING - Parameter "sell_upwards_trend_ema_long_death_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_upwards_trend_ema_short_death_cross_weight = 65 +WARNING - Parameter "sell_upwards_trend_macd_weight" exists, but is disabled. Default value "0" used. +WARNING - Parameter "sell_upwards_trend_rsi_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_upwards_trend_sma_long_death_cross_weight = 41 +WARNING - Parameter "sell_upwards_trend_sma_short_death_cross_weight" exists, but is disabled. Default value "0" used. +WARNING - Parameter "sell_upwards_trend_vwap_cross_weight" exists, but is disabled. Default value "0" used. + +INFO - Using optimizer random state: 5507 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+----------------| +| * Best | 1/1000 | 460 | 324 96 40 | 4.51% | 935.181 USDT (187.04%) | 1 days 23:12:00 | -146,229.92504 | +| * Best | 23/1000 | 1095 | 699 100 296 | 2.25% | 1110.172 USDT (222.03%) | 0 days 16:11:00 | -157,328.32617 | +| * Best | 26/1000 | 3158 | 2633 90 435 | 1.05% | 1487.983 USDT (297.60%) | 0 days 04:41:00 | -275,416.66671 | +| Best | 49/1000 | 2845 | 2488 119 238 | 1.15% | 1477.587 USDT (295.52%) | 0 days 06:18:00 | -286,862.93569 | +| Best | 54/1000 | 2863 | 2442 40 381 | 1.31% | 1686.367 USDT (337.27%) | 0 days 05:32:00 | -319,322.76331 | +| Best | 98/1000 | 1360 | 1221 79 60 | 2.66% | 1628.063 USDT (325.61%) | 0 days 16:17:00 | -324,490.10160 | +| Best | 100/1000 | 1643 | 1446 84 113 | 2.27% | 1682.830 USDT (336.57%) | 0 days 12:21:00 | -328,794.46749 | +| Best | 101/1000 | 1489 | 1378 62 49 | 2.71% | 1819.418 USDT (363.88%) | 0 days 15:09:00 | -373,801.03590 | +| Best | 134/1000 | 3092 | 2755 98 239 | 1.42% | 1983.038 USDT (396.61%) | 0 days 05:45:00 | -392,253.23965 | +| Best | 139/1000 | 2667 | 2525 50 92 | 1.74% | 2088.042 USDT (417.61%) | 0 days 07:10:00 | -438,865.12274 | +| Best | 155/1000 | 2194 | 2090 62 42 | 2.10% | 2077.471 USDT (415.49%) | 0 days 09:16:00 | -439,337.24372 | +| Best | 230/1000 | 2262 | 2123 92 47 | 2.08% | 2121.099 USDT (424.22%) | 0 days 09:22:00 | -441,948.64787 | +| Best | 243/1000 | 2221 | 2106 55 60 | 2.11% | 2106.949 USDT (421.39%) | 0 days 09:29:00 | -443,524.13347 | +| Best | 292/1000 | 2192 | 2096 51 45 | 2.15% | 2122.060 USDT (424.41%) | 0 days 09:52:00 | -450,465.86686 | + +Elapsed Time: 1:24:26 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-22_19-21-07.fthypt'. + +Best result: + + 292/1000: + 2192 trades. + 2096/51/45 Wins/Draws/Losses. + Avg profit 2.15%. + Median profit 1.39%. + Total profit 2122.06045468 USDT ( 424.41Σ%). + Avg duration 9:52:00 min. + Objective: -450465.86686 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 86, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy__sideways_trend_total_signal_needed": 531, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "buy__upwards_trend_total_signal_needed": 201, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 91, + "buy_downwards_trend_bollinger_bands_weight": 31, + "buy_downwards_trend_ema_long_golden_cross_weight": 68, + "buy_downwards_trend_ema_short_golden_cross_weight": 43, + "buy_downwards_trend_macd_weight": 65, + "buy_downwards_trend_rsi_weight": 16, + "buy_downwards_trend_sma_long_golden_cross_weight": 40, + "buy_downwards_trend_sma_short_golden_cross_weight": 30, + "buy_downwards_trend_vwap_cross_weight": 29, + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_bollinger_bands_weight": 65, + "buy_sideways_trend_ema_long_golden_cross_weight": 22, + "buy_sideways_trend_ema_short_golden_cross_weight": 37, + "buy_sideways_trend_macd_weight": 100, # value loaded from strategy + "buy_sideways_trend_rsi_weight": 11, + "buy_sideways_trend_sma_long_golden_cross_weight": 40, + "buy_sideways_trend_sma_short_golden_cross_weight": 70, + "buy_sideways_trend_vwap_cross_weight": 45, + "buy_upwards_trend_adx_strong_up_weight": 45, + "buy_upwards_trend_bollinger_bands_weight": 72, + "buy_upwards_trend_ema_long_golden_cross_weight": 23, + "buy_upwards_trend_ema_short_golden_cross_weight": 57, + "buy_upwards_trend_macd_weight": 76, + "buy_upwards_trend_rsi_weight": 35, + "buy_upwards_trend_sma_long_golden_cross_weight": 72, + "buy_upwards_trend_sma_short_golden_cross_weight": 50, + "buy_upwards_trend_vwap_cross_weight": 70 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 22, + "sell___unclogger_minimal_losing_trades_open": 4, + "sell___unclogger_open_trades_losing_percentage_needed": 8, + "sell___unclogger_trend_lookback_candles_window": 42, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 22, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 501, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 3, + "sell__sideways_trend_total_signal_needed": 170, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "sell__upwards_trend_total_signal_needed": 900, # value loaded from strategy + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 27, + "sell_downwards_trend_bollinger_bands_weight": 51, + "sell_downwards_trend_ema_long_death_cross_weight": 26, + "sell_downwards_trend_ema_short_death_cross_weight": 17, + "sell_downwards_trend_macd_weight": 73, + "sell_downwards_trend_rsi_weight": 66, + "sell_downwards_trend_sma_long_death_cross_weight": 100, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 0, # value loaded from strategy + "sell_downwards_trend_vwap_cross_weight": 17, + "sell_sideways_trend_adx_strong_down_weight": 17, + "sell_sideways_trend_bollinger_bands_weight": 31, + "sell_sideways_trend_ema_long_death_cross_weight": 79, + "sell_sideways_trend_ema_short_death_cross_weight": 36, + "sell_sideways_trend_macd_weight": 100, # value loaded from strategy + "sell_sideways_trend_rsi_weight": 0, # value loaded from strategy + "sell_sideways_trend_sma_long_death_cross_weight": 29, + "sell_sideways_trend_sma_short_death_cross_weight": 47, + "sell_sideways_trend_vwap_cross_weight": 14, + "sell_upwards_trend_adx_strong_down_weight": 63, + "sell_upwards_trend_bollinger_bands_weight": 88, + "sell_upwards_trend_ema_long_death_cross_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_short_death_cross_weight": 73, + "sell_upwards_trend_macd_weight": 0, # value loaded from strategy + "sell_upwards_trend_rsi_weight": 0, # value loaded from strategy + "sell_upwards_trend_sma_long_death_cross_weight": 48, + "sell_upwards_trend_sma_short_death_cross_weight": 0, # value loaded from strategy + "sell_upwards_trend_vwap_cross_weight": 0, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.312, + "5": 0.30885, + "10": 0.3057, + "15": 0.30255, + "20": 0.2994, + "25": 0.29625, + "30": 0.29309, + "35": 0.28994, + "40": 0.28679, + "45": 0.28364, + "50": 0.28049, + "55": 0.27734, + "60": 0.27419, + "65": 0.27104, + "70": 0.26789, + "75": 0.26474, + "80": 0.26159, + "85": 0.25843, + "90": 0.25528, + "95": 0.25213, + "100": 0.24898, + "105": 0.24583, + "110": 0.24268, + "115": 0.23953, + "120": 0.23638, + "125": 0.23323, + "130": 0.23008, + "135": 0.22693, + "140": 0.22378, + "145": 0.22062, + "150": 0.21747, + "155": 0.21432, + "160": 0.21117, + "165": 0.20802, + "170": 0.20487, + "175": 0.20172, + "180": 0.19857, + "185": 0.19542, + "190": 0.19227, + "195": 0.18912, + "200": 0.18596, + "205": 0.18281, + "210": 0.17966, + "215": 0.17651, + "220": 0.17336, + "225": 0.17021, + "230": 0.16706, + "235": 0.16391, + "240": 0.16076, + "245": 0.15761, + "250": 0.15446, + "255": 0.1513, + "260": 0.14815, + "265": 0.145, + "270": 0.14185, + "275": 0.1387, + "280": 0.13555, + "285": 0.1324, + "290": 0.12925, + "295": 0.1261, + "300": 0.12295, + "305": 0.1198, + "310": 0.11664, + "315": 0.11349, + "320": 0.11034, + "325": 0.10719, + "330": 0.10404, + "335": 0.10089, + "340": 0.09881, + "345": 0.09835, + "350": 0.09788, + "355": 0.09741, + "360": 0.09694, + "365": 0.09648, + "370": 0.09601, + "375": 0.09554, + "380": 0.09507, + "385": 0.09461, + "390": 0.09414, + "395": 0.09367, + "400": 0.0932, + "405": 0.09274, + "410": 0.09227, + "415": 0.0918, + "420": 0.09134, + "425": 0.09087, + "430": 0.0904, + "435": 0.08993, + "440": 0.08947, + "445": 0.089, + "450": 0.08853, + "455": 0.08806, + "460": 0.0876, + "465": 0.08713, + "470": 0.08666, + "475": 0.08619, + "480": 0.08573, + "485": 0.08526, + "490": 0.08479, + "495": 0.08432, + "500": 0.08386, + "505": 0.08339, + "510": 0.08292, + "515": 0.08246, + "520": 0.08199, + "525": 0.08152, + "530": 0.08105, + "535": 0.08059, + "540": 0.08012, + "545": 0.07965, + "550": 0.07918, + "555": 0.07872, + "560": 0.07825, + "565": 0.07778, + "570": 0.07731, + "575": 0.07685, + "580": 0.07638, + "585": 0.07591, + "590": 0.07544, + "595": 0.07498, + "600": 0.07451, + "605": 0.07404, + "610": 0.07357, + "615": 0.07311, + "620": 0.07264, + "625": 0.07217, + "630": 0.07171, + "635": 0.07124, + "640": 0.07077, + "645": 0.0703, + "650": 0.06984, + "655": 0.06937, + "660": 0.0689, + "665": 0.06843, + "670": 0.06797, + "675": 0.0675, + "680": 0.06703, + "685": 0.06656, + "690": 0.0661, + "695": 0.06563, + "700": 0.06516, + "705": 0.06469, + "710": 0.06423, + "715": 0.06376, + "720": 0.06329, + "725": 0.06283, + "730": 0.06236, + "735": 0.06189, + "740": 0.06142, + "745": 0.06096, + "750": 0.06049, + "755": 0.06002, + "760": 0.05955, + "765": 0.05909, + "770": 0.05862, + "775": 0.05815, + "780": 0.05768, + "785": 0.05722, + "790": 0.05675, + "795": 0.05628, + "800": 0.05581, + "805": 0.05535, + "810": 0.05488, + "815": 0.05441, + "820": 0.05395, + "825": 0.05348, + "830": 0.05301, + "835": 0.05254, + "840": 0.05208, + "845": 0.05161, + "850": 0.05114, + "855": 0.05067, + "860": 0.05021, + "865": 0.04974, + "870": 0.04927, + "875": 0.0488, + "880": 0.04834, + "885": 0.04787, + "890": 0.0474, + "895": 0.04693, + "900": 0.04647, + "905": 0.046, + "910": 0.04584, + "915": 0.04567, + "920": 0.04551, + "925": 0.04534, + "930": 0.04518, + "935": 0.04501, + "940": 0.04485, + "945": 0.04468, + "950": 0.04452, + "955": 0.04435, + "960": 0.04419, + "965": 0.04402, + "970": 0.04386, + "975": 0.04369, + "980": 0.04353, + "985": 0.04336, + "990": 0.0432, + "995": 0.04303, + "1000": 0.04287, + "1005": 0.0427, + "1010": 0.04254, + "1015": 0.04237, + "1020": 0.04221, + "1025": 0.04204, + "1030": 0.04188, + "1035": 0.04171, + "1040": 0.04155, + "1045": 0.04138, + "1050": 0.04122, + "1055": 0.04105, + "1060": 0.04089, + "1065": 0.04072, + "1070": 0.04056, + "1075": 0.04039, + "1080": 0.04023, + "1085": 0.04006, + "1090": 0.0399, + "1095": 0.03973, + "1100": 0.03957, + "1105": 0.0394, + "1110": 0.03924, + "1115": 0.03907, + "1120": 0.03891, + "1125": 0.03874, + "1130": 0.03858, + "1135": 0.03841, + "1140": 0.03825, + "1145": 0.03808, + "1150": 0.03792, + "1155": 0.03775, + "1160": 0.03759, + "1165": 0.03742, + "1170": 0.03726, + "1175": 0.03709, + "1180": 0.03693, + "1185": 0.03676, + "1190": 0.0366, + "1195": 0.03643, + "1200": 0.03627, + "1205": 0.0361, + "1210": 0.03594, + "1215": 0.03577, + "1220": 0.03561, + "1225": 0.03544, + "1230": 0.03528, + "1235": 0.03511, + "1240": 0.03495, + "1245": 0.03478, + "1250": 0.03462, + "1255": 0.03445, + "1260": 0.03429, + "1265": 0.03412, + "1270": 0.03396, + "1275": 0.03379, + "1280": 0.03363, + "1285": 0.03346, + "1290": 0.0333, + "1295": 0.03313, + "1300": 0.03297, + "1305": 0.0328, + "1310": 0.03264, + "1315": 0.03247, + "1320": 0.03231, + "1325": 0.03214, + "1330": 0.03198, + "1335": 0.03181, + "1340": 0.03165, + "1345": 0.03148, + "1350": 0.03132, + "1355": 0.03115, + "1360": 0.03099, + "1365": 0.03082, + "1370": 0.03066, + "1375": 0.03049, + "1380": 0.03033, + "1385": 0.03016, + "1390": 0.03, + "1395": 0.02983, + "1400": 0.02967, + "1405": 0.0295, + "1410": 0.02934, + "1415": 0.02917, + "1420": 0.02901, + "1425": 0.02884, + "1430": 0.02868, + "1435": 0.02851, + "1440": 0.02835, + "1445": 0.02818, + "1450": 0.02802, + "1455": 0.02785, + "1460": 0.02769, + "1465": 0.02752, + "1470": 0.02736, + "1475": 0.02719, + "1480": 0.02703, + "1485": 0.02686, + "1490": 0.0267, + "1495": 0.02653, + "1500": 0.02637, + "1505": 0.0262, + "1510": 0.02604, + "1515": 0.02587, + "1520": 0.02571, + "1525": 0.02554, + "1530": 0.02538, + "1535": 0.02521, + "1540": 0.02505, + "1545": 0.02488, + "1550": 0.02472, + "1555": 0.02455, + "1560": 0.02439, + "1565": 0.02422, + "1570": 0.02406, + "1575": 0.02389, + "1580": 0.02373, + "1585": 0.02356, + "1590": 0.0234, + "1595": 0.02323, + "1600": 0.02307, + "1605": 0.0229, + "1610": 0.02274, + "1615": 0.02257, + "1620": 0.02241, + "1625": 0.02224, + "1630": 0.02208, + "1635": 0.02191, + "1640": 0.02175, + "1645": 0.02158, + "1650": 0.02142, + "1655": 0.02125, + "1660": 0.02109, + "1665": 0.02092, + "1670": 0.02076, + "1675": 0.02059, + "1680": 0.02043, + "1685": 0.02026, + "1690": 0.0201, + "1695": 0.01993, + "1700": 0.01977, + "1705": 0.0196, + "1710": 0.01944, + "1715": 0.01927, + "1720": 0.01911, + "1725": 0.01894, + "1730": 0.01878, + "1735": 0.01861, + "1740": 0.01845, + "1745": 0.01828, + "1750": 0.01812, + "1755": 0.01795, + "1760": 0.01779, + "1765": 0.01762, + "1770": 0.01746, + "1775": 0.01729, + "1780": 0.01713, + "1785": 0.01696, + "1790": 0.0168, + "1795": 0.01663, + "1800": 0.01647, + "1805": 0.0163, + "1810": 0.01614, + "1815": 0.01597, + "1820": 0.01581, + "1825": 0.01564, + "1830": 0.01548, + "1835": 0.01531, + "1840": 0.01515, + "1845": 0.01498, + "1850": 0.01482, + "1855": 0.01465, + "1860": 0.01449, + "1865": 0.01432, + "1870": 0.01416, + "1875": 0.01399, + "1880": 0.01383, + "1885": 0.01366, + "1890": 0.0135, + "1895": 0.01333, + "1900": 0.01317, + "1905": 0.013, + "1910": 0.01284, + "1915": 0.01267, + "1920": 0.01251, + "1925": 0.01234, + "1930": 0.01218, + "1935": 0.01201, + "1940": 0.01185, + "1945": 0.01168, + "1950": 0.01152, + "1955": 0.01135, + "1960": 0.01119, + "1965": 0.01102, + "1970": 0.01086, + "1975": 0.01069, + "1980": 0.01053, + "1985": 0.01036, + "1990": 0.0102, + "1995": 0.01003, + "2000": 0.00987, + "2005": 0.0097, + "2010": 0.00954, + "2015": 0.00937, + "2020": 0.00921, + "2025": 0.00904, + "2030": 0.00888, + "2035": 0.00871, + "2040": 0.00855, + "2045": 0.00838, + "2050": 0.00822, + "2055": 0.00805, + "2060": 0.00789, + "2065": 0.00772, + "2070": 0.00756, + "2075": 0.00739, + "2080": 0.00723, + "2085": 0.00706, + "2090": 0.0069, + "2095": 0.00673, + "2100": 0.00657, + "2105": 0.0064, + "2110": 0.00624, + "2115": 0.00607, + "2120": 0.00591, + "2125": 0.00574, + "2130": 0.00558, + "2135": 0.00541, + "2140": 0.00525, + "2145": 0.00508, + "2150": 0.00492, + "2155": 0.00475, + "2160": 0.00459, + "2165": 0.00442, + "2170": 0.00426, + "2175": 0.00409, + "2180": 0.00393, + "2185": 0.00376, + "2190": 0.0036, + "2195": 0.00343, + "2200": 0.00327, + "2205": 0.0031, + "2210": 0.00294, + "2215": 0.00277, + "2220": 0.00261, + "2225": 0.00244, + "2230": 0.00228, + "2235": 0.00211, + "2240": 0.00195, + "2245": 0.00178, + "2250": 0.00162, + "2255": 0.00145, + "2260": 0.00129, + "2265": 0.00112, + "2270": 0.00096, + "2275": 0.00079, + "2280": 0.00063, + "2285": 0.00046, + "2290": 0.0003, + "2295": 0.00013, + "2300": 0 + } + + # Stoploss: + stoploss = -0.322 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults4_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_timeframe_zoom.log b/Some Test Results/v0.11.0/HyperOptResults4_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_timeframe_zoom.log new file mode 100644 index 000000000..4b277c311 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults4_Pt1-22-05-2021_MoniGoManiConfiguration_bugfixed_timeframe_zoom.log @@ -0,0 +1,263 @@ +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +====================================================================================================================================================================================================================== +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 + +INFO - Using optimizer random state: 25773 +INFO - Using indicator startup period: 400 ... +INFO - Loading data from 2020-12-30 14:40:00 up to 2021-03-16 00:00:00 (75 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 640 | 323 187 130 | 1.50% | 432.525 USDT (86.50%) | 0 days 19:12:00 | -48,460.36573 | +| * Best | 5/1000 | 357 | 191 117 49 | 2.67% | 429.738 USDT (85.95%) | 1 days 01:34:00 | -51,041.33056 | +| * Best | 7/1000 | 333 | 181 120 32 | 2.96% | 444.163 USDT (88.83%) | 1 days 14:58:00 | -53,595.69965 | +| * Best | 20/1000 | 336 | 167 152 17 | 3.61% | 546.585 USDT (109.32%) | 1 days 20:29:00 | -60,309.83039 | +| Best | 49/1000 | 284 | 134 132 18 | 4.65% | 595.129 USDT (119.03%) | 1 days 22:37:00 | -62,337.67671 | +| Best | 54/1000 | 263 | 128 121 14 | 5.31% | 628.574 USDT (125.71%) | 2 days 07:26:00 | -67,914.77585 | +| Best | 62/1000 | 310 | 153 141 16 | 4.48% | 625.581 USDT (125.12%) | 2 days 02:06:00 | -68,543.54080 | +| Best | 74/1000 | 292 | 150 126 16 | 4.60% | 605.570 USDT (121.11%) | 2 days 05:10:00 | -69,059.97765 | +| Best | 80/1000 | 304 | 161 127 16 | 4.48% | 613.330 USDT (122.67%) | 2 days 02:25:00 | -72,110.72343 | +| Best | 88/1000 | 303 | 155 131 17 | 4.75% | 648.049 USDT (129.61%) | 2 days 04:26:00 | -73,595.29883 | +| Best | 268/1000 | 313 | 167 129 17 | 4.43% | 624.650 USDT (124.93%) | 1 days 21:03:00 | -73,988.14797 | +| Best | 274/1000 | 297 | 163 121 13 | 4.63% | 619.842 USDT (123.97%) | 1 days 23:54:00 | -75,520.66101 | +| Best | 398/1000 | 295 | 161 120 14 | 4.75% | 631.166 USDT (126.23%) | 1 days 22:57:00 | -76,471.75462 | +| Best | 419/1000 | 298 | 167 119 12 | 4.70% | 630.441 USDT (126.09%) | 1 days 23:36:00 | -78,432.86089 | +| Best | 785/1000 | 303 | 167 123 13 | 4.80% | 655.274 USDT (131.05%) | 1 days 21:49:00 | -80,177.07688 | + +Elapsed Time: 3:57:27 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-22_22-37-29.fthypt'. + +Best result: + + 785/1000: + 303 trades. + 167/123/13 Wins/Draws/Losses. + Avg profit 4.80%. + Median profit 0.16%. + Total profit 655.27405531 USDT ( 131.05Σ%). + Avg duration 1 day, 21:49:00 min. + Objective: -80177.07688 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 734, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 1, + "buy__sideways_trend_total_signal_needed": 217, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 6, + "buy__upwards_trend_total_signal_needed": 569, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "buy_downwards_trend_adx_strong_up_weight": 80, + "buy_downwards_trend_bollinger_bands_weight": 80, + "buy_downwards_trend_ema_long_golden_cross_weight": 77, + "buy_downwards_trend_ema_short_golden_cross_weight": 61, + "buy_downwards_trend_macd_weight": 43, + "buy_downwards_trend_rsi_weight": 75, + "buy_downwards_trend_sma_long_golden_cross_weight": 45, + "buy_downwards_trend_sma_short_golden_cross_weight": 58, + "buy_downwards_trend_vwap_cross_weight": 52, + "buy_sideways_trend_adx_strong_up_weight": 46, + "buy_sideways_trend_bollinger_bands_weight": 50, + "buy_sideways_trend_ema_long_golden_cross_weight": 34, + "buy_sideways_trend_ema_short_golden_cross_weight": 54, + "buy_sideways_trend_macd_weight": 80, + "buy_sideways_trend_rsi_weight": 35, + "buy_sideways_trend_sma_long_golden_cross_weight": 23, + "buy_sideways_trend_sma_short_golden_cross_weight": 83, + "buy_sideways_trend_vwap_cross_weight": 98, + "buy_upwards_trend_adx_strong_up_weight": 95, + "buy_upwards_trend_bollinger_bands_weight": 35, + "buy_upwards_trend_ema_long_golden_cross_weight": 66, + "buy_upwards_trend_ema_short_golden_cross_weight": 71, + "buy_upwards_trend_macd_weight": 100, + "buy_upwards_trend_rsi_weight": 76, + "buy_upwards_trend_sma_long_golden_cross_weight": 27, + "buy_upwards_trend_sma_short_golden_cross_weight": 22, + "buy_upwards_trend_vwap_cross_weight": 39, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 15, + "sell___unclogger_minimal_losing_trades_open": 3, + "sell___unclogger_open_trades_losing_percentage_needed": 17, + "sell___unclogger_trend_lookback_candles_window": 15, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 37, + "sell__downwards_trend_total_signal_needed": 553, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 66, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "sell__upwards_trend_total_signal_needed": 444, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_adx_strong_down_weight": 69, + "sell_downwards_trend_bollinger_bands_weight": 42, + "sell_downwards_trend_ema_long_death_cross_weight": 57, + "sell_downwards_trend_ema_short_death_cross_weight": 31, + "sell_downwards_trend_macd_weight": 31, + "sell_downwards_trend_rsi_weight": 81, + "sell_downwards_trend_sma_long_death_cross_weight": 100, + "sell_downwards_trend_sma_short_death_cross_weight": 95, + "sell_downwards_trend_vwap_cross_weight": 61, + "sell_sideways_trend_adx_strong_down_weight": 72, + "sell_sideways_trend_bollinger_bands_weight": 66, + "sell_sideways_trend_ema_long_death_cross_weight": 95, + "sell_sideways_trend_ema_short_death_cross_weight": 99, + "sell_sideways_trend_macd_weight": 4, + "sell_sideways_trend_rsi_weight": 29, + "sell_sideways_trend_sma_long_death_cross_weight": 84, + "sell_sideways_trend_sma_short_death_cross_weight": 100, + "sell_sideways_trend_vwap_cross_weight": 78, + "sell_upwards_trend_adx_strong_down_weight": 67, + "sell_upwards_trend_bollinger_bands_weight": 21, + "sell_upwards_trend_ema_long_death_cross_weight": 16, + "sell_upwards_trend_ema_short_death_cross_weight": 86, + "sell_upwards_trend_macd_weight": 86, + "sell_upwards_trend_rsi_weight": 13, + "sell_upwards_trend_sma_long_death_cross_weight": 49, + "sell_upwards_trend_sma_short_death_cross_weight": 78, + "sell_upwards_trend_vwap_cross_weight": 36 + } + + # ROI table: + minimal_roi = { + "0": 0.251, + "5": 0.20736, + "10": 0.16373, + "15": 0.12009, + "20": 0.07645, + "25": 0.05614, + "30": 0.05136, + "35": 0.04659, + "40": 0.04182, + "45": 0.03705, + "50": 0.03227, + "55": 0.0275, + "60": 0.02273, + "65": 0.01795, + "70": 0.01637, + "75": 0.01558, + "80": 0.0148, + "85": 0.01401, + "90": 0.01322, + "95": 0.01244, + "100": 0.01165, + "105": 0.01086, + "110": 0.01007, + "115": 0.00929, + "120": 0.0085, + "125": 0.00771, + "130": 0.00693, + "135": 0.00614, + "140": 0.00535, + "145": 0.00456, + "150": 0.00378, + "155": 0.00299, + "160": 0.0022, + "165": 0.00142, + "170": 0.00063, + "175": 0 + } + + # Stoploss: + stoploss = -0.327 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.307 + trailing_stop_positive_offset = 0.377 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021-Attempt2_MoniGoManiConfiguration_bugfixed_startup_candle_count.log b/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021-Attempt2_MoniGoManiConfiguration_bugfixed_startup_candle_count.log new file mode 100644 index 000000000..a23c24bab --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021-Attempt2_MoniGoManiConfiguration_bugfixed_startup_candle_count.log @@ -0,0 +1,258 @@ +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +====================================================================================================================================================================================================================== +INFO - Using config: ./user_data/mgm-config-usdt.json ... +INFO - Using config: ./user_data/mgm-config-private.json ... +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 + +INFO - Strategy using timeframe: 5m +INFO - Using optimizer random state: 41459 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 416 | 245 47 124 | 0.80% | 149.181 USDT (29.84%) | 0 days 11:04:00 | -19,504.66296 | +| * Best | 3/1000 | 433 | 213 171 49 | 3.34% | 651.970 USDT (130.39%) | 1 days 08:43:00 | -71,198.80872 | +| * Best | 15/1000 | 329 | 168 136 25 | 4.24% | 628.506 USDT (125.70%) | 1 days 18:34:00 | -71,248.62720 | +| Best | 72/1000 | 272 | 126 133 13 | 5.69% | 697.294 USDT (139.46%) | 2 days 04:08:00 | -71,708.50431 | +| Best | 85/1000 | 251 | 116 126 9 | 6.19% | 700.200 USDT (140.04%) | 2 days 05:36:00 | -71,838.89511 | +| Best | 94/1000 | 305 | 155 135 15 | 4.84% | 665.190 USDT (133.04%) | 1 days 23:16:00 | -75,046.55282 | +| Best | 132/1000 | 287 | 141 132 14 | 5.35% | 691.922 USDT (138.38%) | 1 days 22:45:00 | -75,465.40928 | +| Best | 141/1000 | 309 | 160 132 17 | 4.95% | 689.603 USDT (137.92%) | 1 days 22:15:00 | -79,270.90931 | + +Elapsed Time: 3:24:06 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-23_10-15-24.fthypt'. + +Best result: + + 141/1000: + 309 trades. + 160/132/17 Wins/Draws/Losses. + Avg profit 4.95%. + Median profit 0.07%. + Total profit 689.60266462 USDT ( 137.92Σ%). + Avg duration 1 day, 22:15:00 min. + Objective: -79270.90931 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 364, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy__sideways_trend_total_signal_needed": 351, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "buy__upwards_trend_total_signal_needed": 100, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "buy_downwards_trend_adx_strong_up_weight": 67, + "buy_downwards_trend_bollinger_bands_weight": 51, + "buy_downwards_trend_ema_long_golden_cross_weight": 80, + "buy_downwards_trend_ema_short_golden_cross_weight": 24, + "buy_downwards_trend_macd_weight": 36, + "buy_downwards_trend_rsi_weight": 78, + "buy_downwards_trend_sma_long_golden_cross_weight": 92, + "buy_downwards_trend_sma_short_golden_cross_weight": 10, + "buy_downwards_trend_vwap_cross_weight": 79, + "buy_sideways_trend_adx_strong_up_weight": 58, + "buy_sideways_trend_bollinger_bands_weight": 27, + "buy_sideways_trend_ema_long_golden_cross_weight": 76, + "buy_sideways_trend_ema_short_golden_cross_weight": 51, + "buy_sideways_trend_macd_weight": 62, + "buy_sideways_trend_rsi_weight": 47, + "buy_sideways_trend_sma_long_golden_cross_weight": 2, + "buy_sideways_trend_sma_short_golden_cross_weight": 23, + "buy_sideways_trend_vwap_cross_weight": 26, + "buy_upwards_trend_adx_strong_up_weight": 93, + "buy_upwards_trend_bollinger_bands_weight": 36, + "buy_upwards_trend_ema_long_golden_cross_weight": 56, + "buy_upwards_trend_ema_short_golden_cross_weight": 61, + "buy_upwards_trend_macd_weight": 61, + "buy_upwards_trend_rsi_weight": 37, + "buy_upwards_trend_sma_long_golden_cross_weight": 49, + "buy_upwards_trend_sma_short_golden_cross_weight": 43, + "buy_upwards_trend_vwap_cross_weight": 69 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 53, + "sell___unclogger_minimal_losing_trades_open": 1, + "sell___unclogger_open_trades_losing_percentage_needed": 30, + "sell___unclogger_trend_lookback_candles_window": 51, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 16, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 501, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 247, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "sell__upwards_trend_total_signal_needed": 886, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 62, + "sell_downwards_trend_bollinger_bands_weight": 51, + "sell_downwards_trend_ema_long_death_cross_weight": 11, + "sell_downwards_trend_ema_short_death_cross_weight": 19, + "sell_downwards_trend_macd_weight": 67, + "sell_downwards_trend_rsi_weight": 98, + "sell_downwards_trend_sma_long_death_cross_weight": 65, + "sell_downwards_trend_sma_short_death_cross_weight": 67, + "sell_downwards_trend_vwap_cross_weight": 93, + "sell_sideways_trend_adx_strong_down_weight": 60, + "sell_sideways_trend_bollinger_bands_weight": 55, + "sell_sideways_trend_ema_long_death_cross_weight": 49, + "sell_sideways_trend_ema_short_death_cross_weight": 50, + "sell_sideways_trend_macd_weight": 39, + "sell_sideways_trend_rsi_weight": 47, + "sell_sideways_trend_sma_long_death_cross_weight": 73, + "sell_sideways_trend_sma_short_death_cross_weight": 21, + "sell_sideways_trend_vwap_cross_weight": 16, + "sell_upwards_trend_adx_strong_down_weight": 40, + "sell_upwards_trend_bollinger_bands_weight": 68, + "sell_upwards_trend_ema_long_death_cross_weight": 65, + "sell_upwards_trend_ema_short_death_cross_weight": 74, + "sell_upwards_trend_macd_weight": 49, + "sell_upwards_trend_rsi_weight": 47, + "sell_upwards_trend_sma_long_death_cross_weight": 78, + "sell_upwards_trend_sma_short_death_cross_weight": 27, + "sell_upwards_trend_vwap_cross_weight": 28 + } + + # ROI table: + minimal_roi = { + "0": 0.245, + "5": 0.20413, + "10": 0.16326, + "15": 0.12239, + "20": 0.08152, + "25": 0.05627, + "30": 0.05443, + "35": 0.0526, + "40": 0.05077, + "45": 0.04893, + "50": 0.0471, + "55": 0.04527, + "60": 0.04343, + "65": 0.0416, + "70": 0.03977, + "75": 0.03793, + "80": 0.0361, + "85": 0.0342, + "90": 0.03222, + "95": 0.03023, + "100": 0.02824, + "105": 0.02625, + "110": 0.02426, + "115": 0.02227, + "120": 0.02028, + "125": 0.0183, + "130": 0.01631, + "135": 0.01432, + "140": 0.01233, + "145": 0.01034, + "150": 0.00835, + "155": 0.00636, + "160": 0.00438, + "165": 0.00239, + "170": 0.0004, + "175": 0 + } + + # Stoploss: + stoploss = -0.321 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.307 + trailing_stop_positive_offset = 0.353 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count.log b/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count.log new file mode 100644 index 000000000..8dc904d38 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults5_Pt1-23-05-2021_MoniGoManiConfiguration_bugfixed_startup_candle_count.log @@ -0,0 +1,240 @@ +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +====================================================================================================================================================================================================================== +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 + +INFO - Using indicator startup period: 4800 ... +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 2/1000 | 279 | 125 120 34 | 3.29% | 413.756 USDT (82.75%) | 1 days 11:46:00 | -41,153.18634 | +| * Best | 5/1000 | 613 | 335 248 30 | 2.79% | 769.838 USDT (153.97%) | 1 days 02:02:00 | -93,397.88611 | + +Elapsed Time: 2:47:39 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-23_02-59-10.fthypt'. + +Best result: + +* 5/1000: + 613 trades. + 335/248/30 Wins/Draws/Losses. + Avg profit 2.79%. + Median profit 0.51%. + Total profit 769.83793645 USDT ( 153.97Σ%). + Avg duration 1 day, 2:02:00 min. + Objective: -93397.88611 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 213, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "buy__sideways_trend_total_signal_needed": 852, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 6, + "buy__upwards_trend_total_signal_needed": 737, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 2, + "buy_downwards_trend_adx_strong_up_weight": 38, + "buy_downwards_trend_bollinger_bands_weight": 67, + "buy_downwards_trend_ema_long_golden_cross_weight": 54, + "buy_downwards_trend_ema_short_golden_cross_weight": 94, + "buy_downwards_trend_macd_weight": 74, + "buy_downwards_trend_rsi_weight": 96, + "buy_downwards_trend_sma_long_golden_cross_weight": 23, + "buy_downwards_trend_sma_short_golden_cross_weight": 22, + "buy_downwards_trend_vwap_cross_weight": 48, + "buy_sideways_trend_adx_strong_up_weight": 88, + "buy_sideways_trend_bollinger_bands_weight": 98, + "buy_sideways_trend_ema_long_golden_cross_weight": 26, + "buy_sideways_trend_ema_short_golden_cross_weight": 39, + "buy_sideways_trend_macd_weight": 19, + "buy_sideways_trend_rsi_weight": 27, + "buy_sideways_trend_sma_long_golden_cross_weight": 11, + "buy_sideways_trend_sma_short_golden_cross_weight": 93, + "buy_sideways_trend_vwap_cross_weight": 0, + "buy_upwards_trend_adx_strong_up_weight": 25, + "buy_upwards_trend_bollinger_bands_weight": 24, + "buy_upwards_trend_ema_long_golden_cross_weight": 10, + "buy_upwards_trend_ema_short_golden_cross_weight": 71, + "buy_upwards_trend_macd_weight": 66, + "buy_upwards_trend_rsi_weight": 75, + "buy_upwards_trend_sma_long_golden_cross_weight": 49, + "buy_upwards_trend_sma_short_golden_cross_weight": 60, + "buy_upwards_trend_vwap_cross_weight": 90, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 46, + "sell___unclogger_minimal_losing_trades_open": 2, + "sell___unclogger_open_trades_losing_percentage_needed": 36, + "sell___unclogger_trend_lookback_candles_window": 17, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 39, + "sell__downwards_trend_total_signal_needed": 783, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 414, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "sell__upwards_trend_total_signal_needed": 718, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 85, + "sell_downwards_trend_bollinger_bands_weight": 88, + "sell_downwards_trend_ema_long_death_cross_weight": 13, + "sell_downwards_trend_ema_short_death_cross_weight": 13, + "sell_downwards_trend_macd_weight": 10, + "sell_downwards_trend_rsi_weight": 54, + "sell_downwards_trend_sma_long_death_cross_weight": 85, + "sell_downwards_trend_sma_short_death_cross_weight": 41, + "sell_downwards_trend_vwap_cross_weight": 70, + "sell_sideways_trend_adx_strong_down_weight": 31, + "sell_sideways_trend_bollinger_bands_weight": 94, + "sell_sideways_trend_ema_long_death_cross_weight": 21, + "sell_sideways_trend_ema_short_death_cross_weight": 34, + "sell_sideways_trend_macd_weight": 92, + "sell_sideways_trend_rsi_weight": 67, + "sell_sideways_trend_sma_long_death_cross_weight": 13, + "sell_sideways_trend_sma_short_death_cross_weight": 78, + "sell_sideways_trend_vwap_cross_weight": 100, + "sell_upwards_trend_adx_strong_down_weight": 62, + "sell_upwards_trend_bollinger_bands_weight": 22, + "sell_upwards_trend_ema_long_death_cross_weight": 32, + "sell_upwards_trend_ema_short_death_cross_weight": 76, + "sell_upwards_trend_macd_weight": 81, + "sell_upwards_trend_rsi_weight": 21, + "sell_upwards_trend_sma_long_death_cross_weight": 86, + "sell_upwards_trend_sma_short_death_cross_weight": 74, + "sell_upwards_trend_vwap_cross_weight": 55, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.215, + "5": 0.19044, + "10": 0.16588, + "15": 0.14132, + "20": 0.11676, + "25": 0.09221, + "30": 0.06765, + "35": 0.04751, + "40": 0.04507, + "45": 0.04263, + "50": 0.0402, + "55": 0.03776, + "60": 0.03532, + "65": 0.03288, + "70": 0.03044, + "75": 0.028, + "80": 0.02545, + "85": 0.02291, + "90": 0.02036, + "95": 0.01782, + "100": 0.01527, + "105": 0.01273, + "110": 0.01018, + "115": 0.00764, + "120": 0.00509, + "125": 0.00255, + "130": 0 + } + + # Stoploss: + stoploss = -0.347 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.041 + trailing_stop_positive_offset = 0.121 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults5_Pt2-23-05-2021-MoniGoManiConfiguration_bugfixed_startup_candle_count.log b/Some Test Results/v0.11.0/HyperOptResults5_Pt2-23-05-2021-MoniGoManiConfiguration_bugfixed_startup_candle_count.log new file mode 100644 index 000000000..391863715 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults5_Pt2-23-05-2021-MoniGoManiConfiguration_bugfixed_startup_candle_count.log @@ -0,0 +1,246 @@ +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +====================================================================================================================================================================================================================== +INFO - Using config: ./user_data/mgm-config-usdt.json ... +INFO - Using config: ./user_data/mgm-config-private.json ... + +WARNING - Parameter "buy___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "buy___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "buy___trades_when_upwards" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed = 364 +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed = 351 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed = 100 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: buy_downwards_trend_adx_strong_up_weight = 67 +INFO - Strategy Parameter: buy_downwards_trend_bollinger_bands_weight = 51 +INFO - Strategy Parameter: buy_downwards_trend_ema_long_golden_cross_weight = 80 +INFO - Strategy Parameter: buy_downwards_trend_ema_short_golden_cross_weight = 24 +INFO - Strategy Parameter: buy_downwards_trend_macd_weight = 36 +INFO - Strategy Parameter: buy_downwards_trend_rsi_weight = 78 +WARNING - Parameter "buy_downwards_trend_sma_long_golden_cross_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "buy_downwards_trend_sma_short_golden_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: buy_downwards_trend_vwap_cross_weight = 79 +INFO - Strategy Parameter: buy_sideways_trend_adx_strong_up_weight = 58 +INFO - Strategy Parameter: buy_sideways_trend_bollinger_bands_weight = 27 +INFO - Strategy Parameter: buy_sideways_trend_ema_long_golden_cross_weight = 76 +INFO - Strategy Parameter: buy_sideways_trend_ema_short_golden_cross_weight = 51 +INFO - Strategy Parameter: buy_sideways_trend_macd_weight = 62 +INFO - Strategy Parameter: buy_sideways_trend_rsi_weight = 47 +WARNING - Parameter "buy_sideways_trend_sma_long_golden_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: buy_sideways_trend_sma_short_golden_cross_weight = 23 +INFO - Strategy Parameter: buy_sideways_trend_vwap_cross_weight = 26 +WARNING - Parameter "buy_upwards_trend_adx_strong_up_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_upwards_trend_bollinger_bands_weight = 36 +INFO - Strategy Parameter: buy_upwards_trend_ema_long_golden_cross_weight = 56 +INFO - Strategy Parameter: buy_upwards_trend_ema_short_golden_cross_weight = 61 +INFO - Strategy Parameter: buy_upwards_trend_macd_weight = 61 +INFO - Strategy Parameter: buy_upwards_trend_rsi_weight = 37 +INFO - Strategy Parameter: buy_upwards_trend_sma_long_golden_cross_weight = 49 +INFO - Strategy Parameter: buy_upwards_trend_sma_short_golden_cross_weight = 43 +INFO - Strategy Parameter: buy_upwards_trend_vwap_cross_weight = 69 +WARNING - Parameter "sell___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "sell___trades_when_upwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_enabled" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trade_duration_minutes = 53 +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trades_open = 1 +INFO - Strategy Parameter: sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window = 51 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window_percentage_needed = 16 +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_downwards_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_sideways_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_upwards_candles" exists, but is disabled. Default value "False" used. +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed = 501 +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed_candles_lookback_window = 2 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed = 247 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed = 886 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed_candles_lookback_window = 1 +INFO - Strategy Parameter: sell_downwards_trend_adx_strong_down_weight = 62 +INFO - Strategy Parameter: sell_downwards_trend_bollinger_bands_weight = 51 +INFO - Strategy Parameter: sell_downwards_trend_ema_long_death_cross_weight = 11 +INFO - Strategy Parameter: sell_downwards_trend_ema_short_death_cross_weight = 19 +INFO - Strategy Parameter: sell_downwards_trend_macd_weight = 67 +WARNING - Parameter "sell_downwards_trend_rsi_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: sell_downwards_trend_sma_long_death_cross_weight = 65 +INFO - Strategy Parameter: sell_downwards_trend_sma_short_death_cross_weight = 67 +WARNING - Parameter "sell_downwards_trend_vwap_cross_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: sell_sideways_trend_adx_strong_down_weight = 60 +INFO - Strategy Parameter: sell_sideways_trend_bollinger_bands_weight = 55 +INFO - Strategy Parameter: sell_sideways_trend_ema_long_death_cross_weight = 49 +INFO - Strategy Parameter: sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter: sell_sideways_trend_macd_weight = 39 +INFO - Strategy Parameter: sell_sideways_trend_rsi_weight = 47 +INFO - Strategy Parameter: sell_sideways_trend_sma_long_death_cross_weight = 73 +INFO - Strategy Parameter: sell_sideways_trend_sma_short_death_cross_weight = 21 +INFO - Strategy Parameter: sell_sideways_trend_vwap_cross_weight = 16 +INFO - Strategy Parameter: sell_upwards_trend_adx_strong_down_weight = 40 +INFO - Strategy Parameter: sell_upwards_trend_bollinger_bands_weight = 68 +INFO - Strategy Parameter: sell_upwards_trend_ema_long_death_cross_weight = 65 +INFO - Strategy Parameter: sell_upwards_trend_ema_short_death_cross_weight = 74 +INFO - Strategy Parameter: sell_upwards_trend_macd_weight = 49 +INFO - Strategy Parameter: sell_upwards_trend_rsi_weight = 47 +INFO - Strategy Parameter: sell_upwards_trend_sma_long_death_cross_weight = 78 +INFO - Strategy Parameter: sell_upwards_trend_sma_short_death_cross_weight = 27 +INFO - Strategy Parameter: sell_upwards_trend_vwap_cross_weight = 28 + +INFO - Using optimizer random state: 11703 +INFO - Using indicator startup period: 4800 ... +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 1156 | 445 94 617 | 1.12% | 582.451 USDT (116.49%) | 0 days 10:11:00 | -49,775.44413 | +| * Best | 2/1000 | 546 | 287 175 84 | 2.78% | 683.466 USDT (136.69%) | 1 days 02:35:00 | -79,755.25720 | +| * Best | 3/1000 | 468 | 263 175 30 | 3.19% | 672.296 USDT (134.46%) | 1 days 11:35:00 | -83,873.25874 | +| * Best | 7/1000 | 348 | 176 154 18 | 4.98% | 781.254 USDT (156.25%) | 1 days 22:56:00 | -87,716.04069 | + +Elapsed Time: 3:35:28 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-23_14-15-21.fthypt'. + +Best result: + +* 7/1000: + 348 trades. + 176/154/18 Wins/Draws/Losses. + Avg profit 4.98%. + Median profit 0.03%. + Total profit 781.25392644 USDT ( 156.25Σ%). + Avg duration 1 day, 22:56:00 min. + Objective: -87716.04069 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 367, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 4, + "buy__sideways_trend_total_signal_needed": 348, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 1, + "buy__upwards_trend_total_signal_needed": 110, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 2, + "buy_downwards_trend_adx_strong_up_weight": 72, + "buy_downwards_trend_bollinger_bands_weight": 61, + "buy_downwards_trend_ema_long_golden_cross_weight": 84, + "buy_downwards_trend_ema_short_golden_cross_weight": 26, + "buy_downwards_trend_macd_weight": 26, + "buy_downwards_trend_rsi_weight": 72, + "buy_downwards_trend_sma_long_golden_cross_weight": 100, # value loaded from strategy + "buy_downwards_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 76, + "buy_sideways_trend_adx_strong_up_weight": 67, + "buy_sideways_trend_bollinger_bands_weight": 20, + "buy_sideways_trend_ema_long_golden_cross_weight": 69, + "buy_sideways_trend_ema_short_golden_cross_weight": 55, + "buy_sideways_trend_macd_weight": 59, + "buy_sideways_trend_rsi_weight": 54, + "buy_sideways_trend_sma_long_golden_cross_weight": 0, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 29, + "buy_sideways_trend_vwap_cross_weight": 26, + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_upwards_trend_bollinger_bands_weight": 35, + "buy_upwards_trend_ema_long_golden_cross_weight": 64, + "buy_upwards_trend_ema_short_golden_cross_weight": 55, + "buy_upwards_trend_macd_weight": 61, + "buy_upwards_trend_rsi_weight": 36, + "buy_upwards_trend_sma_long_golden_cross_weight": 52, + "buy_upwards_trend_sma_short_golden_cross_weight": 40, + "buy_upwards_trend_vwap_cross_weight": 62 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 55, + "sell___unclogger_minimal_losing_trades_open": 2, + "sell___unclogger_open_trades_losing_percentage_needed": 33, + "sell___unclogger_trend_lookback_candles_window": 41, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 11, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 507, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 255, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 6, + "sell__upwards_trend_total_signal_needed": 881, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 71, + "sell_downwards_trend_bollinger_bands_weight": 51, + "sell_downwards_trend_ema_long_death_cross_weight": 7, + "sell_downwards_trend_ema_short_death_cross_weight": 26, + "sell_downwards_trend_macd_weight": 75, + "sell_downwards_trend_rsi_weight": 100, # value loaded from strategy + "sell_downwards_trend_sma_long_death_cross_weight": 55, + "sell_downwards_trend_sma_short_death_cross_weight": 72, + "sell_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 63, + "sell_sideways_trend_bollinger_bands_weight": 64, + "sell_sideways_trend_ema_long_death_cross_weight": 43, + "sell_sideways_trend_ema_short_death_cross_weight": 55, + "sell_sideways_trend_macd_weight": 47, + "sell_sideways_trend_rsi_weight": 55, + "sell_sideways_trend_sma_long_death_cross_weight": 68, + "sell_sideways_trend_sma_short_death_cross_weight": 17, + "sell_sideways_trend_vwap_cross_weight": 24, + "sell_upwards_trend_adx_strong_down_weight": 31, + "sell_upwards_trend_bollinger_bands_weight": 74, + "sell_upwards_trend_ema_long_death_cross_weight": 59, + "sell_upwards_trend_ema_short_death_cross_weight": 73, + "sell_upwards_trend_macd_weight": 54, + "sell_upwards_trend_rsi_weight": 51, + "sell_upwards_trend_sma_long_death_cross_weight": 83, + "sell_upwards_trend_sma_short_death_cross_weight": 36, + "sell_upwards_trend_vwap_cross_weight": 38 + } + + # ROI table: + minimal_roi = { + "0": 0.217, + "5": 0.19254, + "10": 0.16808, + "15": 0.14362, + "20": 0.11916, + "25": 0.0947, + "30": 0.07024, + "35": 0.04578, + "40": 0.03225, + "45": 0.026, + "50": 0.02077, + "55": 0.01962, + "60": 0.01846, + "65": 0.01731, + "70": 0.01615, + "75": 0.015, + "80": 0.01385, + "85": 0.01269, + "90": 0.01154, + "95": 0.01038, + "100": 0.00923, + "105": 0.00808, + "110": 0.00692, + "115": 0.00577, + "120": 0.00462, + "125": 0.00346, + "130": 0.00231, + "135": 0.00115, + "140": 0 + } + + # Stoploss: + stoploss = -0.343 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.317 + trailing_stop_positive_offset = 0.382 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults6_Pt1-23-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e.log b/Some Test Results/v0.11.0/HyperOptResults6_Pt1-23-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e.log new file mode 100644 index 000000000..3718e9805 --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults6_Pt1-23-05-2021-MoniGoManiConfiguration_freqtrade_develop-ae037b0e.log @@ -0,0 +1,251 @@ +freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +====================================================================================================================================================================================================================== +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 + +INFO - Using optimizer random state: 63330 +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 2/1000 | 179 | 103 65 11 | 1.03% | 83.075 USDT (16.62%) | 0 days 22:16:00 | -10,612.26343 | +| * Best | 4/1000 | 199 | 134 56 9 | 1.80% | 161.113 USDT (32.22%) | 1 days 06:34:00 | -24,084.37573 | +| * Best | 11/1000 | 729 | 312 220 197 | 1.41% | 461.397 USDT (92.28%) | 0 days 12:54:00 | -43,838.41254 | +| * Best | 12/1000 | 493 | 210 232 51 | 2.89% | 640.922 USDT (128.18%) | 0 days 23:53:00 | -60,608.13795 | +| * Best | 13/1000 | 492 | 251 208 33 | 2.57% | 568.701 USDT (113.74%) | 0 days 21:50:00 | -64,408.87232 | +| * Best | 22/1000 | 441 | 214 187 40 | 3.57% | 709.879 USDT (141.98%) | 1 days 13:05:00 | -76,473.84029 | +| Best | 37/1000 | 631 | 360 178 93 | 2.58% | 734.136 USDT (146.83%) | 1 days 04:08:00 | -92,982.88115 | +| Best | 80/1000 | 498 | 286 169 43 | 3.75% | 841.674 USDT (168.33%) | 1 days 11:45:00 | -107,308.45823 | +| Best | 87/1000 | 365 | 201 139 25 | 5.43% | 893.421 USDT (178.68%) | 2 days 02:17:00 | -109,222.70823 | +| Best | 92/1000 | 475 | 261 164 50 | 4.19% | 896.186 USDT (179.24%) | 1 days 10:17:00 | -109,319.72884 | +| Best | 102/1000 | 462 | 256 139 67 | 4.36% | 907.937 USDT (181.59%) | 1 days 13:02:00 | -111,688.15438 | +| Best | 109/1000 | 462 | 284 116 62 | 3.94% | 820.891 USDT (164.18%) | 1 days 08:44:00 | -112,025.02034 | +| Best | 115/1000 | 870 | 570 179 121 | 2.39% | 937.647 USDT (187.53%) | 0 days 18:52:00 | -136,379.29709 | +| Best | 362/1000 | 949 | 740 164 45 | 2.24% | 957.099 USDT (191.42%) | 0 days 18:42:00 | -165,682.13984 | +| Best | 511/1000 | 1149 | 965 140 44 | 1.93% | 998.092 USDT (199.62%) | 0 days 16:34:00 | -186,093.57563 | +| Best | 524/1000 | 1402 | 1224 133 45 | 1.59% | 1006.326 USDT (201.27%) | 0 days 13:45:00 | -195,040.84394 | +| Best | 729/1000 | 2262 | 1988 216 58 | 1.03% | 1047.670 USDT (209.53%) | 0 days 08:38:00 | -204,409.76863 | +| Best | 839/1000 | 2272 | 2074 138 60 | 1.02% | 1044.622 USDT (208.92%) | 0 days 08:15:00 | -211,696.08716 | +| Best | 954/1000 | 2150 | 1945 147 58 | 1.18% | 1143.908 USDT (228.78%) | 0 days 10:11:00 | -229,734.24005 | + +Elapsed Time: 4:25:31 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Git/user_data/hyperopt_results/strategy_MoniGoManiConfiguration_2021-05-23_21-52-00.fthypt'. + +Best result: + + 954/1000: + 2150 trades. + 1945/147/58 Wins/Draws/Losses. + Avg profit 1.18%. + Median profit 1.08%. + Total profit 1143.90822134 USDT ( 228.78Σ%). + Avg duration 10:11:00 min. + Objective: -229734.24005 + + + # Buy hyperspace params: + buy_params = { + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy__downwards_trend_total_signal_needed": 155, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "buy__sideways_trend_total_signal_needed": 265, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "buy__upwards_trend_total_signal_needed": 187, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 96, + "buy_downwards_trend_bollinger_bands_weight": 28, + "buy_downwards_trend_ema_long_golden_cross_weight": 5, + "buy_downwards_trend_ema_short_golden_cross_weight": 97, + "buy_downwards_trend_macd_weight": 85, + "buy_downwards_trend_rsi_weight": 13, + "buy_downwards_trend_sma_long_golden_cross_weight": 31, + "buy_downwards_trend_sma_short_golden_cross_weight": 76, + "buy_downwards_trend_vwap_cross_weight": 45, + "buy_sideways_trend_adx_strong_up_weight": 55, + "buy_sideways_trend_bollinger_bands_weight": 55, + "buy_sideways_trend_ema_long_golden_cross_weight": 74, + "buy_sideways_trend_ema_short_golden_cross_weight": 45, + "buy_sideways_trend_macd_weight": 36, + "buy_sideways_trend_rsi_weight": 49, + "buy_sideways_trend_sma_long_golden_cross_weight": 68, + "buy_sideways_trend_sma_short_golden_cross_weight": 46, + "buy_sideways_trend_vwap_cross_weight": 20, + "buy_upwards_trend_adx_strong_up_weight": 49, + "buy_upwards_trend_bollinger_bands_weight": 5, + "buy_upwards_trend_ema_long_golden_cross_weight": 6, + "buy_upwards_trend_ema_short_golden_cross_weight": 22, + "buy_upwards_trend_macd_weight": 45, + "buy_upwards_trend_rsi_weight": 26, + "buy_upwards_trend_sma_long_golden_cross_weight": 16, + "buy_upwards_trend_sma_short_golden_cross_weight": 37, + "buy_upwards_trend_vwap_cross_weight": 59 + } + + # Sell hyperspace params: + sell_params = { + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_minimal_losing_trade_duration_minutes": 22, + "sell___unclogger_minimal_losing_trades_open": 3, + "sell___unclogger_open_trades_losing_percentage_needed": 26, + "sell___unclogger_trend_lookback_candles_window": 22, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 24, + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell__downwards_trend_total_signal_needed": 356, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell__sideways_trend_total_signal_needed": 214, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 3, + "sell__upwards_trend_total_signal_needed": 291, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, + "sell_downwards_trend_adx_strong_down_weight": 24, + "sell_downwards_trend_bollinger_bands_weight": 75, + "sell_downwards_trend_ema_long_death_cross_weight": 10, + "sell_downwards_trend_ema_short_death_cross_weight": 10, + "sell_downwards_trend_macd_weight": 44, + "sell_downwards_trend_rsi_weight": 97, + "sell_downwards_trend_sma_long_death_cross_weight": 4, + "sell_downwards_trend_sma_short_death_cross_weight": 24, + "sell_downwards_trend_vwap_cross_weight": 71, + "sell_sideways_trend_adx_strong_down_weight": 93, + "sell_sideways_trend_bollinger_bands_weight": 47, + "sell_sideways_trend_ema_long_death_cross_weight": 24, + "sell_sideways_trend_ema_short_death_cross_weight": 3, + "sell_sideways_trend_macd_weight": 82, + "sell_sideways_trend_rsi_weight": 7, + "sell_sideways_trend_sma_long_death_cross_weight": 46, + "sell_sideways_trend_sma_short_death_cross_weight": 21, + "sell_sideways_trend_vwap_cross_weight": 52, + "sell_upwards_trend_adx_strong_down_weight": 77, + "sell_upwards_trend_bollinger_bands_weight": 2, + "sell_upwards_trend_ema_long_death_cross_weight": 55, + "sell_upwards_trend_ema_short_death_cross_weight": 20, + "sell_upwards_trend_macd_weight": 52, + "sell_upwards_trend_rsi_weight": 84, + "sell_upwards_trend_sma_long_death_cross_weight": 91, + "sell_upwards_trend_sma_short_death_cross_weight": 3, + "sell_upwards_trend_vwap_cross_weight": 82 + } + + # ROI table: + minimal_roi = { + "0": 0.139, + "5": 0.12457, + "10": 0.11014, + "15": 0.09571, + "20": 0.08129, + "25": 0.06686, + "30": 0.05243, + "35": 0.038, + "40": 0.03363, + "45": 0.02925, + "50": 0.02488, + "55": 0.02191, + "60": 0.0193, + "65": 0.0167, + "70": 0.01409, + "75": 0.01148, + "80": 0.00887, + "85": 0.00626, + "90": 0.00365, + "95": 0.00104, + "100": 0 + } + + # Stoploss: + stoploss = -0.312 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.014 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 313aff59a..46c1566e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,7 +24,7 @@ services: command: > trade --logfile /freqtrade/user_data/logs/freqtrade.log - --db-url sqlite:////freqtrade/user_data/tradesv3-MoniGoMani_v0.10.0.sqlite - --config /freqtrade/user_data/config-btc.json - --config /freqtrade/user_data/config-private.json - --strategy MoniGoManiHyperStrategy + --db-url sqlite:////freqtrade/user_data/tradesv3-MoniGoMani_v0.11.0.sqlite + --config /freqtrade/user_data/mgm-config-usdt.json + --config /freqtrade/user_data/mgm-config-private.json + --strategy MoniGoManiConfiguration diff --git a/user_data/config-btc.json b/user_data/mgm-config-btc.json similarity index 61% rename from user_data/config-btc.json rename to user_data/mgm-config-btc.json index a70b3d04d..bd3b235b0 100644 --- a/user_data/config-btc.json +++ b/user_data/mgm-config-btc.json @@ -4,8 +4,7 @@ "max_open_trades": -1, "stake_currency": "BTC", "stake_amount": 0.001, - "tradable_balance_ratio": 1.00, - "fiat_display_currency": "EUR", + "tradable_balance_ratio": 1.0, "cancel_open_orders_on_exit": false, "unfilledtimeout": { "buy": 10, @@ -30,28 +29,16 @@ "sell_profit_only": true, "ignore_roi_if_buy_signal": true }, - "pairlists": [ - { - "method": "StaticPairList" - } - ], - "_pairlists": [ - { - "method": "VolumePairList", - "number_assets": 100, - "sort_key": "quoteVolume", - "refresh_period": 300 - }, - { - "method": "PerformanceFilter" - }, - { - "method": "RangeStabilityFilter", - "lookback_days": 10, - "min_rate_of_change": 0.01, - "refresh_period": 1440 - } - ], + "order_types": { + "buy": "limit", + "sell": "limit", + "stoploss": "market", + "stoploss_on_exchange": false + }, + "order_time_in_force": { + "buy": "gtc", + "sell": "gtc" + }, "exchange": { "ccxt_config": { "enableRateLimit": true @@ -61,56 +48,21 @@ "rateLimit": 200 }, "pair_whitelist": [ - "AAVE/BTC", + "ETH/BTC", + "XRP/BTC", "ADA/BTC", - "ALGO/BTC", - "ANKR/BTC", - "ATOM/BTC", - "AUDIO/BTC", - "AVAX/BTC", - "BAT/BTC", - "BCH/BTC", - "BNB/BTC", - "CAKE/BTC", - "CHZ/BTC", - "COTI/BTC", + "DOGE/BTC", "DOT/BTC", - "ENJ/BTC", - "EOS/BTC", - "ETC/BTC", - "ETH/BTC", - "FIL/BTC", - "HBAR/BTC", - "LINK/BTC", - "LTC/BTC", - "LUNA/BTC", - "MANA/BTC", - "MATIC/BTC", - "MITH/BTC", - "MTL/BTC", - "NEO/BTC", - "NKN/BTC", - "OGN/BTC", - "OMG/BTC", - "ONE/BTC", - "ONT/BTC", - "QTUM/BTC", - "RVN/BTC", "SOL/BTC", - "STORJ/BTC", - "SXP/BTC", - "TFUEL/BTC", - "THETA/BTC", - "TRX/BTC", - "UNI/BTC", + "LTC/BTC", + "LINK/BTC", "VET/BTC", - "WRX/BTC", - "XEM/BTC", - "XLM/BTC", - "XMR/BTC", - "XRP/BTC", - "XTZ/BTC", - "ZEC/BTC" + "ETC/BTC", + "AAVE/BTC", + "RUNE/BTC", + "THETA/BTC", + "EOS/BTC", + "BCH/BTC" ], "pair_blacklist": [ ".*DOWN/BTC", @@ -131,24 +83,61 @@ ".*BEAR2021/.*" ] }, - "edge": { - "enabled": false, - "process_throttle_secs": 3600, - "calculate_since_number_of_days": 7, - "allowed_risk": 0.01, - "stoploss_range_min": -0.01, - "stoploss_range_max": -0.1, - "stoploss_range_step": -0.01, - "minimum_winrate": 0.60, - "minimum_expectancy": 0.20, - "min_trade_number": 10, - "max_trade_duration_minute": 1440, - "remove_pumps": false - }, - "bot_name": "Freqtrade - MoniGoMani v0.10.0", + "pairlists": [ + { + "method": "StaticPairList" + } + ], + "_pairlists": [ + { + "method": "VolumePairList", + "number_assets": 200, + "sort_key": "quoteVolume", + "refresh_period": 1800 + }, + { + "method": "AgeFilter", + "min_days_listed": 3 + }, + { + "method": "PerformanceFilter" + }, + { + "method": "PrecisionFilter" + }, + { + "method": "PriceFilter", + "low_price_ratio": 0.1 + }, + { + "method": "ShuffleFilter" + }, + { + "method": "SpreadFilter", + "max_spread_ratio": 0.005 + }, + { + "method": "RangeStabilityFilter", + "lookback_days": 10, + "min_rate_of_change": 0.01, + "refresh_period": 1440 + }, + { + "method": "VolatilityFilter", + "lookback_days": 5, + "min_volatility": 0.05, + "max_volatility": 0.5, + "refresh_period": 1440 + }, + { + "method": "VolumePairList", + "number_assets": 100, + "sort_key": "quoteVolume" + } + ], "initial_state": "running", "forcebuy_enable": false, "internals": { "process_throttle_secs": 5 } -} \ No newline at end of file +} diff --git a/user_data/config-private.json b/user_data/mgm-config-private.json similarity index 84% rename from user_data/config-private.json rename to user_data/mgm-config-private.json index 83c0e7005..4f242afc3 100644 --- a/user_data/config-private.json +++ b/user_data/mgm-config-private.json @@ -1,4 +1,6 @@ { + "bot_name": "Freqtrade - MoniGoMani v0.11.0", + "fiat_display_currency": "EUR", "exchange": { "name": "binance", "key": "", diff --git a/user_data/config-usdt.json b/user_data/mgm-config-usdt.json similarity index 62% rename from user_data/config-usdt.json rename to user_data/mgm-config-usdt.json index b40cd952f..6770806ef 100644 --- a/user_data/config-usdt.json +++ b/user_data/mgm-config-usdt.json @@ -5,7 +5,6 @@ "stake_currency": "USDT", "stake_amount": 45, "tradable_balance_ratio": 1.00, - "fiat_display_currency": "EUR", "cancel_open_orders_on_exit": false, "unfilledtimeout": { "buy": 10, @@ -30,26 +29,16 @@ "sell_profit_only": true, "ignore_roi_if_buy_signal": true }, - "pairlists": [{ - "method": "StaticPairList" - }], - "_pairlists": [ - { - "method": "VolumePairList", - "number_assets": 100, - "sort_key": "quoteVolume", - "refresh_period": 300 - }, - { - "method": "PerformanceFilter" - }, - { - "method": "RangeStabilityFilter", - "lookback_days": 10, - "min_rate_of_change": 0.01, - "refresh_period": 1440 - } - ], + "order_types": { + "buy": "limit", + "sell": "limit", + "stoploss": "market", + "stoploss_on_exchange": false + }, + "order_time_in_force": { + "buy": "gtc", + "sell": "gtc" + }, "exchange": { "ccxt_config": {"enableRateLimit": true}, "ccxt_async_config": { @@ -60,18 +49,18 @@ "BTC/USDT", "ETH/USDT", "XRP/USDT", - "MATIC/USDT", - "DOGE/USDT", "ADA/USDT", - "BUSD/USDT", - "LTC/USDT", - "DOT/USDT", - "SOL/USDT", - "XVS/USDT", - "EOS/USDT", - "ETC/USDT", - "AAVE/USDT", - "LINK/USDT" + "DOGE/USDT", + "TRX/USDT", + "ICP/USDT", + "XLM/USDT", + "UNI/USDT", + "BTT/USDT", + "HOT/USDT", + "WIN/USDT", + "MKR/USDT", + "TFUEL/USDT", + "ALGO/USDT" ], "pair_blacklist": [ ".*DOWN/BTC", @@ -92,21 +81,56 @@ ".*BEAR2021/.*" ] }, - "edge": { - "enabled": false, - "process_throttle_secs": 3600, - "calculate_since_number_of_days": 7, - "allowed_risk": 0.01, - "stoploss_range_min": -0.01, - "stoploss_range_max": -0.1, - "stoploss_range_step": -0.01, - "minimum_winrate": 0.60, - "minimum_expectancy": 0.20, - "min_trade_number": 10, - "max_trade_duration_minute": 1440, - "remove_pumps": false - }, - "bot_name": "Freqtrade - MoniGoMani v0.10.0", + "pairlists": [{ + "method": "StaticPairList" + }], + "_pairlists": [ + { + "method": "VolumePairList", + "number_assets": 200, + "sort_key": "quoteVolume", + "refresh_period": 1800 + }, + { + "method": "AgeFilter", + "min_days_listed": 3 + }, + { + "method": "PerformanceFilter" + }, + { + "method": "PrecisionFilter" + }, + { + "method": "PriceFilter", + "low_price_ratio": 0.10 + }, + { + "method": "ShuffleFilter" + }, + { + "method": "SpreadFilter", + "max_spread_ratio": 0.005 + }, + { + "method": "RangeStabilityFilter", + "lookback_days": 10, + "min_rate_of_change": 0.01, + "refresh_period": 1440 + }, + { + "method": "VolatilityFilter", + "lookback_days": 5, + "min_volatility": 0.05, + "max_volatility": 0.50, + "refresh_period": 1440 + }, + { + "method": "VolumePairList", + "number_assets": 100, + "sort_key": "quoteVolume" + } + ], "initial_state": "running", "forcebuy_enable": false, "internals": { diff --git a/user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json b/user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json index 047e86afa..8ffb37c7b 100644 --- a/user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json +++ b/user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json @@ -2,54 +2,20 @@ "exchange": { "pair_whitelist": [ "ETH/BTC", - "DOGE/BTC", "XRP/BTC", - "VET/BTC", "ADA/BTC", + "DOGE/BTC", "DOT/BTC", "SOL/BTC", "LTC/BTC", "LINK/BTC", - "CAKE/BTC", - "THETA/BTC", - "LUNA/BTC", - "CHZ/BTC", - "XMR/BTC", - "BCH/BTC", - "TRX/BTC", - "IOST/BTC", - "XVG/BTC", - "WBTC/BTC", - "BTG/BTC", - "NEO/BTC", - "EOS/BTC", - "XLM/BTC", - "SC/BTC", - "COMP/BTC", - "SXP/BTC", - "RCN/BTC", - "UNI/BTC", - "DLT/BTC", + "VET/BTC", "ETC/BTC", - "COTI/BTC", - "TFUEL/BTC", - "STMX/BTC", - "ENJ/BTC", - "WRX/BTC", - "MATIC/BTC", - "STORJ/BTC", - "ATOM/BTC", - "RSR/BTC", - "NANO/BTC", - "XEM/BTC", - "IOTA/BTC", - "BQX/BTC", - "RVN/BTC", + "AAVE/BTC", "RUNE/BTC", - "GXS/BTC", - "DGB/BTC", - "FIL/BTC", - "RDN/BTC" + "THETA/BTC", + "EOS/BTC", + "BCH/BTC" ] } } diff --git a/user_data/mgm_pair_lists/Binance-USDT-All-Tradable-StaticPairList.json b/user_data/mgm_pair_lists/Binance-USDT-All-Tradable-StaticPairList.json new file mode 100644 index 000000000..accfb8bf9 --- /dev/null +++ b/user_data/mgm_pair_lists/Binance-USDT-All-Tradable-StaticPairList.json @@ -0,0 +1,133 @@ +[ + "1INCH/USDT", + "AAVE/USDT", + "ADA/USDT", + "AKRO/USDT", + "ALGO/USDT", + "ALPHA/USDT", + "ANKR/USDT", + "ARPA/USDT", + "ATOM/USDT", + "AVAX/USDT", + "BAL/USDT", + "BAND/USDT", + "BAT/USDT", + "BCH/USDT", + "BNB/USDT", + "BNT/USDT", + "BTC/USDT", + "BTS/USDT", + "BTT/USDT", + "BUSD/USDT", + "BZRX/USDT", + "CAKE/USDT", + "CELR/USDT", + "CHR/USDT", + "CHZ/USDT", + "CKB/USDT", + "COMP/USDT", + "COS/USDT", + "COTI/USDT", + "CRV/USDT", + "CTSI/USDT", + "DASH/USDT", + "DGB/USDT", + "DIA/USDT", + "DNT/USDT", + "DOCK/USDT", + "DODO/USDT", + "DOGE/USDT", + "DOT/USDT", + "EGLD/USDT", + "ENJ/USDT", + "EOS/USDT", + "ETC/USDT", + "ETH/USDT", + "EUR/USDT", + "FET/USDT", + "FIL/USDT", + "FTM/USDT", + "FUN/USDT", + "GBP/USDT", + "GRT/USDT", + "GTO/USDT", + "HBAR/USDT", + "INJ/USDT", + "IOST/USDT", + "IOTA/USDT", + "IOTX/USDT", + "JST/USDT", + "KAVA/USDT", + "KNC/USDT", + "KSM/USDT", + "LINA/USDT", + "LINK/USDT", + "LIT/USDT", + "LRC/USDT", + "LTC/USDT", + "LTO/USDT", + "MANA/USDT", + "MATIC/USDT", + "MDT/USDT", + "MFT/USDT", + "MITH/USDT", + "MKR/USDT", + "NBS/USDT", + "NEAR/USDT", + "NEO/USDT", + "NKN/USDT", + "NMR/USDT", + "OCEAN/USDT", + "OGN/USDT", + "OMG/USDT", + "ONE/USDT", + "ONT/USDT", + "ORN/USDT", + "OXT/USDT", + "PNT/USDT", + "QTUM/USDT", + "REEF/USDT", + "REN/USDT", + "REP/USDT", + "RLC/USDT", + "ROSE/USDT", + "RSR/USDT", + "RUNE/USDT", + "RVN/USDT", + "SAND/USDT", + "SC/USDT", + "SKL/USDT", + "SNX/USDT", + "SOL/USDT", + "SRM/USDT", + "STMX/USDT", + "STORJ/USDT", + "STPT/USDT", + "STX/USDT", + "SUSHI/USDT", + "SXP/USDT", + "TCT/USDT", + "TFUEL/USDT", + "THETA/USDT", + "TOMO/USDT", + "TRB/USDT", + "TROY/USDT", + "TRX/USDT", + "UMA/USDT", + "UNI/USDT", + "USDC/USDT", + "UTK/USDT", + "VET/USDT", + "WAVES/USDT", + "WNXM/USDT", + "XEM/USDT", + "XLM/USDT", + "XMR/USDT", + "XRP/USDT", + "XTZ/USDT", + "YFI/USDT", + "YFII/USDT", + "ZEC/USDT", + "ZIL/USDT", + "ZRX/USDT" +] diff --git a/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json b/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json index 8adf61828..08bb59416 100644 --- a/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json +++ b/user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json @@ -3,19 +3,19 @@ "pair_whitelist": [ "BTC/USDT", "ETH/USDT", - "XRP/USDT", - "MATIC/USDT", "DOGE/USDT", + "XRP/USDT", "ADA/USDT", - "BUSD/USDT", - "LTC/USDT", - "DOT/USDT", - "SOL/USDT", - "XVS/USDT", - "EOS/USDT", "ETC/USDT", + "LTC/USDT", + "ICP/USDT", + "TRX/USDT", "AAVE/USDT", - "LINK/USDT" + "XLM/USDT", + "UNI/USDT", + "BTT/USDT", + "AVAX/USDT", + "WIN/USDT" ] } } diff --git a/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json b/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json index fb2960a5b..b0ad5dbb8 100644 --- a/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json +++ b/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json @@ -2,13 +2,42 @@ "pairlists": [ { "method": "VolumePairList", - "number_assets": 15, + "number_assets": 200, "sort_key": "quoteVolume", - "refresh_period": 300 + "refresh_period": 1800 + }, + { + "method": "AgeFilter", + "min_days_listed": 3 + }, + { + "method": "PriceFilter", + "low_price_ratio": 0.10 + }, + { + "method": "ShuffleFilter" + }, + { + "method": "SpreadFilter", + "max_spread_ratio": 0.005 + }, + { + "method": "RangeStabilityFilter", + "lookback_days": 10, + "min_rate_of_change": 0.01, + "refresh_period": 1440 + }, + { + "method": "VolatilityFilter", + "lookback_days": 5, + "min_volatility": 0.05, + "max_volatility": 0.50, + "refresh_period": 1440 }, { - "method": "AgeFilter", - "min_days_listed": 10 + "method": "VolumePairList", + "number_assets": 15, + "sort_key": "quoteVolume" } ], "exchange": { @@ -25,7 +54,11 @@ ".*/BNB", "BNB/.*", ".*_PREMIUM", - ".*PERP" + ".*PERP", + ".*BULL/.*", + ".*BEAR/.*", + ".*BULL2021/.*", + ".*BEAR2021/.*" ], "ccxt_config": { "enableRateLimit": true diff --git a/user_data/strategies/MoniGoManiConfiguration.py b/user_data/strategies/MoniGoManiConfiguration.py index 3e33a68e0..092d89e25 100644 --- a/user_data/strategies/MoniGoManiConfiguration.py +++ b/user_data/strategies/MoniGoManiConfiguration.py @@ -1,64 +1,88 @@ # --- Do not remove these libs ---------------------------------------------------------------------- from MoniGoManiHyperStrategy import MoniGoManiHyperStrategy as MGMStrategy from freqtrade.strategy \ - import IStrategy, CategoricalParameter, IntParameter, RealParameter, merge_informative_pair, timeframe_to_minutes + import CategoricalParameter, IntParameter import sys from pathlib import Path sys.path.append(str(Path(__file__).parent)) -# Function to initialize the parameters values without manual overriding -def init_vars(parameter_dictionary, parameter_name, parameter_default_value, parameter_max_value, - parameter_threshold, precision): +def init_vars(parameter_dictionary: dict, parameter_name: str, parameter_min_value: int, parameter_max_value: int, + parameter_threshold: int, precision: float, overrideable: bool = True): + """ + Function to automatically initialize MoniGoMani's HyperOptable parameter values for both HyperOpt Runs. + + :param parameter_dictionary: Buy or Sell params dictionary + :param parameter_name: Name of the signal in the dictionary + :param parameter_min_value: Minimal search space value to use during the 1st HyperOpt Run + :param parameter_max_value: Maximum search space value to use during the 1st HyperOpt Run + :param parameter_threshold: Threshold to use for overriding weak/strong signals and setting up refined search spaces after the 1st HyperOpt Run + :param precision: Precision used while HyperOpting + :param overrideable: Allow value to be overrideable or not (defaults to 'True') + :return: Dictionary containing the search space values to use during the HyperOpt Runs + """ parameter_value = parameter_dictionary.get(parameter_name) + # 1st HyperOpt Run: Use provided min/max values for the search spaces if parameter_value is None: - min_value = 0 + min_value = parameter_min_value max_value = parameter_max_value + # 2nd HyperOpt Run: Use refined search spaces where needed else: - min_value = 0 if parameter_value <= (0 + parameter_threshold) else \ + min_value = parameter_min_value if parameter_value <= (parameter_min_value + parameter_threshold) else \ parameter_value - parameter_threshold max_value = parameter_max_value if parameter_value >= (parameter_max_value - parameter_threshold) else \ parameter_value + parameter_threshold + # 1st HyperOpt Run: Use middle of min/max values as default value if parameter_value is None: - default_value = parameter_default_value - elif max_value == parameter_max_value: + default_value = int((parameter_min_value + parameter_max_value) / 2) + # 2nd HyperOpt Run: Use Overrides where needed for default value + elif (max_value == parameter_max_value) and (overrideable is True): default_value = parameter_max_value - elif min_value == 0: - default_value = 0 + elif min_value == parameter_min_value and (overrideable is True): + default_value = parameter_min_value + # 2nd HyperOpt Run: Use values found in Run 1 for the remaining default values else: default_value = parameter_value return_vars_dictionary = { - "min_value": min_value * precision, - "max_value": max_value * precision, - "default_value": default_value * precision, - "opt_and_Load": False if parameter_value is not None and ( - min_value == 0 or max_value == parameter_max_value) else True + "min_value": int(min_value * precision), + "max_value": int(max_value * precision), + "default_value": int(default_value * precision), + # 1st HyperOpt Run: No overrides, 2nd HyperOpt Run: Apply Overrides where needed + "opt_and_Load": False if (parameter_value is not None) and (overrideable is True) and + (min_value == parameter_min_value or max_value == parameter_max_value) else True } return return_vars_dictionary -################################################################################# -# *** THIS IS A CHILD STRATEGY, REQUIRES IMPORT OF PARENT STRATEGY *** # -################################################################################# class MoniGoManiConfiguration(MGMStrategy): + """ + MoniGoManiConfiguration is a Child Strategy which requires import of it's Parent Strategy, MoniGoManiHyperStrategy. + It separates most code from settings, and automates the refining of the search spaces and setting up of overrides in + between HyperOpt Runs. + """ + #################################################################################################################### - # Global parameters you want to override + # START MONIGOMANI SETTINGS SECTION # #################################################################################################################### timeframe = '1h' + backtest_timeframe = '5m' precision = 1 - # Search space threshold: to reduce the search space with min / max around the first value found - search_threshold = 10 + # Default Minimal/Maximum search space values for signals: + min_weighted_signal_value = 0 + max_weighted_signal_value = 100 + min_trend_total_signal_needed_value = 30 + min_trend_total_signal_needed_candles_lookback_window_value = 1 + max_trend_total_signal_needed_candles_lookback_window_value = 6 - # Maximum value for weighted indicators - max_weight_value = 100 - # Maximum value for trend lookback indicators - max_trend_lookback_value = int(360 / timeframe_to_minutes(timeframe)) + # Search space thresholds, for detecting overrides and refining search spaces during the 2nd HyperOpt Run + search_threshold_weighted_signal_values = 10 + search_threshold_trend_total_signal_needed_candles_lookback_window_value = 1 # Number of weighted signals: # Fill in the total number of different weighted signals in use in the weighted tables @@ -72,89 +96,45 @@ class MoniGoManiConfiguration(MGMStrategy): roi_table_step_size = 5 #################################################################################################################### - # START OF HYPEROPT RESULTS COPY-PASTE SECTION # - # ################################################################################################################## - # ### COPY/PASTE hyperopt results after 1st iteration below ##### - # Buy hyperspace params: - buy_params = { - } + # END MONIGOMANI SETTINGS SECTION # + #################################################################################################################### - # Sell hyperspace params: - sell_params = { - } + # Initialize empty buy/sell_params dictionaries + buy_params = {} + sell_params = {} - # ROI table: + #################################################################################################################### + # START OF 1ST RUN HYPEROPT RESULTS COPY-PASTE SECTION # + #################################################################################################################### - # Stoploss: + # Paste 1st Run HyperOpt Results here... - # Trailing stop: + #################################################################################################################### + # END OF 1ST RUN HYPEROPT RESULTS COPY-PASTE SECTION # + #################################################################################################################### - # ##################################################################### - # ### DO NOT REMOVE / MODIFY THESE LINES ##### + # Initialize the buy/sell_param_final dictionaries with results from the 1st HyperOpt Run buy_param_final = buy_params sell_param_final = sell_params - # #################################################################### - # #################################################################### - # ### COPY/PASTE hyperopt result of 2nd (or more) iteration below ##### - # ################################################################################################################## + #################################################################################################################### + # START OF 2ND (OR MORE) RUN HYPEROPT RESULTS COPY-PASTE SECTION # + #################################################################################################################### - # ################################# END OF HYPEROPT RESULTS COPY-PASTE SECTION ################################# - # ################################################################################################################## + #################################################################################################################### + # END OF 2ND (OR MORE) RUN HYPEROPT RESULTS COPY-PASTE SECTION # + #################################################################################################################### - # ################################################################################################################## - # ### DO NOT REMOVE / MODIFY THESE LINES --- CONCATENATION OF 1st AND 2nd result ##### + # Update buy/sell_param_final dictionaries with 2nd HyperOpt Run Results buy_param_final.update(buy_params) sell_param_final.update(sell_params) - buy_params = buy_param_final sell_params = sell_param_final - #################################################################################################################### #################################################################################################################### - # START OF OVERRIDES SECTION # + # START OF HYPEROPT PARAMETERS CONFIGURATION SECTION # #################################################################################################################### - # ################ 1st run --- initial overrides ################### - # ---------------------------------------------------------------- # - # Buy HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - # React to Buy Signals when certain trends are detected (False would disable trading in said trend) - buy___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - buy___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - - # ---------------------------------------------------------------- # - # Sell HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - # React to Sell Signals when certain trends are detected (False would disable trading in said trend) - sell___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - sell___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - - # ---------------------------------------------------------------- # - # Sell Unclogger HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - sell___unclogger_enabled = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_downwards_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_sideways_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_upwards_candles = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - - # ################# 2nd run --- addtional overrides ################# - # - # !!!!!!!!!! Before going further make sure have set "optimize=False" for the parameters of section 1 !!!!!!!!! - # - # HyperOpt Settings Override # -------------------------- # When the Parameters in below HyperOpt Space Parameters sections are altered as following examples then they can be @@ -183,72 +163,84 @@ class MoniGoManiConfiguration(MGMStrategy): # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then # total_buy_signal_needed) + # React to Buy Signals when certain trends are detected (False would disable trading in said trend) + buy___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + buy___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) + buy___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + # Downwards Trend Buy # ------------------- # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), - search_threshold, precision) + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed", min_trend_total_signal_needed_value, + int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__downwards_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__downwards_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - param = \ - init_vars(buy_params, "buy_downwards_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_downwards_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_adx_strong_up_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_ema_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_ema_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_sma_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_sma_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_downwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_downwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -257,67 +249,72 @@ class MoniGoManiConfiguration(MGMStrategy): # ------------------ # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), - search_threshold, precision) + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__sideways_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__sideways_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - param = init_vars(buy_params, "buy_sideways_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_sideways_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_adx_strong_up_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_ema_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_ema_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_sma_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_sma_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_sideways_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_sideways_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -326,67 +323,72 @@ class MoniGoManiConfiguration(MGMStrategy): # ----------------- # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), - search_threshold, precision) + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__upwards_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__upwards_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table - param = init_vars(buy_params, "buy_upwards_trend_adx_strong_up_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_upwards_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_adx_strong_up_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_ema_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_ema_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_sma_long_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_sma_short_golden_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(buy_params, "buy_upwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(buy_params, "buy_upwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -403,71 +405,84 @@ class MoniGoManiConfiguration(MGMStrategy): # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then # total_buy_signal_needed) + # React to Sell Signals when certain trends are detected (False would disable trading in said trend) + sell___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + sell___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + # Downwards Trend Sell # -------------------- # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed", 30, - int(100 * number_of_weighted_signals), search_threshold, precision) + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__downwards_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__downwards_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_downwards_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_downwards_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_adx_strong_down_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_ema_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_ema_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_sma_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_sma_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_downwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_downwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -476,67 +491,72 @@ class MoniGoManiConfiguration(MGMStrategy): # ------------------- # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed", 30, - int(100 * number_of_weighted_signals), search_threshold, precision) + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__sideways_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__sideways_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_sideways_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_sideways_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_adx_strong_down_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_ema_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_ema_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_sma_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_sma_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_sideways_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_sideways_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -545,67 +565,72 @@ class MoniGoManiConfiguration(MGMStrategy): # ------------------ # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed", 30, int(100 * number_of_weighted_signals), - search_threshold, precision) + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__upwards_trend_total_signal_needed = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", 1, - max_trend_lookback_value, search_threshold, precision) + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__upwards_trend_total_signal_needed_candles_lookback_window = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_upwards_trend_adx_strong_down_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_upwards_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_adx_strong_down_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_bollinger_bands_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_bollinger_bands_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_ema_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_ema_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_macd_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_macd_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_rsi_weight", 0, max_weight_value, search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_rsi_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_sma_long_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", 0, max_weight_value, - search_threshold, precision) + param = init_vars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_sma_short_death_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - param = init_vars(sell_params, "sell_upwards_trend_vwap_cross_weight", 0, max_weight_value, search_threshold, - precision) + param = init_vars(sell_params, "sell_upwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_vwap_cross_weight = \ IntParameter(param["min_value"], param["max_value"], default=param["default_value"], space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) @@ -613,22 +638,47 @@ class MoniGoManiConfiguration(MGMStrategy): # ---------------------------------------------------------------- # # Sell Unclogger HyperOpt Space Parameters # # ---------------------------------------------------------------- # + + sell___unclogger_enabled = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + + param = init_vars(sell_params, "sell___unclogger_minimal_losing_trade_duration_minutes", + 15, 60, search_threshold_weighted_signal_values, precision, False) sell___unclogger_minimal_losing_trade_duration_minutes = \ - IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell___unclogger_minimal_losing_trades_open", + 1, 5, 1, precision, False) sell___unclogger_minimal_losing_trades_open = \ - IntParameter(int(1 * precision), int(5 * precision), default=int(1 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell___unclogger_open_trades_losing_percentage_needed", + 1, 60, search_threshold_weighted_signal_values, precision, False) sell___unclogger_open_trades_losing_percentage_needed = \ - IntParameter(int(1 * precision), int(60 * precision), default=int(1 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window", + 10, 60, search_threshold_weighted_signal_values, precision, False) sell___unclogger_trend_lookback_candles_window = \ - IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window_percentage_needed", + 10, 40, search_threshold_weighted_signal_values, precision, False) sell___unclogger_trend_lookback_candles_window_percentage_needed = \ - IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + sell___unclogger_trend_lookback_window_uses_downwards_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_sideways_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_upwards_candles = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) #################################################################################################################### - # END OF OVERRIDES SECTION # + # END OF HYPEROPT PARAMETERS CONFIGURATION SECTION # #################################################################################################################### diff --git a/user_data/strategies/MoniGoManiHyperStrategy.py b/user_data/strategies/MoniGoManiHyperStrategy.py index 0de3b418e..55dfa7ed0 100644 --- a/user_data/strategies/MoniGoManiHyperStrategy.py +++ b/user_data/strategies/MoniGoManiHyperStrategy.py @@ -24,12 +24,11 @@ # Then change back to ta. so IDE won't nag about accessing a protected member of TA-Lib # ---------------------------------------------------------------------------------------------------- -# ToDo: Fix 'precision', child strat will apply precision to all values, unclogger doesn't yet class MoniGoManiHyperStrategy(IStrategy): """ #################################################################################### #### #### - ### MoniGoMani v0.10.0 by Rikj000 ### + ### MoniGoMani v0.11.0 by Rikj000 ### ## ----------------------------- ## # Isn't that what we all want? Our money to go many? # # Well that's what this Freqtrade strategy hopes to do for you! # @@ -112,7 +111,7 @@ class MoniGoManiHyperStrategy(IStrategy): "buy_upwards_trend_sma_short_golden_cross_weight": 97, "buy_upwards_trend_vwap_cross_weight": 53 } - + # Sell hyperspace params: sell_params = { "sell___trades_when_downwards": True, # value loaded from strategy @@ -161,7 +160,7 @@ class MoniGoManiHyperStrategy(IStrategy): "sell_upwards_trend_sma_short_death_cross_weight": 99, "sell_upwards_trend_vwap_cross_weight": 37 } - + # ROI table: minimal_roi = { "0": 0.17, @@ -429,16 +428,16 @@ class MoniGoManiHyperStrategy(IStrategy): "1310": 0.0001, "1315": 0 } - + # Stoploss: stoploss = -0.111 - + # Trailing stop: trailing_stop = True trailing_stop_positive = 0.01 trailing_stop_positive_offset = 0.013 trailing_only_offset_is_reached = True - + #################################################################################################################### # END OF HYPEROPT RESULTS COPY-PASTE SECTION # #################################################################################################################### @@ -475,22 +474,17 @@ class MoniGoManiHyperStrategy(IStrategy): # To disable TimeFrame-Zoom just use the same candles for 'timeframe' & 'backtest_timeframe' timeframe = '1h' # Optimal TimeFrame for MoniGoMani (used during Dry/Live-Runs) - backtest_timeframe = '1h' # Optimal TimeFrame-Zoom for MoniGoMani (used to zoom in during Backtesting/HyperOpting) - informative_timeframe = timeframe - - # Run "populate_indicators()" only for new candle - process_only_new_candles = False + backtest_timeframe = '5m' # Optimal TimeFrame-Zoom for MoniGoMani (used to zoom in during Backtesting/HyperOpting) - # These values can be overridden in the "ask_strategy" section in the config - use_sell_signal = True - sell_profit_only = True - ignore_roi_if_buy_signal = True + informative_timeframe = timeframe # Gets set automatically + timeframe = backtest_timeframe + timeframe_multiplier = None # Gets set automatically # Number of candles the strategy requires before producing valid signals. # In live and dry runs this ratio will be 1, so nothing changes there. # But we need `startup_candle_count` to be for the timeframe of # `informative_timeframe` (1h) not `timeframe` (5m) for backtesting. - startup_candle_count: int = 400 * int(timeframe_to_minutes(informative_timeframe) / timeframe_to_minutes(timeframe)) + startup_candle_count = 400 # SMA200 needs 200 candles before producing valid signals # EMA200 needs an extra 200 candles of SMA200 before producing valid signals @@ -512,20 +506,6 @@ class MoniGoManiHyperStrategy(IStrategy): # MGM generates a custom really long table so it will have less gaps in it and be more continuous in it's decrease roi_table_step_size = 5 - # Optional order type mapping. - order_types = { - 'buy': 'limit', - 'sell': 'limit', - 'stoploss': 'market', - 'stoploss_on_exchange': False - } - - # Optional order time in force. - order_time_in_force = { - 'buy': 'gtc', - 'sell': 'gtc' - } - # Plot configuration to show all signals used in MoniGoMani in FreqUI (Use load from Strategy in FreqUI) plot_config = { 'main_plot': { @@ -599,30 +579,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Buy Signal Weight needed for Downwards Trends, calculated over a small lookback window, # to check if an actual buy should occur buy__downwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='buy', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='buy', optimize=True, load=True) buy__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='buy', optimize=True, load=True) + IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), + space='buy', optimize=True, load=True) # Buy Signal Weight Influence Table buy_downwards_trend_adx_strong_up_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_ema_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_ema_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_sma_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_sma_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_downwards_trend_vwap_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) # Sideways Trend Buy # ------------------ @@ -630,30 +620,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Buy Signal Weight needed for Sideways Trends, calculated over a small lookback window, # to check if an actual buy should occur buy__sideways_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='buy', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='buy', optimize=True, load=True) buy__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='buy', optimize=True, load=True) + IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), + space='buy', optimize=True, load=True) # Buy Signal Weight Influence Table buy_sideways_trend_adx_strong_up_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_ema_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_ema_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_sma_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_sma_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_sideways_trend_vwap_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) # Upwards Trend Buy # ----------------- @@ -661,30 +661,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Buy Signal Weight needed for Upwards Trends, calculated over a small lookback window, # to check if an actual buy should occur buy__upwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='buy', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='buy', optimize=True, load=True) buy__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='buy', optimize=True, load=True) + IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), + space='buy', optimize=True, load=True) # Buy Signal Weight Influence Table buy_upwards_trend_adx_strong_up_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_ema_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_ema_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_sma_long_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_sma_short_golden_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) buy_upwards_trend_vwap_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='buy', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='buy', optimize=True, load=True) # ---------------------------------------------------------------- # # Sell HyperOpt Space Parameters # @@ -712,30 +722,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Sell Signal Weight needed for Downwards Trends, calculated over a small lookback window, # to check if an actual sell should occur sell__downwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='sell', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='sell', optimize=True, load=True) sell__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='sell', optimize=True, load=True) + IntParameter(int(1 * precision), int(6 * precision), default=(1 * precision), + space='sell', optimize=True, load=True) # Sell Signal Weight Influence Table sell_downwards_trend_adx_strong_down_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_ema_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_ema_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_sma_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_sma_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_downwards_trend_vwap_cross_weight = \ - IntParameter(5, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(5 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) # Sideways Trend Sell # ------------------- @@ -743,30 +763,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Sell Signal Weight needed for Sideways Trends, calculated over a small lookback window, # to check if an actual sell should occur sell__sideways_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='sell', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='sell', optimize=True, load=True) sell__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='sell', optimize=True, load=True) + IntParameter(int(1 * precision), (6 * precision), default=(1 * precision), + space='sell', optimize=True, load=True) # Sell Signal Weight Influence Table sell_sideways_trend_adx_strong_down_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_ema_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_ema_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_sma_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_sma_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_sideways_trend_vwap_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) # Upwards Trend Sell # ------------------ @@ -774,30 +804,40 @@ class MoniGoManiHyperStrategy(IStrategy): # Total Sell Signal Weight needed for Sideways Trends, calculated over a small lookback window, # to check if an actual sell should occur sell__upwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), - default=int(30 * precision), space='sell', optimize=True, load=True) + IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), + space='sell', optimize=True, load=True) sell__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='sell', optimize=True, load=True) + IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), + space='sell', optimize=True, load=True) # Sell Signal Weight Influence Table sell_upwards_trend_adx_strong_down_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_bollinger_bands_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_ema_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_ema_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_rsi_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_sma_long_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_sma_short_death_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) sell_upwards_trend_vwap_cross_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) + IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), + space='sell', optimize=True, load=True) # ---------------------------------------------------------------- # # Sell Unclogger HyperOpt Space Parameters # @@ -806,15 +846,20 @@ class MoniGoManiHyperStrategy(IStrategy): sell___unclogger_enabled = \ CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) sell___unclogger_minimal_losing_trade_duration_minutes = \ - IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), space='sell', optimize=True, load=True) + IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), + space='sell', optimize=True, load=True) sell___unclogger_minimal_losing_trades_open = \ - IntParameter(1, 5, default=1, space='sell', optimize=True, load=True) + IntParameter(int(1 * precision), int(5 * precision), default=int(1 * precision), + space='sell', optimize=True, load=True) sell___unclogger_open_trades_losing_percentage_needed = \ - IntParameter(1, int(60 * precision), default=1, space='sell', optimize=True, load=True) + IntParameter(int(1 * precision), int(60 * precision), default=int(1 * precision), + space='sell', optimize=True, load=True) sell___unclogger_trend_lookback_candles_window = \ - IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) + IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), + space='sell', optimize=True, load=True) sell___unclogger_trend_lookback_candles_window_percentage_needed = \ - IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) + IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), + space='sell', optimize=True, load=True) sell___unclogger_trend_lookback_window_uses_downwards_candles = \ CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) sell___unclogger_trend_lookback_window_uses_sideways_candles = \ @@ -860,6 +905,16 @@ def __init__(self, config: dict): self.is_dry_live_run_detected = False self.mgm_logger('info', initialization, f'Current run mode detected as: HyperOpting/BackTesting. ' f'Auto updated is_dry_live_run_detected to: False') + + self.mgm_logger('info', initialization, f'Calculating and storing "timeframe_multiplier" + Updating ' + f'"startup_candle_count"') + self.timeframe_multiplier = \ + int(timeframe_to_minutes(self.informative_timeframe) / timeframe_to_minutes(self.timeframe)) + if self.timeframe_multiplier < 1: + raise SystemExit(f'MoniGoManiHyperStrategy - ERROR - TimeFrame-Zoom - "timeframe" must be bigger than ' + f'"backtest_timeframe"') + self.startup_candle_count *= self.timeframe_multiplier + else: self.is_dry_live_run_detected = True self.mgm_logger('info', initialization, f'Current run mode detected as: Dry/Live-Run. ' @@ -1229,23 +1284,46 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Check if buy signal should be sent depending on the current trend, using a lookback window to take signals # that fired during previous candles into consideration - dataframe.loc[ - ( - (dataframe['trend'] == 'downwards') & - (dataframe['total_buy_signal_strength'] - .rolling(self.buy__downwards_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.buy__downwards_trend_total_signal_needed.value / self.precision) - ) | ( - (dataframe['trend'] == 'sideways') & - (dataframe['total_buy_signal_strength'] - .rolling(self.buy__sideways_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.buy__sideways_trend_total_signal_needed.value / self.precision) - ) | ( - (dataframe['trend'] == 'upwards') & - (dataframe['total_buy_signal_strength'] - .rolling(self.buy__upwards_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.buy__upwards_trend_total_signal_needed.value / self.precision) - ), 'buy'] = 1 + if (self.is_dry_live_run_detected is False) and (self.informative_timeframe != self.backtest_timeframe): + # If TimeFrame-Zooming => Only use 'informative_timeframe' data + dataframe.loc[ + ( + (dataframe['trend'] == 'downwards') & + ((dataframe['total_buy_signal_strength'] + .rolling(self.buy__downwards_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.buy__downwards_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'sideways') & + ((dataframe['total_buy_signal_strength'] + .rolling(self.buy__sideways_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.buy__sideways_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'upwards') & + ((dataframe['total_buy_signal_strength'] + .rolling(self.buy__upwards_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.buy__upwards_trend_total_signal_needed.value / self.precision) + ), 'buy'] = 1 + else: + dataframe.loc[ + ( + (dataframe['trend'] == 'downwards') & + (dataframe['total_buy_signal_strength'] + .rolling(self.buy__downwards_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.buy__downwards_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'sideways') & + (dataframe['total_buy_signal_strength'] + .rolling(self.buy__sideways_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.buy__sideways_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'upwards') & + (dataframe['total_buy_signal_strength'] + .rolling(self.buy__upwards_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.buy__upwards_trend_total_signal_needed.value / self.precision) + ), 'buy'] = 1 # Override Buy Signal: When configured buy signals can be completely turned off for each kind of trend if not self.buy___trades_when_downwards.value / self.precision: @@ -1468,23 +1546,46 @@ def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame # Check if buy signal should be sent depending on the current trend, using a lookback window to take signals # that fired during previous candles into consideration - dataframe.loc[ - ( - (dataframe['trend'] == 'downwards') & - (dataframe['total_sell_signal_strength'] - .rolling(self.sell__downwards_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.sell__downwards_trend_total_signal_needed.value / self.precision) - ) | ( - (dataframe['trend'] == 'sideways') & - (dataframe['total_sell_signal_strength'] - .rolling(self.sell__sideways_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.sell__sideways_trend_total_signal_needed.value / self.precision) - ) | ( - (dataframe['trend'] == 'upwards') & - (dataframe['total_sell_signal_strength'] - .rolling(self.sell__upwards_trend_total_signal_needed_candles_lookback_window.value).sum() - >= self.sell__upwards_trend_total_signal_needed.value / self.precision) - ), 'sell'] = 1 + if (self.is_dry_live_run_detected is False) and (self.informative_timeframe != self.backtest_timeframe): + # If TimeFrame-Zooming => Only use 'informative_timeframe' data + dataframe.loc[ + ( + (dataframe['trend'] == 'downwards') & + ((dataframe['total_sell_signal_strength'] + .rolling(self.sell__downwards_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.sell__downwards_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'sideways') & + ((dataframe['total_sell_signal_strength'] + .rolling(self.sell__sideways_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.sell__sideways_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'upwards') & + ((dataframe['total_sell_signal_strength'] + .rolling(self.sell__upwards_trend_total_signal_needed_candles_lookback_window.value * + self.timeframe_multiplier).sum() / self.timeframe_multiplier) + >= self.sell__upwards_trend_total_signal_needed.value / self.precision) + ), 'sell'] = 1 + else: + dataframe.loc[ + ( + (dataframe['trend'] == 'downwards') & + (dataframe['total_sell_signal_strength'] + .rolling(self.sell__downwards_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.sell__downwards_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'sideways') & + (dataframe['total_sell_signal_strength'] + .rolling(self.sell__sideways_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.sell__sideways_trend_total_signal_needed.value / self.precision) + ) | ( + (dataframe['trend'] == 'upwards') & + (dataframe['total_sell_signal_strength'] + .rolling(self.sell__upwards_trend_total_signal_needed_candles_lookback_window.value).sum() + >= self.sell__upwards_trend_total_signal_needed.value / self.precision) + ), 'sell'] = 1 # Override Sell Signal: When configured sell signals can be completely turned off for each kind of trend if not self.sell___trades_when_downwards.value / self.precision: @@ -1672,7 +1773,7 @@ def custom_sell(self, pair: str, trade: 'Trade', current_time: 'datetime', curre f'Fetched losing_open_trades ({str(len(losing_open_trades))}) from custom ' f'information storage!') - if len(losing_open_trades) < self.sell___unclogger_minimal_losing_trades_open.value: + if len(losing_open_trades) < (self.sell___unclogger_minimal_losing_trades_open.value / self.precision): self.mgm_logger('debug', open_trade_unclogger, f'No unclogging needed! Not enough losing trades currently open!') else: From 184f2c581c2e6d2707976d8b70170f33fe399a10 Mon Sep 17 00:00:00 2001 From: Rikj000 Date: Sat, 29 May 2021 01:45:04 +0200 Subject: [PATCH 6/6] Renamed config files, Moved settings to config files and added load from config, Added Dockerfile.MoniGoMani, Rewrote Documentation, Added Some Test Results, Deleted unneeded files --- MGM_DOCUMENTATION.md | 424 +++--- README.md | 62 +- ...onfig_freqtrade_develop-bd44deea_nr162.log | 214 +++ ...onfig_freqtrade_develop-bd44deea_nr219.log | 228 +++ ...onfig_freqtrade_develop-bd44deea_nr229.log | 217 +++ ...onfig_freqtrade_develop-bd44deea_nr437.log | 236 +++ ...config_freqtrade_develop-bd44deea_nr97.log | 222 +++ ...from_config_freqtrade_develop-bd44deea.log | 284 ++++ ...from_config_freqtrade_develop-bd44deea.log | 280 ++++ VERYQUICKSTART.md | 335 ----- VERYQUICKSTART_FREQTRADE.md | 35 +- docker-compose.yml | 12 +- docker/Dockerfile.MoniGoMani | 9 + docker/Dockerfile.develop | 10 - docker/Dockerfile.jupyter | 7 - docker/Dockerfile.plot | 7 - docker/Dockerfile.technical | 6 - docker/docker-compose-jupyter.yml | 16 - user_data/mgm-config-btc.json | 143 -- .../{mgm-config-usdt.json => mgm-config.json} | 23 + ...al-Overall-Signal-Importance-Calculator.py | 4 +- .../strategies/MoniGoManiConfiguration.py | 684 --------- .../strategies/MoniGoManiHyperStrategy.py | 1274 ++++++++--------- 23 files changed, 2553 insertions(+), 2179 deletions(-) create mode 100644 Some Test Results/v0.11.0/BackTestResults7_Pt1-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr162.log create mode 100644 Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr219.log create mode 100644 Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr229.log create mode 100644 Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr437.log create mode 100644 Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr97.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults7_Pt1-24-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log create mode 100644 Some Test Results/v0.11.0/HyperOptResults7_Pt2-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log delete mode 100644 VERYQUICKSTART.md create mode 100644 docker/Dockerfile.MoniGoMani delete mode 100644 docker/Dockerfile.develop delete mode 100644 docker/Dockerfile.jupyter delete mode 100644 docker/Dockerfile.plot delete mode 100644 docker/Dockerfile.technical delete mode 100644 docker/docker-compose-jupyter.yml delete mode 100644 user_data/mgm-config-btc.json rename user_data/{mgm-config-usdt.json => mgm-config.json} (79%) delete mode 100644 user_data/strategies/MoniGoManiConfiguration.py diff --git a/MGM_DOCUMENTATION.md b/MGM_DOCUMENTATION.md index 4c3b48b90..7605ec3b0 100644 --- a/MGM_DOCUMENTATION.md +++ b/MGM_DOCUMENTATION.md @@ -19,52 +19,143 @@

-**WARNING: I am in no way responsible for your live results! This strategy is still experimental and under development!** +**WARNING: I am in no way responsible for your Live results! This strategy is still experimental and under development!** **WARNING: MoniGoMani should always be [re-optimized](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) unless you really know what you are doing when manually allocating parameters!** **I strongly recommended to [re-optimize](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) your own copy of MoniGoMani while thinking logically, don't follow your computer blindly!** # Freqtrade Installation: -This guide now assumes you have Freqtrade already installed, if you haven't yet, then please see [VERYQUICKSTART_FREQTRADE.md](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART_FREQTRADE.md) +This guide now assumes you have **Freqtrade** and **jq** already installed, if you haven't yet, then please see [VERYQUICKSTART_FREQTRADE.md](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART_FREQTRADE.md) # How to Optimize MoniGoMani: -*(These are just my ideas/theories, if you have other ideas, please test them & report your results to [#moni-go-mani-testing](https://discord.gg/xFZ9bB6vEz) so we can learn and improve this flow! Also yes the current process is lengthy, but we hope to automate this where possible in further versions)* -**WARNING: It's strongly advised to not do any manual alterations to an already optimized MGM setup, the recommended way to do manual alterations is through setting up [overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides) + [narrowed down search spaces](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-narrowing-down-search-spaces), and finally firing up a new HyperOpt to apply those!** +*(These are just my ideas/theories, if you have other ideas, please test them & report your results to [#moni-go-mani-testing](https://discord.gg/xFZ9bB6vEz) so we can learn and improve this flow!)* +**WARNING: It's strongly advised to not do any manual alterations to an already optimized MGM setup! The recommended way to do manual alterations is by [Configuring MoniGoMani](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-configure-monigomani), and then following this optimization process to apply them!** -0) When you change anything in your `config.json`, `config-private.json` (besides personal info etc) or in `MoniGoManiHyperStrategy` itself you should always re-hyperopt to find the new ideal weights for your setup. This should also be done when the market changes in it's long term direction! -1) Download a good Top Volume StaticPairList and update this in your `config-private.json`. Instructions for how to do this are under [PairLists](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#pairlists). -2) Do some Technical Analysis on how your stake currency has been behaving in the last months/weeks & pick a logical timeframe to do your hyperopt upon (The timeframe in the go-to commands for example resembles some bullish rise/correction cycles & I believe 2021 will be a bullish year thus I think it's a good timeframe to test upon). -3) Set up the [Current Default MoniGoMani Overrides + Refined Search Spaces](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#current-default-monigomani-overrides--refined-search-spaces) manually with some logical thinking. We do this to disable HyperOpting for some settings inside MGM that don't always get placed logically by HyperOpt. This helps refine the search space during HyperOpting, pushing it more towards where we want it to look. Instructions for how to do this are under [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides) -4) HyperOpt MoniGoManiHyperStrategy for a 1st run with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) (Free to alter the command if you have a good idea that you want to test) -5) Pick the `epoch` you deem best. The last one is not always the best one & be wary of profit exploitation on the last epochs! You can use `freqtrade hyperopt-show -n ` to print out HyperOpt results found for a certain epoch. -6) Apply the HyperOpt results from your 1st run into the HyperOpt Results Copy/Paste Section of `MoniGoManiHyperStrategy.py` -7) Override/Disable HyperOpting for following (Instructions for how to do this are under [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides)): - - All the `buy/sell__downwards/sideways/upwards_trend_total_signal_needed_candles_lookback_window` settings (Since want to push the 2nd run back into the direction of the 1st run) - - The `buy/sell_downwards/sideways/upwards_trend_signal_weight` settings that scored lower then `10%` in the 1st HyperOpt run and override them manually to `0%` (Indication of weak signal / signal not working well during these trends with your current weight allocation setup. - Also `10%` was just an idea, feel free to change this) - - The `buy/sell_downwards/sideways/upwards_trend_signal_weight` settings that scored higher then `90%` in the 1st HyperOpt run and override them manually to `100%` (Indication of strong signal / signal good enough in that trend to act on its own as a full buy/sell signal. - Also `90%` was just an idea, feel free to change this) -8) Refine the Search Spaces for following (Instructions for how to do this are under [HyperOpt Narrowing Down Search Spaces](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-narrowing-down-search-spaces). We do this to push the next HyperOpt run back in the direction that we already had going during the 1st HyperOpt run): - - All the `buy/sell_downwards/sideways/upwards_trend_signal_weight` settings that still remain in the HyperOpt space (aka normal, not overridden). Change the search space for each `weighted signal` remaining, from the usual **(0 - 100)** and set it to **±10** the value found for said `weighted signal` during the 1st HyperOpt run. - Example: If for `sell_sideways_trend_bollinger_bands_weight` a weight of `33` was found during the 1st HyperOpt run, then the refined search space would become as following: - `sell_sideways_trend_bollinger_bands_weight = IntParameter(int(23 * precision), int(43 * precision), default=0, space='sell', optimize=True, load=True)` - - All the `buy/sell_downwards/sideways/upwards_trend_total_signal_needed` settings. Change the search space for each `total needed signal`, from the usual **(30 - (100 * `number_of_weighted_signals`))** and set it to **±(10 * `number_of_weighted_signals`)** the value found for said `total needed signal` during the 1st HyperOpt run. - Example: If for `sell__upwards_trend_total_signal_needed` a weight of `311` was found during the 1st HyperOpt run and if `number_of_weighted_signals = 9`, then the refined search space would become as following (10 * 9 = ±90): - `sell__upwards_trend_total_signal_needed = IntParameter(int(221 * precision), int(401 * precision), default=30, space='sell', optimize=True, load=True)` - - Feel free to further refine/override the Open Trade Unclogger's spaces too, but refine using values that you deem to make sense -9) HyperOpt MoniGoManiHyperStrategy for a 2nd run with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands). This is needed since we have been altering the "perfectly" calculated setup, thus we have to re-balance the weights in use now. This should not cause overfitting since it's a complete fresh hyperopt run. -10) Pick the `epoch` you deem best. The last one is not always the best one & be wary of profit exploitation on the last epochs! You can use `freqtrade hyperopt-show -n ` to print out HyperOpt results found for a certain epoch. -11) Copy/Paste your results into the `Total-Overall-Signal-Importance-Calculator.py` & run it's [Go-To Command](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) to recieve a nice weighted signal report for sharing in the [Discord server](https://discord.gg/xFZ9bB6vEz) and to pull conclusions from. -12) Paste the full HyperOpt Results in the Copy/Paste Section of `MoniGoManiHyperStrategy.py` -13) Set the Override settings and Search spaces to their default values again to prevent confusion during your next HyperOpt run & you should have a nicely optimised version now! :smile: - - -# HyperOpt Setting Overrides: -When the Parameters in the HyperOpt Space Parameters sections are altered as following examples then they can be used as overrides while hyperopting / backtesting / dry/live-running -(only truly useful when hyperopting though!) Meaning you can use this to set individual buy_params/sell_params to a fixed value when hyperopting! + +0) Delete the previous `mgm-config-hyperopt.json` if it exists using: + ```powershell + rm ./user_data/mgm-config-hyperopt.json + ``` +1) Setup your `MoniGoMani` by following [How to Configure MoniGoMani](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-configure-monigomani) +2) Download a good Top Volume StaticPairList and update this in your `mgm-config.json`. Instructions for how to do this are under [PairLists](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#pairlists). +3) Do some Technical Analysis on how the global crypto market has been behaving in the last months/weeks & pick a logical timeframe to do your HyperOpt upon (The timeframe in the go-to commands for example resembles some bullish rise/correction cycles & I believe 2021 will be a bullish year thus I think it's a good timeframe to test upon). +4) HyperOpt for a **1st HyperOpt Run** with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) (Free to alter the command if you have a good idea that you want to test) + The 1st HyperOpt Run *(When no `mgm-config-hyperopt.json` exists)* is automatically ran with: + - The Default open search spaces ranging between the default `min_` & `max_` values provided under the `monigomani_settings` section of `mgm-config.json` + - The [HYPEROPT PARAMETERS CONFIGURATION SECTION](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#HYPEROPT-PARAMETER-CONFIGURATION-SECTION) +5) **Reflect over your HyperOpt results!** The computer just tries to get certain values high (profits) and others low (losses), without a true understanding of their meaning. Because of this HyperOpt is prone to profit exploitation which would be no good when used Live. That's why you need to make yourself familiar with possible [BackTesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/BackTesting-traps/). Only then you can tell which results would make sense and would be any good when used Live. + You can check a certain epoch in the list of best results using: + ```powershell + freqtrade hyperopt-show -n + ``` +6) Once you picked an `` of which you feel confident, then apply the HyperOpt results by extracting them into a new `mgm-config-hyperopt.json` using: + ```powershell + freqtrade hyperopt-show -n -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --no-header --print-json | tail -n 1 | jq '.' > ./user_data/mgm-config-hyperopt.json + ``` +7) Repeat Steps 4, 5 and 6 at least for a **2nd HyperOpt Run** with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) (Free to alter the command if you have a good idea that you want to test) + The 2nd HyperOpt Run *(When a `mgm-config-hyperopt.json` exists)* is automatically ran with: + - Refined search spaces ranging between the values found during the 1st Run (Loaded from `mgm-config-hyperopt.json`) plus their `search_threshold_` and minus their `search_threshold_` values provided under the `monigomani_settings` section of `mgm-config.json` (This is done to push the next HyperOpt run back in the direction that we already had going during the 1st HyperOpt run) + - Weak weighted signals weeded out by overriding them to their respective `min_` value (Signals of which the found value is below their default `min_` + `search_threshold_` values provided under the `monigomani_settings` section of `mgm-config.json`) + - Strong weighted signals are boosted by overriding them to their respective `max_` value (Signals of which the found value is above their default `max_` - `search_threshold_` values provided under the `monigomani_settings` section of `mgm-config.json`) + - The [HYPEROPT PARAMETERS CONFIGURATION SECTION](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#HYPEROPT-PARAMETERS-CONFIGURATION-SECTION) +8) Load your results into the `Total-Overall-Signal-Importance-Calculator.py` and run it's [Go-To Command](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) to receive a nice weighted signal report for sharing in the [Discord server](https://discord.gg/xFZ9bB6vEz) and to pull conclusions from. + + +# How to Configure MoniGoMani: +In total 4 files are used in the configuration of MoniGoMani: +- [`mgm-config.json`](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#mgm-config.json): This is the **main** configuration file, containing: + - The main `MoniGoMani` settings + - The main `Freqtrade` settings (See [The Official Freqtrade Configuration Documentation](https://www.freqtrade.io/en/latest/configuration/) to learn how to configure these) +- [`mgm-config-private.json`](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm-config-private.json): This split configuration file contains some `Freqtrade` settings containing critical private information, **never** share this file! +- `mgm-config-hyperopt.json`: This file contains the optimized HyperOptable `MoniGoMani` and `Freqtrade` settings. It will be created when following the [How to Optimize MoniGoMani](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) process +- [`MoniGoManiHyperStrategy.py`](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#MoniGoManiHyperStrategy.py): The **main** strategy file also has 2 marked sections with some settings that can be configured: + - `CONFIG NAMES SECTION` + - `HYPEROPT PARAMETERS CONFIGURATION SECTION` + +## mgm-config.json +**Link to:** [mgm-config.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm-config.json) +The main `MoniGoMani` settings can be found under `monigomani_settings`: +| Parameter(s) | Description | +| --- | --- | +| **timeframe**
**backtest_timeframe** | These values configure the `timeframe`s used in MoniGoMani.
**Documentation:** [TimeFrame-Zoom](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#timeframe-zoom)
**Datatypes:** Integer | +| **startup_candle_count** | Number of candles the strategy requires before producing valid signals during BackTesting/HyperOpting.
By default this is set to `400` since MoniGoMani uses a 200EMA, which needs 400 candles worth of data to be calculated.
**Datatype:** Integer | +| **precision** | This value can be used to control the precision of HyperOpting. Default is `1`.
**Documentation:** [Precision Setting](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#precision-setting)
**Datatype:** Integer | +| **min_weighted_signal_value** | **1st HyperOpt Run:** Minimal value used in the HyperOpt Space for weighted signals.
**2nd HyperOpt Run:** Weak weighted signals are weeded out by overriding them to their respective Minimal value.
**Datatype:** Integer | +| **max_weighted_signal_value** | **1st HyperOpt Run:** Maximum value used in the HyperOpt Space for weighted signals.
**2nd HyperOpt Run:** Strong weighted signals are boosted by overriding them to their respective Maximum value.
**Datatype:** Integer | +| **min_trend_total_signal_needed_value** | **1st HyperOpt Run:** Minimal value used in the HyperOpt Space for total weighted signals needed.
**Datatype:** Integer | +| **min_trend_total_signal_needed_candles_lookback_window_value** | **1st HyperOpt Run:** Minimal value used in the HyperOpt Space for the candle lookback window for total signals needed.
**Datatype:** Integer | +| **max_trend_total_signal_needed_candles_lookback_window_value** | **1st HyperOpt Run:** Minimal value used in the HyperOpt Space for the candle lookback window for total signals needed.
**Datatype:** Integer | +| **search_threshold_weighted_signal_values** | **2nd HyperOpt Run:** Used to refine the search spaces for remaining weighted signals with the value found in the 1st run +- the threshold.
**Datatype:** Integer | +| **search_threshold_trend_total_signal_needed_candles_lookback_window_value** | **2nd HyperOpt Run:** Used to refine the search spaces for the candle lookback window for total signals needed with the values found in the 1st run +- the threshold.
**Datatype:** Integer | +| **number_of_weighted_signals** | Set the `number_of_weighted_signals` setting to the total number of different weighted signals in use in the weighted tables.
`buy/sell__downwards/sideways/upwards_trend_total_signal_needed` settings will be multiplied with this value, so their search spaces will be larger, resulting in more equally divided total weighted signal scores when HyperOpting.
**Datatype:** Integer | +| **roi_table_step_size** | MoniGoMani generates a really long custom ROI-Table (Return of Interest), so it will have fewer gaps in it and be more continuous in it's decrease.
This setting alters the size of the steps (in minutes) to be used when calculating the long continuous ROI-Table.
**Datatype:** Integer | +| **debuggable_weighted_signal_dataframe** | If set to `True` all Weighted Signal results will be added to the dataframe for easy debugging with BreakPoints.
**WARNING: Disable this for anything else then debugging in an IDE! (Integrated Development Environment)**
**Datatype:** Boolean | +| **use_mgm_logging** | If set to `True` MoniGoMani logging will be displayed to the console and be integrated in Freqtrades native logging, further logging configuration can be done by setting individual `mgm_log_levels_enabled`.
It's recommended to set this to `False` for HyperOpting/BackTesting unless you are testing with breakpoints.
**Datatype:** Boolean | +| **mgm_log_levels_enabled** | It allows turning on/off individual `info`, `warning`, `error` and `debug` logging
For Live Runs it's recommended to disable at least `info` and `debug` logging, to keep MGM as lightweight as possible!
`debug` is very verbose! Always set it to `False` when BackTesting/HyperOpting!
**Datatype:** Boolean | + +### TimeFrame-Zoom: +To prevent profit exploitation during BackTesting/HyperOpting we BackTest/HyperOpt MoniGoMani using TimeFrame-Zoom. +When normally a `timeframe` (1h candles) would be used, you can zoom in using a smaller `backtest_timeframe` +(5m candles) instead. This happens while still using an `informative_timeframe` (original 1h candles) to generate +the buy/sell signals. + +With this more realistic results should be found during BackTesting/HyperOpting. Since the buy/sell signals will +operate on the same `timeframe` that Live would use (1h candles), while at the same time `backtest_timeframe` +(5m or 1m candles) will simulate price movement during that `timeframe` (1h candle), providing more realistic +trailing stoploss and ROI behaviour during BackTesting/HyperOpting. +If you haven't yet please read: [BackTesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/BackTesting-traps/) + + +**WARNING: To disable TimeFrame-Zoom just use the same candles for `timeframe` & `backtest_timeframe`** +**WARNING: Candle data for both `timeframe` as `backtest_timeframe` will have to be downloaded before you will be able to BackTest/HyperOpt! (Since both will be used)** +**WARNING: This will be slower than BackTesting at 1h and 1m is a CPU killer. If you plan on using trailing stoploss or ROI, you probably want to know that your BackTest results are not complete lies.** + +### TimeFrame-Zoom Examples: +| Parameter | Description | +| --- | --- | +| **timeframe**='1h' | TimeFrame used during Dry/Live-runs | +| **backtest_timeframe**='5m' | Zoomed in TimeFrame used during BackTesting/HyperOpting | + +### Precision Setting: +The `precision` setting can be used to control the precision / step size used during HyperOpting. +A value **smaller than 1** will limit the search space, but may skip over good values. +While a value **larger than 1** increases the search space, but will increase the duration of HyperOpting. +To disable `precision` / for normal work mode **just** use **1**. + +**WARNING: Only use a precision different from 1 during HyperOpting & restore to 1 afterwards!** +**WARNING: HyperOpt Results don't take precision into consideration, after HyperOpting with precision use the Total Overall Signal Importance Calculator's `--precision-used` subcommand to fix the results** + +#### Precision Examples: +| Precision Value | Step Size effectively used during HyperOpting | +| --- | --- | +| **1/5** or **0.2** | **5** (0, 5, 10 ...) | +| **5** | **1/5** or **0.2** (0, 0.2, 0.4, 0.8, ...) | + + +## MoniGoManiHyperStrategy.py +**Link to:** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) +The **main** strategy file has 2 marked sections with some settings that can be configured: +### CONFIG NAMES SECTION +These settings can be used to make MoniGoMani load config files with a custom file name. +| Parameter | Description | +| --- | --- | +| **mgm_config_name** | Provide a custom file name for `mgm-config.json` | +| **mgm_config_hyperopt_name** | Provide a custom file name for `mgm-config-hyperopt.json` | + +### HYPEROPT PARAMETERS CONFIGURATION SECTION +This section can be used to configure the remaining MoniGoMani's HyperOpt Space Parameters at a more in depth level but also more advanced level. + +It contains: +- All the `buy/sell___trades_when_downwards/sideways/upwards` [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#HyperOpt-setting-overrides) +- The Sell Unclogger HyperOpt Space Params, configurable with [Initialize Variables](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#Initialize-variables) and [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#HyperOpt-setting-overrides) + + +#### HyperOpt Setting Overrides: +When the Parameters in the HyperOpt Space Parameters sections are altered as following examples then they can be used as overrides while HyperOpting / BackTesting / Dry/Live-running +(only truly useful when HyperOpting though!) Meaning you can use this to set individual buy_params/sell_params to a fixed value when HyperOpting! -**WARNING: Always double check that when doing a fresh hyperopt or doing a dry/live-run that all overrides are turned off!** +**WARNING: Always double check that when doing a fresh HyperOpt or doing a Dry/Live-run that all overrides are turned off!** -### Override / Static Examples: +##### Override / Static Example: In this case the `default` value will be used as a static value throughout the whole HyperOpt. Override `buy___trades_when_sideways` to always be **False**: @@ -72,108 +163,40 @@ Override `buy___trades_when_sideways` to always be **False**: buy___trades_when_sideways = \ CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) ``` -Override `sell_downwards_trend_macd_weight` to always be **0**: -```python -sell_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=False, load=False) -``` -| Function Param | Meaning | -| --- |--- | +| Function Param | Description | +| --- | --- | | **default**=X | The value used when overriding | -| **optimize**=False | Exclude from hyperopting (Make static) | -| **load**=False | Don't load from the HyperOpt Results Copy/Paste Section | +| **optimize**=False | Exclude from HyperOpting (Make static) | +| **load**=False | Don't load from `mgm-config-hyperopt.json` | -### HyperOptable / Normal Examples: -In this case the value in the HyperOpt Results copy/paste on top will be used as the starting point for the next HyperOpt -Normal usage of `buy___trades_when_sideways` making it hyperoptable: +##### HyperOptable / Normal Example: +In this case the value in `mgm-config-hyperopt.json` will be used as the starting point for the next HyperOpt +Normal usage of `buy___trades_when_sideways` making it HyperOptable: ```python buy___trades_when_sideways = \ CategoricalParameter([True, False], default=True, space='buy', optimize=True, load=True) ``` -Normal usage of `sell_downwards_trend_macd_weight` making it hyperoptable: -```python -sell_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) -``` -| Function Param | Meaning | -| --- |--- | +| Function Param | Description | +| --- | --- | | **default**=X | Not used in this case | -| **optimize**=True | Include during hyperopting (Look for "ideal" value) | -| **load**=True | Load from the HyperOpt Results Copy/Paste Section | - -# HyperOpt Narrowing Down Search Spaces: -The search spaces used for HyperOptable settings in MoniGoMani can easily be tweaked/fine-tuned to try and improve upon profit being made. -It also helps in cutting down the time needed for HyperOpting since fewer values will be possible. This if applied right it means we are pushing/pointing hyperopt in the right direction before it runs off doing its crunching. +| **optimize**=True | Include during HyperOpting (Look for "ideal" value) | +| **load**=True | Load from `mgm-config-hyperopt.json` | -### Narrowed Down Space Example: -Hyperopt Space for `sell_downwards_trend_macd_weight` narrowed down to only search for an ideal weight between **34 up to 54**: -```python -sell_downwards_trend_macd_weight = \ - IntParameter(int(34 * precision), int(54 * precision), default=int(44 * precision), space='sell', optimize=True, load=True) -``` - -# Current Default MoniGoMani Overrides + Refined Search Spaces: -These are the current go-to overrides & refined search spaces for the 1st HyperOpt Run - -*(More testing should be done to find out if there are other/more overrides that would work better!)* -Feel free to **manually** alter these if you think other values are more logical. These should be applied using the examples above. - -**The `buy/sell___trades_when_downwards/sideways/upwards` settings have proven to sometimes create a hodlr bot if not overriden when hyperopting, which is not what we want:** -```python -buy___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) -buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) -buy___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - -sell___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) -sell___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) -sell___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) -``` - -**Following narrowed down search spaces + overrides should result in a more realisticly configured unclogger:** -```python -# We'd like to use the Open Trade Unclogger so overridden it to 'True' -sell___unclogger_enabled = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) -# Default narrowed down search-spaces -sell___unclogger_minimal_losing_trade_duration_minutes = \ - IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), space='sell', optimize=True, load=True) -sell___unclogger_minimal_losing_trades_open = \ - IntParameter(1, 5, default=1, space='sell', optimize=True, load=True) -sell___unclogger_open_trades_losing_percentage_needed = \ - IntParameter(1, int(60 * precision), default=1, space='sell', optimize=True, load=True) -sell___unclogger_trend_lookback_candles_window = \ - IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) -sell___unclogger_trend_lookback_candles_window_percentage_needed = \ - IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), space='sell', optimize=True, load=True) -# Setting these logically manually is not too hard to do and will narrow down the hyperopt space, thus resulting in less -# time/system resources needed to run our hyperopt (We basically push it in the direction we want by hand doing this) -sell___unclogger_trend_lookback_window_uses_downwards/sideways/upwards_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) -sell___unclogger_trend_lookback_window_uses_sideways_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) -sell___unclogger_trend_lookback_window_uses_upwards_candles = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) -``` +#### Initialize Variables: +The `init_vars()` function is used to automatically initialize MoniGoMani's HyperOptable parameter values for both HyperOpt Runs. -**Following are the default search spaces for all the Total Buy/Sell Signal Weights needed + their corresponding lookback windows:** +##### Initialize Variables Example: +Example for `sell___unclogger_minimal_losing_trades_open` ```python -buy/sell__downwards/sideways/upwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), space='buy/sell', optimize=True, load=True) -buy/sell__downwards/sideways/upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(1, 6, default=1, space='buy/sell', optimize=True, load=True) -``` - -**Following are the default search spaces for all the Weighted Signals:** -```python -buy/sell_downwards/sideways/upwards_trend_signal_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) +param = init_vars(sell_params, "sell___unclogger_minimal_losing_trades_open", + 2, 5, 1, precision, False) ``` +| Parameter | Description | +| --- | --- | +| *(parameter_min_value=)* 2 | Minimal search space value to use during the 1st HyperOpt Run and override value for weak signals on the 2nd HyperOpt Run | +| *(parameter_max_value=)* 5 | Maximum search space value to use during the 1st HyperOpt Run and override value for weak signals on the 2nd HyperOpt Run | +| *(parameter_threshold=)* 1 | Threshold to use for overriding weak/strong signals and setting up refined search spaces after the 1st HyperOpt Run | +| *(overrideable=)* False | Allow value to be overrideable or not (defaults to `True`) | # Open Trade Unclogger: @@ -189,75 +212,37 @@ It will only unclog a losing trade when all following checks have been full-fill - Check if `sell___unclogger_open_trades_losing_percentage_needed` is fulfilled - Check if open_trade's trend changed negatively during past `sell___unclogger_trend_lookback_candles_window`: For unclogging to occur `sell___unclogger_trend_lookback_candles_window_percentage_needed` should be fulfilled! -The trends used for the calculations in this check can be configured with `sell___unclogger_trend_lookback_window_uses_downwards/sideways/upwards_candles=True/False` (Its recommended setting these last 3 true/false values manually using [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides)). +The trends used for the calculations in this check can be configured with `sell___unclogger_trend_lookback_window_uses_downwards/sideways/upwards_candles=True/False` (Its recommended setting these last 3 true/false values manually using [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#HyperOpt-setting-overrides)). Each candle fulfilling a trend set to `True` will be added in the sum used to calculate the value for `sell___unclogger_trend_lookback_candles_window_percentage_needed` if it is found in the lookback window. -Only used when `use_custom_stoploss` (To store open trade data) & `sell_params['sell___unclogger_enabled']` are both set to `True`! +Only used when `sell___unclogger_enabled` is set to `True`! # Total Overall Signal Importance Calculator: -Paste the `buy_params` & `sell_params` results from your HyperOpt over in the `/user_data/Total-Overall-Signal-Importance-Calculator.py` file. -Then execute: `python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc BTC` from your favorite terminal / CLI to calculate the overall importance of the signals being used. -The higher the score of a signal the better! Now it will also export to a `importance.log` file in the same folder for easy sharing! +Execute: `python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT -lf ./user_data/mgm-config-hyperopt.json -cf ./user_data/Total-Average-Signal-Importance-Report.log` from your favorite terminal / CLI to calculate the overall importance of the signals being used. +The higher the score of a signal the better! Now it will also export to a `Total-Average-Signal-Importance-Report.log` file for easy sharing! Share these results in [#moni-go-mani-testing](https://discord.gg/xFZ9bB6vEz) so we can improve the signals! ### Handy Calculator Sub Commands: - `-h` or `--help`: Print out information about the usage of all sub commands. -- `-sc` or `--stake-currency` ***Mandatory***: Stake currency displayed in the report (Should match to what is under `stake_currency` in your `config.json`) +- `-sc` or `--stake-currency` ***Mandatory***: Stake currency displayed in the report (Should match to what is under `stake_currency` in your `mgm-config.json`) - `-lf` or `--load-file` ***Optional (Unused by default)***: Path to `.json` file to load HyperOpt Results from which will be used in the Calculator. -`.json`'s should be extracted with `freqtrade hyperopt-show --best --no-header --print-json > ./user_data/config-mgm-hyperopt.json` +`.json`'s should be extracted with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) **Warning** Make sure your calculator copy-paste section is complete before using this sub-command! - `-cf` or `--create-file` ***Optional (Unused by default)***: Save the Total-Average-Signal-Importance-Report as a `.log` file with a custom filename and file output location - `-nf` or `--no-file` ***Optional (Defaults to `True` when not omitted)***: Do not output the Total-Average-Signal-Importance-Report as a `.log` file - `-fm` or `--fix-missing` ***Optional (Defaults to `True` when not omitted)***: Re-Include missing weighted buy/sell_params with **0 as their value** & re-print them as copy/paste-able results. Also keeps the tool from crashing when there are missing values. -- `-pu` or `--precision-used` ***Optional (Defaults to `1` when not omitted)***: The precision value used during hyperopt. Can be decimal (0.2) or fraction 1/5. Mostly useful after a running a hyperopt with precision different from 1, used to patch the weights of the signals displayed in the report to what we would expect them to be for comparison with other results. - - -# Precision Setting: -The `precision` setting can be used to control the precision / step size used during hyperopting. -A value **smaller than 1** will limit the search space, but may skip over good values. -While a value **larger than 1** increases the search space, but will increase the duration of hyperopting. -To disable `precision` / for old the work mode **just** use **1**. - -**WARNING: Only use a precision different from 1 during hyperopting & restore to 1 afterwards!** -**WARNING: HyperOpt Results don't take precision into consideration, after hyperopting with precision use the Total Overall Signal Importance Calculator's `--precision-used` subcommand to fix the results** - -### Precision Examples: -| Precision Value | Step Size effectively used during HyperOpting | -| --- | --- | -| **1/5** or **0.2** | **5** (0, 5, 10 ...) | -| **5** | **1/5** or **0.2** (0, 0.2, 0.4, 0.8, ...) | - - -# Number of weighted signals: -Set the `number_of_weighted_signals` setting to the total number of different weighted signals in use in the weighted tables. -`buy/sell__downwards/sideways/upwards_trend_total_signal_needed` settings will be multiplied with this value so their search spaces will be larger, resulting in more equally divided total weighted signal scores when hyperopting. - -**Example Usage:** -```python -number_of_weighted_signals = 9 -``` - - -# Long Continuous ROI Table StepSize: -MGM generates a really long custom ROI-Table (Return of Interest) so it will have less gaps in it and be more continuous in it's decrease. -Size of the steps (in minutes) to be used when calculating the long continuous ROI-Table, can be configured using the `roi_table_step_size` setting. - - -**Example Usage:** -```python -roi_table_step_size = 5 -``` +- `-pu` or `--precision-used` ***Optional (Defaults to `1` when not omitted)***: The precision value used during HyperOpt. Can be decimal (0.2) or fraction 1/5. Mostly useful after a running a HyperOpt with precision different from 1, used to patch the weights of the signals displayed in the report to what we would expect them to be for comparison with other results. # Custom HyperLoss Functions: MoniGoMani comes with an extra set of loss functions for HyperOpting, supplementing the ones shipped with FreqTrade. -You can find these functions in `M̀oniGoMani/user_data/hyperopts/`, and can use them by overriding the freqtrade hyperopt parameter `--hyperopt-loss`. +You can find these functions in `M̀oniGoMani/user_data/hyperopts/`, and can use them by overriding the freqtrade HyperOpt parameter `--hyperopt-loss`. Following 2 Custom HyperLoss Functions ship with the MoniGoMani Framework: -- [**WinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/hyperopts/WinRatioAndProfitRatioLoss.py): Attempts to optimise for the best profit **and** stability (Returns smaller number for better results) -- [**UncloggedWinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/hyperopts/UncloggedWinRatioAndProfitRatioLoss.py): Same as WinRatioAndProfitRatioLoss but has a configurable Percentage of loss (See `unclogger_profit_ratio_loss_tolerance` setting inside the file) to ignore while HyperOpting (Since small losses are a by-product of the Unclogger) +- [**WinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/HyperOpts/WinRatioAndProfitRatioLoss.py): Attempts to optimise for the best profit **and** stability (Returns smaller number for better results) +- [**UncloggedWinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/HyperOpts/UncloggedWinRatioAndProfitRatioLoss.py): Same as WinRatioAndProfitRatioLoss but has a configurable Percentage of loss (See `unclogger_profit_ratio_loss_tolerance` setting inside the file) to ignore while HyperOpting (Since small losses are a by-product of the Unclogger) **Example Usage:** ```powershell @@ -266,17 +251,17 @@ Following 2 Custom HyperLoss Functions ship with the MoniGoMani Framework: # PairLists: -By default, MoniGoMani includes 2 pairlists in `config-btc.json`: +By default, MoniGoMani includes 2 pairlists in `mgm-config.json`: - A VolumePairList: - Best to use for Dry and Live Running - Will automatically update to the current best top volume coin pairs available - A StaticPairList: - Used for BackTesting / HyperOpting since a VolumePairList cannot be used here. - - When [optimizing](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) MoniGoMani for actual dry/live-running (instead of testing) it's truly recommended to [download a fresh top volume StaticPairList](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#download-staticpairlists) and HyperOpt upon that (Preferably as big as possible, but beware of the warning below)! + - When [optimizing](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) MoniGoMani for actual Dry/Live-running (instead of testing) it's truly recommended to [download a fresh top volume StaticPairList](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#download-staticpairlists) and HyperOpt upon that (Preferably as big as possible, but beware of the warning below)! This should yield much better & more realistic results during HyperOpting/BackTesting! - This is due to giving a better reflection of the current market and being closer to the VolumePairList used during dry/live-run's. + This is due to giving a better reflection of the current market and being closer to the VolumePairList used during Dry/Live-run's. -Switching between the PairList in use can easily be done by moving the `_` in front of the `pairlists` value inside `config-btc.json` for the pairlist you wish to disable. +Switching between the PairList in use can easily be done by moving the `_` in front of the `pairlists` value inside `mgm-config.json` for the pairlist you wish to disable. **WARNING: The bigger the (Volume/Static)PairList in use the higher the system requirements (CPU usage, RAM usage & Time needed to HyperOpt will go up)! Switch to a smaller list if your system can't handle it!** @@ -291,83 +276,64 @@ Switching between the PairList in use can easily be done by moving the `_` in fr ``` ### Download StaticPairLists -Retrieve a current **Binance-BTC-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))* (The amount of pairs in these top volume lists can be altered by opening up `Binance-Retrieve-Top-Volume-StaticPairList.json` and changing the `number_assets` value inside to the amount of pairs you'd like in your list): +Retrieve a current **Binance-USDT-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))* (The amount of pairs in these top volume lists can be altered by opening up `Binance-Retrieve-Top-Volume-StaticPairList.json` and changing the `number_assets` value near the bottom of the file to the amount of pairs you'd like in your list): ```powershell -freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote BTC --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json +freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote USDT --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json ``` -Retrieve a current **Binance-BTC-All-Tradable-StaticPairList.json** file *(using [Binance-Retrieve-All-Tradable-StaticPairList.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py))* (Beware, very high system requirements due to a lot of BTC pairs!): +Retrieve a current **Binance-USDT-All-Tradable-StaticPairList.json** file *(using [Binance-Retrieve-All-Tradable-StaticPairList.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py))* (Beware, can be very high system requirements due to a lot of pairs!): ```powershell -python ./user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py -q BTC > ./user_data/mgm_pair_lists/Binance-BTC-All-Tradable-StaticPairList.json +python ./user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py -q USDT > ./user_data/mgm_pair_lists/Binance-USDT-All-Tradable-StaticPairList.json ``` -**After Downloading** the StaticPairList will be available under `./user_data/mgm_pair_lists/<>-StaticPairList.json`, just open up the file and copy the PairList Data into your own `config-private.json` file under `pair_whitelist` section to start using it! +**After Downloading** the StaticPairList will be available under `./user_data/mgm_pair_lists/<>-StaticPairList.json`, just open up the file and copy the PairList Data into your own `mgm-config.json` file under `pair_whitelist` section to start using it! -Don't forget to **Download Candle Data** before HyperOpting or Backtesting (Example for last 2 years of candle data): +Don't forget to **Download Candle Data** before HyperOpting or BackTesting (Example timerange): ```powershell -freqtrade download-data --exchange binance -c ./user_data/config-btc.json -c ./user_data/config-private.json --data-format-ohlcv hdf5 --days 740 --timeframes 5m 1h +freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json ``` - -# TimeFrame-Zoom: -To prevent profit exploitation during backtesting/hyperopting we backtest/hyperopt this can be used. -When normally a `timeframe` (1h candles) would be used, you can zoom in using a smaller `backtest_timeframe` -(5m candles) instead. This happens while still using an `informative_timeframe` (original 1h candles) to generate -the buy/sell signals. - -With this more realistic results should be found during backtesting/hyperopting. Since the buy/sell signals will -operate on the same `timeframe` that live would use (1h candles), while at the same time `backtest_timeframe` -(5m or 1m candles) will simulate price movement during that `timeframe` (1h candle), providing more realistic -trailing stoploss and ROI behaviour during backtesting/hyperopting. - -**WARNING: Since MoniGoMani v0.10.0 it appears TimeFrame-Zoom is not needed anymore and even lead to bad results!** -**WARNING: To disable TimeFrame-Zoom just use the same candles for `timeframe` & `backtest_timeframe`** -**WARNING: Remove the `timeframe` line from your `config-btc.json` if it would still be there! Otherwise, TimeFrame-Zoom won't work properly in the current version!** -**WARNING: Candle data for both `timeframe` as `backtest_timeframe` will have to be downloaded before you will be able to backtest/hyperopt! (Since both will be used)** -**WARNING: This will be slower than backtesting at 1h and 1m is a CPU killer. If you plan on using trailing stoploss or ROI, you probably want to know that your backtest results are not complete lies.** - -### TimeFrame-Zoom Examples: -| Parameter | Meaning | -| --- | --- | -| **timeframe**='1h' | TimeFrame used during dry/live-runs | -| **backtest_timeframe**='5m' | Zoomed in TimeFrame used during backtesting/hyperopting | - - -# Go-To Commands: -For **Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py): +## Go-To Commands: +**Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py): ```powershell -freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +freqtrade hyperopt -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 ``` -For **Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py):: +**Apply HyperOpt Results** from a ``: ```powershell -freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 +freqtrade hyperopt-show -n -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --no-header --print-json | tail -n 1 | jq '.' > ./user_data/mgm-config-hyperopt.json ``` -For **Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +**Reset HyperOpt Results**: ```powershell -python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT +rm ./user_data/mgm-config-hyperopt.json ``` - -To retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: +**Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py): +```powershell +freqtrade backtesting -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 +``` +**Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +```powershell +python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT -lf ./user_data/mgm-config-hyperopt.json -cf ./user_data/Total-Average-Signal-Importance-Report.log +``` +Retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: ```powershell freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote USDT --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json -# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config-usdt.json' file to start using it! +# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config.json' file to start using it! ``` - -To **Download Candle Data**: +**Download Candle Data**: ```powershell -freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json +freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json ``` # How to share your test results properly: The easiest way to share how your MGM setup has been doing would be by posting a screenshot in the [Discord Server](https://discord.gg/xFZ9bB6vEz) with the output of the `/status table` and `/profit` commands (Using the Telegram connection of the bot). -Also, one of the other most welcome things is the results from the `Total-Overall-Signal-Importance-Calculator`, but you'll have to paste your own fresh hyperopt results in it first before it can make you a nice report that can help us find better signals for MGM !:rocket: +Also, one of the other most welcome things is the results from the `Total-Overall-Signal-Importance-Calculator`, but you'll have to paste your own fresh HyperOpt results in it first before it can make you a nice report that can help us find better signals for MGM !:rocket: Of course all FreqUI / Telegram / config / HyperOpt results done on MGM **can be** useful / be learned from! -Try to **always include** a `Total-Overall-Signal-Importance-Calculator` report or just your own MoniGoMani file with your hyperopt results applied to it! +Try to **always include** a `Total-Overall-Signal-Importance-Calculator` report or just your own MoniGoMani file with your HyperOpt results applied to it! Since without knowing which signal weights or which on/off settings are applied we can't really truly learn much from your results! -The epoch table being generated when hyperopting + the number of the epoch you used is also very helpful, so we can easily rule out if your test results are exploited. (See [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/)!) +The epoch table being generated when HyperOpting + the number of the epoch you used is also very helpful, so we can easily rule out if your test results are exploited. (See [BackTesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/BackTesting-traps/)!) # Common mistakes: @@ -377,4 +343,4 @@ You likely are using a `Float` value where you should be using a `Integer` value - `Float` = Decimal number. Examples: 1.53, 4.2, 17.12 ### -bash: jq: command not found -[jq](https://stedolan.github.io/jq/) (command-line JSON processor) still needs to be installed. \ No newline at end of file +You still need to install [jq](https://stedolan.github.io/jq/) \ No newline at end of file diff --git a/README.md b/README.md index c7c23c04b..90aa23142 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ **I strongly recommended to [re-optimize](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) your own copy of MoniGoMani while thinking logically, don't follow your computer blindly!** ## The idea / Theory: -MoniGoMani aims to be more then just a conventional strategy, it's a framework to "easily" find a profitable strategy configuration in any market! Without the need to do any programming. -But you will need to know some Technical Analysis and be able to pull your own conclusions from your test-results, this is not just an easy copy/paste. +MoniGoMani aims to be more than just a conventional strategy, it's a framework to "easily" find a profitable strategy configuration in any market! Without the need to do any programming. +However, you will need to know some Technical Analysis and be able to pull your own conclusions from your test-results, this is not just an easy copy/paste. MGM (MoniGoMani) derives itself from other strategies by its use of something I called "weighted signals". Each signal has its own weight allocated to it & a total buy/sell signal needed is defined too. @@ -65,8 +65,8 @@ Also will it teach us what works where & what doesn't since MoniGoMani first det Further it will do various HyperOptable checks upon the open trades to see if there are "bad" ones to unclog while running. ## Feature List: -- [Auto-HyperOptable Strategy](https://github.com/freqtrade/freqtrade/pull/4596)! \*No more need for legacy MoniGoMani, legacy MoniGoManiHyperOpt and MoniGoManiHyperOpted strategy classes! -- All HyperOptable settings are easily copy/paste-able from the HyperOpt Results +- Partially [Automated Optimization Process](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) +- All HyperOpt Results can easily be applied and removed with the use of some [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#go-to-commands) - Configurable Buy/Sell Signal Weight Influence Tables for Downwards/Sideways/Upwards trends, each table **currently** has 9 Buy & 9 Sell signals implemented ***(HyperOptable!)***: - [ADX](https://www.investopedia.com/terms/a/adx.asp) + Strong [Up](https://www.investopedia.com/terms/p/positivedirectionalindicator.asp)/Strong [Down](https://www.investopedia.com/terms/n/negativedirectionalindicator.asp) - [RSI](https://www.investopedia.com/terms/r/rsi.asp) @@ -82,7 +82,7 @@ Further it will do various HyperOptable checks upon the open trades to see if th - Configurable Trading on Downwards/Sideways/Upwards trends for Buys/Sells ***(HyperOptable!)*** - Settings to Enable/Disable HyperOpting for individual `buy_params` & `sell_params` and setting them to a static value through [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#hyperopt-setting-overrides) - Configurable [Open Trade Unclogger](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#open-trade-unclogger), if enabled it attempts to unclog the bot when it's stuck with losing trades & unable to trade more new trades ***(HyperOptable!)*** :rocket: -- [TimeFrame-Zoom](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#timeframe-zoom) during backtesting/hyperopting to prevent profit exploitation! *(Read: [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/))* +- [TimeFrame-Zoom](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#timeframe-zoom) during BackTesting/HyperOpting to prevent profit exploitation! *(Read: [BackTesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/BackTesting-traps/))* - Custom Long Continuously decreasing ROI Table generation with configurable `roi_table_step_size` - [Precision Setting](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#precision-setting) to alter the step-size used during HyperOpting - 2 [Custom HyperLoss Functions](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#custom-hyperloss-functions): @@ -91,7 +91,7 @@ Further it will do various HyperOptable checks upon the open trades to see if th - [Top Volume & All Tradable StaticPairList Downloading](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#download-staticpairlists) to easily fetch a good StaticPairList - [Total Overall Signal Importance Calculator](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#total-overall-signal-importance-calculator) for Total Average Signal Importance Calculation upon the HyperOpt Results (With some really handy subcommands) - Pre-Configured Main/Sub Plot Configurations for visualisation of all indicators used in FreqUI -- Turn On/Off **All** Individual Weighted Signal DataFrame entries for easy debugging in an IDE or better speed while dry/live running or hyperopting +- Turn On/Off **All** Individual Weighted Signal DataFrame entries for easy debugging in an IDE or better speed while dry/live running or HyperOpting *\*Support/Updates for Legacy versions stopped since Auto-HyperOptable Strategies are merged into the official Freqtrade Development Branch! Please switch to the new MoniGoManiHyperStrategy!* @@ -99,28 +99,34 @@ Further it will do various HyperOptable checks upon the open trades to see if th Take a good read at the [**MGM_DOCUMENTATION.md**](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md), the current place where you can find all MoniGoMani Documentation! ## Go-To Commands: -For **Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py): +**Hyper Opting** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py): ```powershell -freqtrade hyperopt -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +freqtrade hyperopt -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 ``` -For **Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) using the new [MoniGoManiConfiguration.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiConfiguration.py):: +**Apply HyperOpt Results** from a ``: ```powershell -freqtrade backtesting -s MoniGoManiConfiguration -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 +freqtrade hyperopt-show -n -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --no-header --print-json | tail -n 1 | jq '.' > ./user_data/mgm-config-hyperopt.json ``` -For **Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +**Reset HyperOpt Results**: ```powershell -python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT +rm ./user_data/mgm-config-hyperopt.json ``` - -To retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: +**Back Testing** [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py): +```powershell +freqtrade backtesting -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --timerange 20210101-20210316 +``` +**Total Average Signal Importance Calculation** *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: +```powershell +python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc USDT -lf ./user_data/mgm-config-hyperopt.json -cf ./user_data/Total-Average-Signal-Importance-Report.log +``` +Retrieve a current **Binance-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: ```powershell freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote USDT --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-USDT-Top-Volume-StaticPairList.json -# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config-usdt.json' file to start using it! +# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'mgm-config.json' file to start using it! ``` - -To **Download Candle Data**: +**Download Candle Data**: ```powershell -freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config-usdt.json -c ./user_data/mgm-config-private.json +freqtrade download-data --timerange 20201201-20210316 -t 5m 1h -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json ``` ## **Got Test Results / Ideas / Config Improvements?** @@ -137,20 +143,16 @@ More general chats for `Technical Analysis`, `Freqtrade`, `Iconomi` and `Random` ## **Planned**: *Ordered by current schedule/priority* -- Extract all `MoniGoMani Settings` into a `config-mgm.json` that will require manual configuration + Extract the `HyperOpt Results Copy/Paste section` into a `config-mgm-hyperopt.json`, this last file will be extractable from HyperOpt Results using a command! -- Implement Parent/Child Strategy format -- Automate as much of the [optimization process](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) of MoniGoMani as possible - More global/broader trend detection using zoomed out indicator data +- [Sigmoid](https://en.wikipedia.org/wiki/Sigmoid_function) Buy/Sell Signals - **Other & Better indicators!** MoniGoMani has been designed so signals can easily be inserted / swapped out Please use the `Total-Overall-Signal-Importance-Calculator.py` to find out which signals do best and report your results to the [Discord Server](https://discord.gg/xFZ9bB6vEz), so we can improve! :rocket: -- [Sigmoid](https://en.wikipedia.org/wiki/Sigmoid_function) Buy/Sell Signals - HyperOpt over 3 separate timeranges (one representing each individual kind of trend, downwards/sideways/upwards, a timeframe that represents a corresponding trend should be picked) -- Individual `config-btc.json` & `config-usdt.json` files, as well as individual `MoniGoManiHyperOpted-btc.py` & `MoniGoManiHyperOpted.py` releases -- A method to pull a `Static Averaged Volume PairList` (Calculated by summing up the top volume pairlists for each candle over the period of the timerange to hyperopt upon & then dividing by the total amount of candles in the timerange, to create an averaged "volume" pairlist that can be used during backtesting/hyperopting which should lead to a more "realistic" pairlist to test upon when using a VolumePairList when dry/live-running) -- HyperOpt over a `timerange` through a few simple Telegram commands, review the results and choose if and which new epoch should be applied. +- A method to pull a `Static Averaged Volume PairList` (Calculated by summing up the top volume pairlists for each candle over the period of the timerange to hyperopt upon & then dividing by the total amount of candles in the timerange, to create an averaged "volume" pairlist that can be used during BackTesting/HyperOpting which should lead to a more "realistic" pairlist to test upon when using a VolumePairList when dry/live-running) - Improve upon bot loop speed (Try to improve code to reach reduction in HyperOpting time needed) - Huge refactor that should improve the codebase reducing a lot of duplicate code & making implementing new weighted signals even easier - [MultiProcessed DataFrame indicator checking](https://www.machinelearningplus.com/python/parallel-processing-python/) if possible for speed improvements +- HyperOpt over a `timerange` through a few simple Telegram commands, review the results and choose if and which new epoch should be applied. ## **ChangeLog**: View the Legacy [ChangeLog](https://github.com/Rikj000/MoniGoMani/blob/main/CHANGELOG.md), newer changelogs are appended with each [Release](https://github.com/Rikj000/MoniGoMani/releases/) @@ -161,20 +163,20 @@ It's completely free to use and alter and has many amazing features. Big thank you to **xmatthias** and everyone who helped on it! - **[Official Freqtrade Website](https://www.freqtrade.io/en/latest/)** - **[Official Freqtrade GitHub Repository](https://github.com/freqtrade/freqtrade)** -- **[Official Freqtrade Discord Server](https://discord.gg/j84KnP57kW)** +- **[Official Freqtrade Discord Server](https://discord.gg/j84KnP57kW)**- [Sigmoid](https://en.wikipedia.org/wiki/Sigmoid_function) Buy/Sell Signals ## **ICONOMI**: Can't wait until MoniGoMani is fully on point? Or is this all too technical for you? Check out **[ICONOMI](https://www.iconomi.com/register?ref=JdFzz)!** Instead of buying loose individual crypto manually like you usually do on exchanges, this platform has mostly been created to buy & hodl `Investment Strategies`. -ICONOMI strategies are owned by `Strategy Managers`, these often are day-trades / technical analysts by profession so in general they have quite a good idea what they are doing. +ICONOMI strategies are owned by `Strategy Managers`, these are often day-trades / technical analysts by profession so in general they have quite a good idea what they are doing. Each investment strategy contains up to ±20 different coins with a percentage allocated to each one. The managers will often re-balance these percentages towards coins they'll think will be profitable. -There are fees tied to each strategy and it's up to the manager of each strategy to pick the percentages of fees for his/her strategy. Usually strategies that are re-balanced often (aka market being watched more actively) or larger strategies with a good reputation ask higher fees. However fees are only charged if **new** profits have been made, so they are quite in the benefit of the user. +There are fees tied to each strategy, and it's up to the manager of each strategy to pick the percentages of fees for his/her strategy. Usually strategies that are re-balanced often (aka market being watched more actively) or larger strategies with a good reputation ask higher fees. However, fees are only charged if **new** profits have been made, so they are quite in the benefit of the user. More [info on fees in general can be found here](https://www.iconomi.com/fees-disclosure), and more [info on Performance fees can be found here](https://iconomi.zendesk.com/hc/en-us/articles/360026664834-Performance-fee-Crypto-Strategies). In general this is a good platform to invest into when you still need to start learning Technical Analysis, when you don't have time to monitor the status of the market or when you don't feel confident trading your own funds. -Since here you have strategy owners "doing the daytrading for you" by rebalancing the strategies and the percentages of coins in them. +Since here you have strategy owners "doing the day-trading for you" by re-balancing the strategies & the percentages of coins in them. **If you join please use my referral link! => (https://www.iconomi.com/register?ref=JdFzz)** :pray: *(Then a percentage of your fees that you have to pay anyways to the strategy owners and ICONOMI will go to me instead, which is a neat win-win way for us both to support me for my work on MGM!)* @@ -182,5 +184,5 @@ Since here you have strategy owners "doing the daytrading for you" by rebalancin #### Recommended Iconomi Strategies - [**Crypto Knowledge Pool**](https://www.iconomi.com/asset/BTCETHTEST?ref=JdFzz) (CKP): A community influenced strategy - [**CKP's Telegram Chat**](https://telegram.me/CKP_Robot?start=1684098549): If you want to vote if the coins will go up or down and hear about interesting news or ask questions. When I wrote this they we're right about 65% of the time. The manager will take the results into consideration when altering the strategy. -- [**Knepala**](https://www.iconomi.com/asset/KNEPALA?ref=JdFzz): The personal strategy of the owner of CKP, most of the time it does even better then CKP itself. +- [**Knepala**](https://www.iconomi.com/asset/KNEPALA?ref=JdFzz): The personal strategy of the owner of CKP, most of the time it does even better than CKP itself. - Look on [ICONOMI](https://www.iconomi.com/register?ref=JdFzz) for more strategies you deem interesting :slight_smile: \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults7_Pt1-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr162.log b/Some Test Results/v0.11.0/BackTestResults7_Pt1-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr162.log new file mode 100644 index 000000000..f3c331722 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults7_Pt1-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr162.log @@ -0,0 +1,214 @@ +freqtrade hyperopt-show -n 162 +============================== +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-----------------+-------------------------| +| DOGE/USDT | 174 | 2.86 | 497.30 | 224.011 | 44.80 | 8:11:00 | 157 5 12 90.2 | +| HOT/USDT | 126 | 2.66 | 335.02 | 150.910 | 30.18 | 11:48:00 | 115 6 5 91.3 | +| BTT/USDT | 84 | 3.10 | 260.16 | 117.188 | 23.44 | 17:30:00 | 70 10 4 83.3 | +| TFUEL/USDT | 108 | 2.21 | 238.45 | 107.412 | 21.48 | 15:00:00 | 98 6 4 90.7 | +| WIN/USDT | 84 | 2.13 | 178.95 | 80.607 | 16.12 | 14:31:00 | 66 14 4 78.6 | +| UNI/USDT | 73 | 1.79 | 130.42 | 58.750 | 11.75 | 17:10:00 | 54 18 1 74.0 | +| XRP/USDT | 64 | 1.74 | 111.30 | 50.135 | 10.03 | 20:51:00 | 48 13 3 75.0 | +| XLM/USDT | 65 | 1.57 | 102.31 | 46.084 | 9.22 | 23:05:00 | 55 7 3 84.6 | +| MKR/USDT | 71 | 1.30 | 92.08 | 41.479 | 8.30 | 19:40:00 | 55 13 3 77.5 | +| ETH/USDT | 44 | 1.64 | 72.27 | 32.555 | 6.51 | 1 day, 4:17:00 | 31 12 1 70.5 | +| BTC/USDT | 37 | 1.53 | 56.54 | 25.470 | 5.09 | 1 day, 9:52:00 | 25 12 0 100 | +| TRX/USDT | 37 | 1.38 | 50.98 | 22.965 | 4.59 | 1 day, 15:51:00 | 28 7 2 75.7 | +| ALGO/USDT | 63 | 0.73 | 46.21 | 20.816 | 4.16 | 20:33:00 | 42 18 3 66.7 | +| ADA/USDT | 57 | 0.80 | 45.87 | 20.663 | 4.13 | 1 day, 2:59:00 | 44 10 3 77.2 | +| TOTAL | 1087 | 2.04 | 2217.88 | 999.044 | 199.81 | 17:57:00 | 888 151 48 81.7 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 864 | 864 0 0 100 | 4.06 | 3505.09 | 1578.87 | 250.36 | +| roi | 171 | 20 151 0 100 | 0.09 | 14.71 | 6.626 | 1.05 | +| stop_loss | 36 | 0 0 36 0 | -31.54 | -1135.33 | -511.411 | -81.1 | +| force_sell | 12 | 0 0 12 0 | -14.04 | -168.42 | -75.867 | -12.03 | +| MGM_unclogging_losing_trade | 4 | 4 0 0 100 | 0.46 | 1.84 | 0.83 | 0.13 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| TRX/USDT | 1 | -5.35 | -5.35 | -2.411 | -0.48 | 2 days, 9:00:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -8.95 | -8.95 | -4.030 | -0.81 | 1 day, 23:50:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.23 | -10.23 | -4.609 | -0.92 | 5 days, 23:00:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| ADA/USDT | 1 | -13.33 | -13.33 | -6.004 | -1.20 | 2 days, 11:25:00 | 0 0 1 0 | +| MKR/USDT | 1 | -13.53 | -13.53 | -6.095 | -1.22 | 5 days, 23:00:00 | 0 0 1 0 | +| WIN/USDT | 1 | -16.86 | -16.86 | -7.596 | -1.52 | 1 day, 14:55:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| HOT/USDT | 1 | -23.13 | -23.13 | -10.418 | -2.08 | 18:10:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -23.52 | -23.52 | -10.593 | -2.12 | 3 days, 17:05:00 | 0 0 1 0 | +| TOTAL | 12 | -14.04 | -168.42 | -75.867 | -15.17 | 3 days, 20:19:00 | 0 0 12 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 1087 | +| Starting balance | 500.000 USDT | +| Final balance | 1499.044 USDT | +| Absolute profit | 999.044 USDT | +| Total profit % | 199.81% | +| Trades per day | 14.69 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 48915.000 USDT | +| | | +| Best Pair | DOGE/USDT 497.3% | +| Worst Pair | ADA/USDT 45.87% | +| Best trade | BTT/USDT 42.3% | +| Worst trade | DOGE/USDT -31.54% | +| Best day | 159.475 USDT | +| Worst day | -80.114 USDT | +| Days win/draw/lose | 62 / 3 / 10 | +| Avg. Duration Winners | 10:03:00 | +| Avg. Duration Loser | 3 days, 2:35:00 | +| Zero Duration Trades | 19.32% (210) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 501.444 USDT | +| Max balance | 1574.911 USDT | +| Drawdown | 295.01% | +| Drawdown | 132.889 USDT | +| Drawdown high | 980.857 USDT | +| Drawdown low | 847.967 USDT | +| Drawdown Start | 2021-02-22 03:40:00 | +| Drawdown End | 2021-02-23 09:05:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 162/1000: + 1087 trades. + 888/151/48 Wins/Draws/Losses. + Avg profit 2.04%. + Median profit 2.67%. + Total profit 999.04437204 USDT ( 199.81Σ%). + Avg duration 17:57:00 min. + Objective: -181184.73689 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "118", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "buy__sideways_trend_total_signal_needed": "413", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "buy__upwards_trend_total_signal_needed": "248", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "5", + "buy_downwards_trend_adx_strong_up_weight": "17", + "buy_downwards_trend_bollinger_bands_weight": "23", + "buy_downwards_trend_ema_long_golden_cross_weight": "11", + "buy_downwards_trend_ema_short_golden_cross_weight": "61", + "buy_downwards_trend_macd_weight": "39", + "buy_downwards_trend_rsi_weight": "100", + "buy_downwards_trend_sma_long_golden_cross_weight": "73", + "buy_downwards_trend_sma_short_golden_cross_weight": "67", + "buy_downwards_trend_vwap_cross_weight": "98", + "buy_sideways_trend_adx_strong_up_weight": "96", + "buy_sideways_trend_bollinger_bands_weight": "46", + "buy_sideways_trend_ema_long_golden_cross_weight": "84", + "buy_sideways_trend_ema_short_golden_cross_weight": "75", + "buy_sideways_trend_macd_weight": "83", + "buy_sideways_trend_rsi_weight": "89", + "buy_sideways_trend_sma_long_golden_cross_weight": "19", + "buy_sideways_trend_sma_short_golden_cross_weight": "8", + "buy_sideways_trend_vwap_cross_weight": "86", + "buy_upwards_trend_adx_strong_up_weight": "98", + "buy_upwards_trend_bollinger_bands_weight": "21", + "buy_upwards_trend_ema_long_golden_cross_weight": "61", + "buy_upwards_trend_ema_short_golden_cross_weight": "17", + "buy_upwards_trend_macd_weight": "76", + "buy_upwards_trend_rsi_weight": "17", + "buy_upwards_trend_sma_long_golden_cross_weight": "53", + "buy_upwards_trend_sma_short_golden_cross_weight": "57", + "buy_upwards_trend_vwap_cross_weight": "42", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "32", + "sell___unclogger_minimal_losing_trades_open": "4", + "sell___unclogger_open_trades_losing_percentage_needed": "57", + "sell___unclogger_trend_lookback_candles_window": "55", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "25", + "sell__downwards_trend_total_signal_needed": "121", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "5", + "sell__sideways_trend_total_signal_needed": "880", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "4", + "sell__upwards_trend_total_signal_needed": "601", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell_downwards_trend_adx_strong_down_weight": "36", + "sell_downwards_trend_bollinger_bands_weight": "58", + "sell_downwards_trend_ema_long_death_cross_weight": "80", + "sell_downwards_trend_ema_short_death_cross_weight": "85", + "sell_downwards_trend_macd_weight": "32", + "sell_downwards_trend_rsi_weight": "41", + "sell_downwards_trend_sma_long_death_cross_weight": "16", + "sell_downwards_trend_sma_short_death_cross_weight": "99", + "sell_downwards_trend_vwap_cross_weight": "81", + "sell_sideways_trend_adx_strong_down_weight": "2", + "sell_sideways_trend_bollinger_bands_weight": "8", + "sell_sideways_trend_ema_long_death_cross_weight": "53", + "sell_sideways_trend_ema_short_death_cross_weight": "16", + "sell_sideways_trend_macd_weight": "25", + "sell_sideways_trend_rsi_weight": "22", + "sell_sideways_trend_sma_long_death_cross_weight": "63", + "sell_sideways_trend_sma_short_death_cross_weight": "82", + "sell_sideways_trend_vwap_cross_weight": "39", + "sell_upwards_trend_adx_strong_down_weight": "24", + "sell_upwards_trend_bollinger_bands_weight": "63", + "sell_upwards_trend_ema_long_death_cross_weight": "91", + "sell_upwards_trend_ema_short_death_cross_weight": "33", + "sell_upwards_trend_macd_weight": "97", + "sell_upwards_trend_rsi_weight": "61", + "sell_upwards_trend_sma_long_death_cross_weight": "23", + "sell_upwards_trend_sma_short_death_cross_weight": "55", + "sell_upwards_trend_vwap_cross_weight": "37", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.264, + "5": 0.2155, + "10": 0.167, + "15": 0.1185, + "20": 0.07, + "25": 0.06541, + "30": 0.06081, + "35": 0.05622, + "40": 0.05162, + "45": 0.04703, + "50": 0.04243, + "55": 0.03784, + "60": 0.02925, + "65": 0.018, + "70": 0.00675, + "75": 0 + } + + # Stoploss: + stoploss = -0.314 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.011 + trailing_stop_positive_offset = 0.031 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr219.log b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr219.log new file mode 100644 index 000000000..4e9e3bfb2 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr219.log @@ -0,0 +1,228 @@ +freqtrade hyperopt-show -n 219 +============================== +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+----------------+-------------------------| +| DOGE/USDT | 258 | 2.41 | 620.55 | 279.526 | 55.91 | 5:57:00 | 247 3 8 95.7 | +| HOT/USDT | 190 | 1.79 | 340.96 | 153.583 | 30.72 | 7:33:00 | 177 9 4 93.2 | +| BTT/USDT | 146 | 1.86 | 271.40 | 122.254 | 24.45 | 10:25:00 | 133 9 4 91.1 | +| TFUEL/USDT | 192 | 1.33 | 254.51 | 114.642 | 22.93 | 8:24:00 | 183 6 3 95.3 | +| WIN/USDT | 144 | 1.33 | 190.97 | 86.023 | 17.20 | 9:32:00 | 127 13 4 88.2 | +| XRP/USDT | 102 | 1.39 | 141.98 | 63.955 | 12.79 | 14:09:00 | 90 10 2 88.2 | +| UNI/USDT | 147 | 0.79 | 116.36 | 52.415 | 10.48 | 9:12:00 | 127 19 1 86.4 | +| XLM/USDT | 117 | 0.80 | 93.76 | 42.233 | 8.45 | 13:10:00 | 106 8 3 90.6 | +| MKR/USDT | 112 | 0.71 | 79.79 | 35.940 | 7.19 | 14:08:00 | 101 8 3 90.2 | +| ADA/USDT | 106 | 0.63 | 67.27 | 30.301 | 6.06 | 15:55:00 | 95 10 1 89.6 | +| ETH/USDT | 82 | 0.76 | 62.50 | 28.153 | 5.63 | 15:34:00 | 67 14 1 81.7 | +| TRX/USDT | 75 | 0.75 | 56.43 | 25.418 | 5.08 | 19:58:00 | 66 7 2 88.0 | +| ALGO/USDT | 105 | 0.53 | 55.66 | 25.073 | 5.01 | 15:12:00 | 89 14 2 84.8 | +| BTC/USDT | 72 | 0.61 | 43.79 | 19.727 | 3.95 | 18:46:00 | 59 12 1 81.9 | +| TOTAL | 1848 | 1.30 | 2395.92 | 1079.244 | 215.85 | 11:16:00 | 1667 142 39 90.2 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1653 | 1653 0 0 100 | 2.12 | 3496.94 | 1575.19 | 249.78 | +| roi | 152 | 10 142 0 100 | 0.04 | 5.8 | 2.613 | 0.41 | +| stop_loss | 26 | 0 0 26 0 | -34.93 | -908.19 | -409.093 | -64.87 | +| force_sell | 13 | 0 0 13 0 | -15.31 | -199.02 | -89.649 | -14.22 | +| MGM_unclogging_losing_trade | 4 | 4 0 0 100 | 0.1 | 0.4 | 0.179 | 0.03 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| TRX/USDT | 1 | -5.35 | -5.35 | -2.411 | -0.48 | 2 days, 9:00:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.83 | -9.83 | -4.429 | -0.89 | 1 day, 23:55:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.01 | -10.01 | -4.508 | -0.90 | 7 days, 6:25:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| WIN/USDT | 1 | -15.70 | -15.70 | -7.073 | -1.41 | 1 day, 14:45:00 | 0 0 1 0 | +| MKR/USDT | 1 | -16.72 | -16.72 | -7.532 | -1.51 | 19 days, 11:30:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -24.34 | -24.34 | -10.964 | -2.19 | 3 days, 17:00:00 | 0 0 1 0 | +| HOT/USDT | 1 | -24.51 | -24.51 | -11.041 | -2.21 | 18:15:00 | 0 0 1 0 | +| ADA/USDT | 1 | -30.10 | -30.10 | -13.557 | -2.71 | 16 days, 14:25:00 | 0 0 1 0 | +| TOTAL | 13 | -15.31 | -199.02 | -89.649 | -17.93 | 5 days, 22:34:00 | 0 0 13 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 1848 | +| Starting balance | 500.000 USDT | +| Final balance | 1579.244 USDT | +| Absolute profit | 1079.244 USDT | +| Total profit % | 215.85% | +| Trades per day | 24.97 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 83160.000 USDT | +| | | +| Best Pair | DOGE/USDT 620.55% | +| Worst Pair | BTC/USDT 43.79% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -34.93% | +| Best day | 188.670 USDT | +| Worst day | -110.140 USDT | +| Days win/draw/lose | 65 / 3 / 7 | +| Avg. Duration Winners | 6:21:00 | +| Avg. Duration Loser | 3 days, 23:00:00 | +| Zero Duration Trades | 34.31% (634) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 500.339 USDT | +| Max balance | 1668.894 USDT | +| Drawdown | 312.41% | +| Drawdown | 140.725 USDT | +| Drawdown high | 1072.205 USDT | +| Drawdown low | 931.480 USDT | +| Drawdown Start | 2021-02-22 03:40:00 | +| Drawdown End | 2021-02-23 09:05:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 219/1000: + 1848 trades. + 1667/142/39 Wins/Draws/Losses. + Avg profit 1.30%. + Median profit 1.02%. + Total profit 1079.24426152 USDT ( 215.85Σ%). + Avg duration 11:16:00 min. + Objective: -216125.88347 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "116", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "5", + "buy__sideways_trend_total_signal_needed": "418", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "2", + "buy__upwards_trend_total_signal_needed": "254", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "6", + "buy_downwards_trend_adx_strong_up_weight": "22", + "buy_downwards_trend_bollinger_bands_weight": "24", + "buy_downwards_trend_ema_long_golden_cross_weight": "13", + "buy_downwards_trend_ema_short_golden_cross_weight": "71", + "buy_downwards_trend_macd_weight": "42", + "buy_downwards_trend_sma_long_golden_cross_weight": "64", + "buy_downwards_trend_sma_short_golden_cross_weight": "72", + "buy_sideways_trend_bollinger_bands_weight": "39", + "buy_sideways_trend_ema_long_golden_cross_weight": "76", + "buy_sideways_trend_ema_short_golden_cross_weight": "66", + "buy_sideways_trend_macd_weight": "80", + "buy_sideways_trend_rsi_weight": "91", + "buy_sideways_trend_sma_long_golden_cross_weight": "14", + "buy_sideways_trend_vwap_cross_weight": "93", + "buy_upwards_trend_bollinger_bands_weight": "20", + "buy_upwards_trend_ema_long_golden_cross_weight": "68", + "buy_upwards_trend_ema_short_golden_cross_weight": "11", + "buy_upwards_trend_macd_weight": "83", + "buy_upwards_trend_rsi_weight": "22", + "buy_upwards_trend_sma_long_golden_cross_weight": "51", + "buy_upwards_trend_sma_short_golden_cross_weight": "56", + "buy_upwards_trend_vwap_cross_weight": "52", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy_downwards_trend_rsi_weight": 100, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "26", + "sell___unclogger_minimal_losing_trades_open": "4", + "sell___unclogger_open_trades_losing_percentage_needed": "49", + "sell___unclogger_trend_lookback_candles_window": "49", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "26", + "sell__downwards_trend_total_signal_needed": "126", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell__sideways_trend_total_signal_needed": "883", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "5", + "sell__upwards_trend_total_signal_needed": "610", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "3", + "sell_downwards_trend_adx_strong_down_weight": "36", + "sell_downwards_trend_bollinger_bands_weight": "52", + "sell_downwards_trend_ema_long_death_cross_weight": "90", + "sell_downwards_trend_ema_short_death_cross_weight": "93", + "sell_downwards_trend_macd_weight": "40", + "sell_downwards_trend_rsi_weight": "40", + "sell_downwards_trend_sma_long_death_cross_weight": "12", + "sell_downwards_trend_vwap_cross_weight": "89", + "sell_sideways_trend_ema_long_death_cross_weight": "59", + "sell_sideways_trend_ema_short_death_cross_weight": "20", + "sell_sideways_trend_macd_weight": "26", + "sell_sideways_trend_rsi_weight": "13", + "sell_sideways_trend_sma_long_death_cross_weight": "69", + "sell_sideways_trend_sma_short_death_cross_weight": "88", + "sell_sideways_trend_vwap_cross_weight": "41", + "sell_upwards_trend_adx_strong_down_weight": "16", + "sell_upwards_trend_bollinger_bands_weight": "69", + "sell_upwards_trend_ema_short_death_cross_weight": "34", + "sell_upwards_trend_rsi_weight": "55", + "sell_upwards_trend_sma_long_death_cross_weight": "14", + "sell_upwards_trend_sma_short_death_cross_weight": "46", + "sell_upwards_trend_vwap_cross_weight": "35", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 0, # value loaded from strategy + "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_long_death_cross_weight": 100, # value loaded from strategy + "sell_upwards_trend_macd_weight": 100, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.1, + "5": 0.08947, + "10": 0.07895, + "15": 0.06842, + "20": 0.05918, + "25": 0.0551, + "30": 0.05102, + "35": 0.04694, + "40": 0.04286, + "45": 0.03878, + "50": 0.03469, + "55": 0.03061, + "60": 0.02653, + "65": 0.02245, + "70": 0.01941, + "75": 0.01794, + "80": 0.01647, + "85": 0.015, + "90": 0.01353, + "95": 0.01206, + "100": 0.01059, + "105": 0.00912, + "110": 0.00765, + "115": 0.00618, + "120": 0.00471, + "125": 0.00324, + "130": 0.00176, + "135": 0.00029, + "140": 0 + } + + # Stoploss: + stoploss = -0.348 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.013 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr229.log b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr229.log new file mode 100644 index 000000000..5f6ea8e9b --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr229.log @@ -0,0 +1,217 @@ +freqtrade hyperopt-show -n 229 +============================== +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+----------------+-------------------------| +| DOGE/USDT | 280 | 2.43 | 681.31 | 306.894 | 61.38 | 5:25:00 | 269 3 8 96.1 | +| HOT/USDT | 211 | 1.67 | 352.64 | 158.845 | 31.77 | 6:34:00 | 200 7 4 94.8 | +| BTT/USDT | 176 | 1.69 | 297.17 | 133.861 | 26.77 | 7:47:00 | 161 11 4 91.5 | +| TFUEL/USDT | 216 | 1.20 | 258.28 | 116.342 | 23.27 | 7:27:00 | 207 6 3 95.8 | +| WIN/USDT | 166 | 1.10 | 183.41 | 82.616 | 16.52 | 7:53:00 | 151 11 4 91.0 | +| XRP/USDT | 140 | 1.07 | 149.15 | 67.185 | 13.44 | 8:49:00 | 125 12 3 89.3 | +| UNI/USDT | 169 | 0.68 | 115.21 | 51.897 | 10.38 | 7:08:00 | 148 20 1 87.6 | +| MKR/USDT | 147 | 0.67 | 98.82 | 44.512 | 8.90 | 10:02:00 | 136 8 3 92.5 | +| XLM/USDT | 141 | 0.69 | 97.10 | 43.741 | 8.75 | 10:39:00 | 129 9 3 91.5 | +| ETH/USDT | 94 | 0.57 | 53.22 | 23.974 | 4.79 | 13:20:00 | 80 13 1 85.1 | +| ALGO/USDT | 120 | 0.44 | 52.94 | 23.848 | 4.77 | 13:13:00 | 105 13 2 87.5 | +| TRX/USDT | 82 | 0.58 | 47.26 | 21.287 | 4.26 | 18:03:00 | 73 7 2 89.0 | +| BTC/USDT | 74 | 0.53 | 39.18 | 17.651 | 3.53 | 18:10:00 | 62 11 1 83.8 | +| ADA/USDT | 116 | 0.24 | 27.59 | 12.426 | 2.49 | 13:33:00 | 105 9 2 90.5 | +| TOTAL | 2132 | 1.15 | 2453.28 | 1105.078 | 221.02 | 9:18:00 | 1951 140 41 91.5 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1944 | 1944 0 0 100 | 1.85 | 3598.11 | 1620.77 | 257.01 | +| roi | 145 | 5 140 0 100 | 0.02 | 2.39 | 1.077 | 0.17 | +| stop_loss | 28 | 0 0 28 0 | -33.93 | -950.1 | -427.974 | -67.86 | +| force_sell | 13 | 0 0 13 0 | -15.2 | -197.6 | -89.01 | -14.11 | +| MGM_unclogging_losing_trade | 2 | 2 0 0 100 | 0.24 | 0.48 | 0.214 | 0.03 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| TRX/USDT | 1 | -6.13 | -6.13 | -2.759 | -0.55 | 2 days, 8:55:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.62 | -9.62 | -4.334 | -0.87 | 7 days, 0:00:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.01 | -10.01 | -4.508 | -0.90 | 7 days, 6:25:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| MKR/USDT | 1 | -14.51 | -14.51 | -6.535 | -1.31 | 12 days, 12:55:00 | 0 0 1 0 | +| WIN/USDT | 1 | -15.37 | -15.37 | -6.926 | -1.39 | 1 day, 13:45:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -24.34 | -24.34 | -10.964 | -2.19 | 3 days, 17:00:00 | 0 0 1 0 | +| HOT/USDT | 1 | -25.07 | -25.07 | -11.291 | -2.26 | 17:20:00 | 0 0 1 0 | +| ADA/USDT | 1 | -30.10 | -30.10 | -13.557 | -2.71 | 16 days, 14:25:00 | 0 0 1 0 | +| TOTAL | 13 | -15.20 | -197.60 | -89.010 | -17.80 | 5 days, 18:50:00 | 0 0 13 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 2132 | +| Starting balance | 500.000 USDT | +| Final balance | 1605.078 USDT | +| Absolute profit | 1105.078 USDT | +| Total profit % | 221.02% | +| Trades per day | 28.81 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 95940.000 USDT | +| | | +| Best Pair | DOGE/USDT 681.31% | +| Worst Pair | ADA/USDT 27.59% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -33.93% | +| Best day | 214.904 USDT | +| Worst day | -103.619 USDT | +| Days win/draw/lose | 65 / 1 / 9 | +| Avg. Duration Winners | 5:09:00 | +| Avg. Duration Loser | 4 days, 1:54:00 | +| Zero Duration Trades | 38.60% (823) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 500.339 USDT | +| Max balance | 1694.088 USDT | +| Drawdown | 302.89% | +| Drawdown | 136.436 USDT | +| Drawdown high | 1081.176 USDT | +| Drawdown low | 944.740 USDT | +| Drawdown Start | 2021-02-22 08:20:00 | +| Drawdown End | 2021-02-23 09:00:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 229/1000: + 2132 trades. + 1951/140/41 Wins/Draws/Losses. + Avg profit 1.15%. + Median profit 0.83%. + Total profit 1105.07782826 USDT ( 221.02Σ%). + Avg duration 9:18:00 min. + Objective: -224499.99511 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "123", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "buy__sideways_trend_total_signal_needed": "416", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "buy__upwards_trend_total_signal_needed": "239", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "6", + "buy_downwards_trend_adx_strong_up_weight": "25", + "buy_downwards_trend_bollinger_bands_weight": "18", + "buy_downwards_trend_ema_long_golden_cross_weight": "18", + "buy_downwards_trend_ema_short_golden_cross_weight": "54", + "buy_downwards_trend_macd_weight": "49", + "buy_downwards_trend_sma_long_golden_cross_weight": "73", + "buy_downwards_trend_sma_short_golden_cross_weight": "76", + "buy_sideways_trend_bollinger_bands_weight": "49", + "buy_sideways_trend_ema_long_golden_cross_weight": "91", + "buy_sideways_trend_ema_short_golden_cross_weight": "85", + "buy_sideways_trend_macd_weight": "77", + "buy_sideways_trend_rsi_weight": "91", + "buy_sideways_trend_sma_long_golden_cross_weight": "26", + "buy_sideways_trend_vwap_cross_weight": "93", + "buy_upwards_trend_bollinger_bands_weight": "31", + "buy_upwards_trend_ema_long_golden_cross_weight": "69", + "buy_upwards_trend_ema_short_golden_cross_weight": "26", + "buy_upwards_trend_macd_weight": "77", + "buy_upwards_trend_rsi_weight": "25", + "buy_upwards_trend_sma_long_golden_cross_weight": "56", + "buy_upwards_trend_sma_short_golden_cross_weight": "50", + "buy_upwards_trend_vwap_cross_weight": "41", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy_downwards_trend_rsi_weight": 100, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "23", + "sell___unclogger_minimal_losing_trades_open": "5", + "sell___unclogger_open_trades_losing_percentage_needed": "58", + "sell___unclogger_trend_lookback_candles_window": "48", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "19", + "sell__downwards_trend_total_signal_needed": "112", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "5", + "sell__sideways_trend_total_signal_needed": "886", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "sell__upwards_trend_total_signal_needed": "600", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "3", + "sell_downwards_trend_adx_strong_down_weight": "46", + "sell_downwards_trend_bollinger_bands_weight": "55", + "sell_downwards_trend_ema_long_death_cross_weight": "85", + "sell_downwards_trend_ema_short_death_cross_weight": "91", + "sell_downwards_trend_macd_weight": "33", + "sell_downwards_trend_rsi_weight": "40", + "sell_downwards_trend_sma_long_death_cross_weight": "22", + "sell_downwards_trend_vwap_cross_weight": "75", + "sell_sideways_trend_ema_long_death_cross_weight": "44", + "sell_sideways_trend_ema_short_death_cross_weight": "13", + "sell_sideways_trend_macd_weight": "31", + "sell_sideways_trend_rsi_weight": "23", + "sell_sideways_trend_sma_long_death_cross_weight": "62", + "sell_sideways_trend_sma_short_death_cross_weight": "84", + "sell_sideways_trend_vwap_cross_weight": "41", + "sell_upwards_trend_adx_strong_down_weight": "30", + "sell_upwards_trend_bollinger_bands_weight": "56", + "sell_upwards_trend_ema_short_death_cross_weight": "40", + "sell_upwards_trend_rsi_weight": "65", + "sell_upwards_trend_sma_long_death_cross_weight": "15", + "sell_upwards_trend_sma_short_death_cross_weight": "61", + "sell_upwards_trend_vwap_cross_weight": "44", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 0, # value loaded from strategy + "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_long_death_cross_weight": 100, # value loaded from strategy + "sell_upwards_trend_macd_weight": 100, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.177, + "5": 0.1591, + "10": 0.14119, + "15": 0.12329, + "20": 0.10539, + "25": 0.08748, + "30": 0.06958, + "35": 0.05912, + "40": 0.05052, + "45": 0.04192, + "50": 0.03332, + "55": 0.02472, + "60": 0.01932, + "65": 0.01472, + "70": 0.01012, + "75": 0.00552, + "80": 0.00092, + "85": 0 + } + + # Stoploss: + stoploss = -0.338 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = False diff --git a/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr437.log b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr437.log new file mode 100644 index 000000000..026bd797e --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr437.log @@ -0,0 +1,236 @@ +freqtrade hyperopt-show -n 437 +============================== +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+----------------+-------------------------| +| DOGE/USDT | 280 | 2.42 | 677.53 | 305.193 | 61.04 | 5:25:00 | 270 2 8 96.4 | +| HOT/USDT | 211 | 1.67 | 351.87 | 158.500 | 31.70 | 6:35:00 | 201 6 4 95.3 | +| BTT/USDT | 177 | 1.67 | 296.14 | 133.396 | 26.68 | 7:45:00 | 162 11 4 91.5 | +| TFUEL/USDT | 216 | 1.19 | 256.34 | 115.467 | 23.09 | 7:28:00 | 207 6 3 95.8 | +| WIN/USDT | 166 | 1.15 | 190.20 | 85.677 | 17.14 | 7:55:00 | 152 10 4 91.6 | +| XRP/USDT | 141 | 1.05 | 147.69 | 66.526 | 13.31 | 9:03:00 | 125 13 3 88.7 | +| UNI/USDT | 173 | 0.68 | 117.66 | 53.002 | 10.60 | 7:00:00 | 153 19 1 88.4 | +| MKR/USDT | 148 | 0.67 | 99.16 | 44.667 | 8.93 | 9:58:00 | 137 8 3 92.6 | +| XLM/USDT | 137 | 0.65 | 89.15 | 40.156 | 8.03 | 11:14:00 | 126 8 3 92.0 | +| ADA/USDT | 117 | 0.53 | 61.94 | 27.899 | 5.58 | 14:25:00 | 106 10 1 90.6 | +| ETH/USDT | 94 | 0.58 | 54.67 | 24.627 | 4.93 | 13:27:00 | 80 13 1 85.1 | +| ALGO/USDT | 117 | 0.45 | 53.04 | 23.893 | 4.78 | 13:34:00 | 102 13 2 87.2 | +| TRX/USDT | 78 | 0.56 | 43.32 | 19.512 | 3.90 | 18:58:00 | 68 8 2 87.2 | +| BTC/USDT | 71 | 0.49 | 35.11 | 15.814 | 3.16 | 18:48:00 | 60 10 1 84.5 | +| TOTAL | 2126 | 1.16 | 2473.81 | 1114.329 | 222.87 | 9:26:00 | 1949 137 40 91.7 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1934 | 1934 0 0 100 | 1.86 | 3596.57 | 1620.08 | 256.9 | +| roi | 145 | 8 137 0 100 | 0.04 | 5.43 | 2.446 | 0.39 | +| stop_loss | 27 | 0 0 27 0 | -34.53 | -932.34 | -419.972 | -66.6 | +| force_sell | 13 | 0 0 13 0 | -15.2 | -197.6 | -89.01 | -14.11 | +| MGM_unclogging_losing_trade | 5 | 5 0 0 100 | 0.2 | 1.02 | 0.459 | 0.07 | +| sell_signal | 2 | 2 0 0 100 | 0.37 | 0.73 | 0.329 | 0.05 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| TRX/USDT | 1 | -6.13 | -6.13 | -2.759 | -0.55 | 2 days, 8:55:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.62 | -9.62 | -4.334 | -0.87 | 7 days, 0:00:00 | 0 0 1 0 | +| XRP/USDT | 1 | -10.01 | -10.01 | -4.508 | -0.90 | 7 days, 6:25:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| MKR/USDT | 1 | -14.51 | -14.51 | -6.535 | -1.31 | 12 days, 12:55:00 | 0 0 1 0 | +| WIN/USDT | 1 | -15.37 | -15.37 | -6.926 | -1.39 | 1 day, 13:45:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.65 | -17.65 | -7.950 | -1.59 | 16 days, 11:05:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -24.34 | -24.34 | -10.964 | -2.19 | 3 days, 17:00:00 | 0 0 1 0 | +| HOT/USDT | 1 | -25.07 | -25.07 | -11.291 | -2.26 | 17:20:00 | 0 0 1 0 | +| ADA/USDT | 1 | -30.10 | -30.10 | -13.557 | -2.71 | 16 days, 14:25:00 | 0 0 1 0 | +| TOTAL | 13 | -15.20 | -197.60 | -89.010 | -17.80 | 5 days, 18:50:00 | 0 0 13 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 2126 | +| Starting balance | 500.000 USDT | +| Final balance | 1614.329 USDT | +| Absolute profit | 1114.329 USDT | +| Total profit % | 222.87% | +| Trades per day | 28.73 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 95670.000 USDT | +| | | +| Best Pair | DOGE/USDT 677.53% | +| Worst Pair | BTC/USDT 35.11% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -34.53% | +| Best day | 214.364 USDT | +| Worst day | -105.200 USDT | +| Days win/draw/lose | 65 / 1 / 9 | +| Avg. Duration Winners | 5:09:00 | +| Avg. Duration Loser | 4 days, 3:29:00 | +| Zero Duration Trades | 38.71% (823) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 501.491 USDT | +| Max balance | 1703.339 USDT | +| Drawdown | 308.73% | +| Drawdown | 139.068 USDT | +| Drawdown high | 1095.631 USDT | +| Drawdown low | 956.563 USDT | +| Drawdown Start | 2021-02-22 03:40:00 | +| Drawdown End | 2021-02-23 09:00:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 437/1000: + 2126 trades. + 1949/137/40 Wins/Draws/Losses. + Avg profit 1.16%. + Median profit 0.84%. + Total profit 1114.32916788 USDT ( 222.87Σ%). + Avg duration 9:26:00 min. + Objective: -226785.60306 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "127", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "buy__sideways_trend_total_signal_needed": "420", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "4", + "buy__upwards_trend_total_signal_needed": "239", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "5", + "buy_downwards_trend_adx_strong_up_weight": "22", + "buy_downwards_trend_bollinger_bands_weight": "22", + "buy_downwards_trend_ema_long_golden_cross_weight": "13", + "buy_downwards_trend_ema_short_golden_cross_weight": "58", + "buy_downwards_trend_macd_weight": "44", + "buy_downwards_trend_sma_long_golden_cross_weight": "75", + "buy_downwards_trend_sma_short_golden_cross_weight": "64", + "buy_sideways_trend_bollinger_bands_weight": "55", + "buy_sideways_trend_ema_long_golden_cross_weight": "90", + "buy_sideways_trend_ema_short_golden_cross_weight": "76", + "buy_sideways_trend_macd_weight": "93", + "buy_sideways_trend_rsi_weight": "86", + "buy_sideways_trend_sma_long_golden_cross_weight": "9", + "buy_sideways_trend_vwap_cross_weight": "78", + "buy_upwards_trend_bollinger_bands_weight": "28", + "buy_upwards_trend_ema_long_golden_cross_weight": "68", + "buy_upwards_trend_ema_short_golden_cross_weight": "27", + "buy_upwards_trend_macd_weight": "83", + "buy_upwards_trend_rsi_weight": "12", + "buy_upwards_trend_sma_long_golden_cross_weight": "51", + "buy_upwards_trend_sma_short_golden_cross_weight": "57", + "buy_upwards_trend_vwap_cross_weight": "52", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy_downwards_trend_rsi_weight": 100, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "37", + "sell___unclogger_minimal_losing_trades_open": "5", + "sell___unclogger_open_trades_losing_percentage_needed": "47", + "sell___unclogger_trend_lookback_candles_window": "56", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "32", + "sell__downwards_trend_total_signal_needed": "123", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "5", + "sell__sideways_trend_total_signal_needed": "870", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "sell__upwards_trend_total_signal_needed": "608", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell_downwards_trend_adx_strong_down_weight": "43", + "sell_downwards_trend_bollinger_bands_weight": "64", + "sell_downwards_trend_ema_long_death_cross_weight": "90", + "sell_downwards_trend_ema_short_death_cross_weight": "88", + "sell_downwards_trend_macd_weight": "36", + "sell_downwards_trend_rsi_weight": "38", + "sell_downwards_trend_sma_long_death_cross_weight": "21", + "sell_downwards_trend_vwap_cross_weight": "71", + "sell_sideways_trend_ema_long_death_cross_weight": "59", + "sell_sideways_trend_ema_short_death_cross_weight": "12", + "sell_sideways_trend_macd_weight": "23", + "sell_sideways_trend_rsi_weight": "20", + "sell_sideways_trend_sma_long_death_cross_weight": "60", + "sell_sideways_trend_sma_short_death_cross_weight": "89", + "sell_sideways_trend_vwap_cross_weight": "29", + "sell_upwards_trend_adx_strong_down_weight": "19", + "sell_upwards_trend_bollinger_bands_weight": "61", + "sell_upwards_trend_ema_short_death_cross_weight": "41", + "sell_upwards_trend_rsi_weight": "70", + "sell_upwards_trend_sma_long_death_cross_weight": "17", + "sell_upwards_trend_sma_short_death_cross_weight": "61", + "sell_upwards_trend_vwap_cross_weight": "41", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 0, # value loaded from strategy + "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_long_death_cross_weight": 100, # value loaded from strategy + "sell_upwards_trend_macd_weight": 100, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.171, + "5": 0.15531, + "10": 0.13961, + "15": 0.12392, + "20": 0.10822, + "25": 0.09253, + "30": 0.07683, + "35": 0.06114, + "40": 0.05487, + "45": 0.05096, + "50": 0.04704, + "55": 0.04313, + "60": 0.03922, + "65": 0.0353, + "70": 0.03139, + "75": 0.02748, + "80": 0.02357, + "85": 0.02127, + "90": 0.02004, + "95": 0.01882, + "100": 0.0176, + "105": 0.01638, + "110": 0.01516, + "115": 0.01393, + "120": 0.01271, + "125": 0.01149, + "130": 0.01027, + "135": 0.00904, + "140": 0.00782, + "145": 0.0066, + "150": 0.00538, + "155": 0.00416, + "160": 0.00293, + "165": 0.00171, + "170": 0.00049, + "175": 0 + } + + # Stoploss: + stoploss = -0.344 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True diff --git a/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr97.log b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr97.log new file mode 100644 index 000000000..76eebdf06 --- /dev/null +++ b/Some Test Results/v0.11.0/BackTestResults7_Pt2-27-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea_nr97.log @@ -0,0 +1,222 @@ +freqtrade hyperopt-show -n 97 +============================= +Result for strategy MoniGoManiHyperStrategy +=========================================================== BACKTESTING REPORT =========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-----------------+-------------------------| +| DOGE/USDT | 185 | 3.04 | 561.68 | 253.010 | 50.60 | 8:41:00 | 174 2 9 94.1 | +| HOT/USDT | 131 | 2.48 | 325.45 | 146.598 | 29.32 | 12:37:00 | 122 5 4 93.1 | +| BTT/USDT | 99 | 2.75 | 272.16 | 122.593 | 24.52 | 16:15:00 | 88 7 4 88.9 | +| TFUEL/USDT | 136 | 1.81 | 246.63 | 111.096 | 22.22 | 11:59:00 | 125 7 4 91.9 | +| WIN/USDT | 111 | 1.91 | 211.83 | 95.419 | 19.08 | 12:10:00 | 91 16 4 82.0 | +| UNI/USDT | 118 | 1.41 | 165.85 | 74.707 | 14.94 | 10:40:00 | 93 23 2 78.8 | +| XRP/USDT | 83 | 1.37 | 113.85 | 51.282 | 10.26 | 19:03:00 | 70 10 3 84.3 | +| MKR/USDT | 85 | 1.23 | 104.43 | 47.041 | 9.41 | 18:43:00 | 73 9 3 85.9 | +| XLM/USDT | 83 | 1.24 | 102.93 | 46.367 | 9.27 | 19:21:00 | 72 8 3 86.7 | +| ADA/USDT | 79 | 0.94 | 73.93 | 33.301 | 6.66 | 18:23:00 | 64 13 2 81.0 | +| ALGO/USDT | 92 | 0.72 | 66.37 | 29.898 | 5.98 | 15:51:00 | 69 20 3 75.0 | +| TRX/USDT | 53 | 1.01 | 53.49 | 24.094 | 4.82 | 1 day, 4:34:00 | 41 10 2 77.4 | +| ETH/USDT | 57 | 0.69 | 39.09 | 17.609 | 3.52 | 1 day, 1:28:00 | 43 12 2 75.4 | +| BTC/USDT | 31 | 1.05 | 32.50 | 14.640 | 2.93 | 2 days, 3:36:00 | 22 8 1 71.0 | +| TOTAL | 1343 | 1.76 | 2370.19 | 1067.654 | 213.53 | 15:54:00 | 1147 150 46 85.4 | +============================================================ SELL REASON STATS ============================================================ +| Sell Reason | Sells | Win Draws Loss Win% | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | +|-----------------------------+---------+--------------------------+----------------+----------------+-------------------+----------------| +| trailing_stop_loss | 1125 | 1125 0 0 100 | 3.22 | 3622.14 | 1631.59 | 258.72 | +| roi | 170 | 20 150 0 100 | 0.13 | 22.19 | 9.994 | 1.58 | +| stop_loss | 32 | 0 0 32 0 | -33.53 | -1073.06 | -483.359 | -76.65 | +| force_sell | 14 | 0 0 14 0 | -14.44 | -202.12 | -91.044 | -14.44 | +| MGM_unclogging_losing_trade | 2 | 2 0 0 100 | 0.52 | 1.05 | 0.472 | 0.07 | +========================================================= LEFT OPEN TRADES REPORT ========================================================== +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit USDT | Tot Profit % | Avg Duration | Win Draw Loss Win% | +|------------+--------+----------------+----------------+-------------------+----------------+-------------------+-------------------------| +| UNI/USDT | 1 | -0.62 | -0.62 | -0.280 | -0.06 | 2:20:00 | 0 0 1 0 | +| TRX/USDT | 1 | -5.35 | -5.35 | -2.411 | -0.48 | 2 days, 9:00:00 | 0 0 1 0 | +| ETH/USDT | 1 | -7.14 | -7.14 | -3.218 | -0.64 | 2 days, 2:50:00 | 0 0 1 0 | +| BTC/USDT | 1 | -8.94 | -8.94 | -4.026 | -0.81 | 2 days, 2:40:00 | 0 0 1 0 | +| DOGE/USDT | 1 | -9.62 | -9.62 | -4.334 | -0.87 | 7 days, 0:00:00 | 0 0 1 0 | +| ALGO/USDT | 1 | -10.98 | -10.98 | -4.945 | -0.99 | 8:35:00 | 0 0 1 0 | +| XRP/USDT | 1 | -12.54 | -12.54 | -5.649 | -1.13 | 19 days, 20:10:00 | 0 0 1 0 | +| WIN/USDT | 1 | -16.86 | -16.86 | -7.596 | -1.52 | 1 day, 14:55:00 | 0 0 1 0 | +| MKR/USDT | 1 | -16.93 | -16.93 | -7.626 | -1.53 | 19 days, 14:25:00 | 0 0 1 0 | +| XLM/USDT | 1 | -17.26 | -17.26 | -7.774 | -1.55 | 16 days, 11:00:00 | 0 0 1 0 | +| BTT/USDT | 1 | -17.75 | -17.75 | -7.997 | -1.60 | 2 days, 8:55:00 | 0 0 1 0 | +| TFUEL/USDT | 1 | -23.52 | -23.52 | -10.593 | -2.12 | 3 days, 17:05:00 | 0 0 1 0 | +| HOT/USDT | 1 | -24.51 | -24.51 | -11.041 | -2.21 | 18:15:00 | 0 0 1 0 | +| ADA/USDT | 1 | -30.10 | -30.10 | -13.557 | -2.71 | 16 days, 14:25:00 | 0 0 1 0 | +| TOTAL | 14 | -14.44 | -202.12 | -91.044 | -18.21 | 6 days, 18:54:00 | 0 0 14 0 | +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2021-01-01 00:00:00 | +| Backtesting to | 2021-03-16 00:00:00 | +| Max open trades | 14 | +| | | +| Total trades | 1343 | +| Starting balance | 500.000 USDT | +| Final balance | 1567.654 USDT | +| Absolute profit | 1067.654 USDT | +| Total profit % | 213.53% | +| Trades per day | 18.15 | +| Avg. stake amount | 45.000 USDT | +| Total trade volume | 60435.000 USDT | +| | | +| Best Pair | DOGE/USDT 561.68% | +| Worst Pair | BTC/USDT 32.5% | +| Best trade | BTT/USDT 42.44% | +| Worst trade | DOGE/USDT -33.53% | +| Best day | 172.116 USDT | +| Worst day | -107.145 USDT | +| Days win/draw/lose | 61 / 4 / 10 | +| Avg. Duration Winners | 8:41:00 | +| Avg. Duration Loser | 4 days, 3:14:00 | +| Zero Duration Trades | 23.83% (320) | +| Rejected Buy signals | 0 | +| | | +| Min balance | 500.687 USDT | +| Max balance | 1658.698 USDT | +| Drawdown | 315.16% | +| Drawdown | 141.962 USDT | +| Drawdown high | 1060.079 USDT | +| Drawdown low | 918.117 USDT | +| Drawdown Start | 2021-02-22 03:40:00 | +| Drawdown End | 2021-02-23 09:10:00 | +| Market change | 0% | +=============================================== + + +Epoch details: + + 97/1000: + 1343 trades. + 1147/150/46 Wins/Draws/Losses. + Avg profit 1.76%. + Median profit 1.99%. + Total profit 1067.65394908 USDT ( 213.53Σ%). + Avg duration 15:54:00 min. + Objective: -202428.34360 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": "123", + "buy__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "buy__sideways_trend_total_signal_needed": "423", + "buy__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "buy__upwards_trend_total_signal_needed": "255", + "buy__upwards_trend_total_signal_needed_candles_lookback_window": "4", + "buy_downwards_trend_adx_strong_up_weight": "9", + "buy_downwards_trend_bollinger_bands_weight": "23", + "buy_downwards_trend_ema_long_golden_cross_weight": "2", + "buy_downwards_trend_ema_short_golden_cross_weight": "70", + "buy_downwards_trend_macd_weight": "47", + "buy_downwards_trend_sma_long_golden_cross_weight": "77", + "buy_downwards_trend_sma_short_golden_cross_weight": "60", + "buy_sideways_trend_bollinger_bands_weight": "45", + "buy_sideways_trend_ema_long_golden_cross_weight": "85", + "buy_sideways_trend_ema_short_golden_cross_weight": "68", + "buy_sideways_trend_macd_weight": "80", + "buy_sideways_trend_rsi_weight": "81", + "buy_sideways_trend_sma_long_golden_cross_weight": "25", + "buy_sideways_trend_vwap_cross_weight": "87", + "buy_upwards_trend_bollinger_bands_weight": "18", + "buy_upwards_trend_ema_long_golden_cross_weight": "59", + "buy_upwards_trend_ema_short_golden_cross_weight": "13", + "buy_upwards_trend_macd_weight": "83", + "buy_upwards_trend_rsi_weight": "9", + "buy_upwards_trend_sma_long_golden_cross_weight": "59", + "buy_upwards_trend_sma_short_golden_cross_weight": "66", + "buy_upwards_trend_vwap_cross_weight": "52", + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy_downwards_trend_rsi_weight": 100, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": "41", + "sell___unclogger_minimal_losing_trades_open": "3", + "sell___unclogger_open_trades_losing_percentage_needed": "59", + "sell___unclogger_trend_lookback_candles_window": "55", + "sell___unclogger_trend_lookback_candles_window_percentage_needed": "26", + "sell__downwards_trend_total_signal_needed": "129", + "sell__downwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell__sideways_trend_total_signal_needed": "884", + "sell__sideways_trend_total_signal_needed_candles_lookback_window": "3", + "sell__upwards_trend_total_signal_needed": "596", + "sell__upwards_trend_total_signal_needed_candles_lookback_window": "4", + "sell_downwards_trend_adx_strong_down_weight": "30", + "sell_downwards_trend_bollinger_bands_weight": "66", + "sell_downwards_trend_ema_long_death_cross_weight": "75", + "sell_downwards_trend_ema_short_death_cross_weight": "77", + "sell_downwards_trend_macd_weight": "27", + "sell_downwards_trend_rsi_weight": "41", + "sell_downwards_trend_sma_long_death_cross_weight": "19", + "sell_downwards_trend_vwap_cross_weight": "89", + "sell_sideways_trend_ema_long_death_cross_weight": "47", + "sell_sideways_trend_ema_short_death_cross_weight": "26", + "sell_sideways_trend_macd_weight": "20", + "sell_sideways_trend_rsi_weight": "30", + "sell_sideways_trend_sma_long_death_cross_weight": "60", + "sell_sideways_trend_sma_short_death_cross_weight": "72", + "sell_sideways_trend_vwap_cross_weight": "35", + "sell_upwards_trend_adx_strong_down_weight": "17", + "sell_upwards_trend_bollinger_bands_weight": "53", + "sell_upwards_trend_ema_short_death_cross_weight": "41", + "sell_upwards_trend_rsi_weight": "69", + "sell_upwards_trend_sma_long_death_cross_weight": "15", + "sell_upwards_trend_sma_short_death_cross_weight": "46", + "sell_upwards_trend_vwap_cross_weight": "33", + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 0, # value loaded from strategy + "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_long_death_cross_weight": 100, # value loaded from strategy + "sell_upwards_trend_macd_weight": 100, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.209, + "5": 0.18759, + "10": 0.16619, + "15": 0.14478, + "20": 0.12338, + "25": 0.10197, + "30": 0.08056, + "35": 0.0595, + "40": 0.03867, + "45": 0.02163, + "50": 0.01976, + "55": 0.0179, + "60": 0.01603, + "65": 0.01417, + "70": 0.01231, + "75": 0.01044, + "80": 0.00858, + "85": 0.00671, + "90": 0.00485, + "95": 0.00298, + "100": 0.00112, + "105": 0 + } + + # Stoploss: + stoploss = -0.334 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.023 + trailing_only_offset_is_reached = False \ No newline at end of file diff --git a/Some Test Results/v0.11.0/HyperOptResults7_Pt1-24-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log b/Some Test Results/v0.11.0/HyperOptResults7_Pt1-24-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log new file mode 100644 index 000000000..729df133c --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults7_Pt1-24-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log @@ -0,0 +1,284 @@ +freqtrade hyperopt -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +================================================================================================================================================================================================================= +INFO - Using config: ./user_data/mgm-config.json ... +INFO - Using config: ./user_data/mgm-config-private.json ... + +INFO - No params for buy found, using default values. +INFO - Strategy Parameter(default): buy___trades_when_downwards = True +INFO - Strategy Parameter(default): buy___trades_when_sideways = False +INFO - Strategy Parameter(default): buy___trades_when_upwards = True +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): buy__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): buy_downwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_adx_strong_up_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_ema_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_long_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_sma_short_golden_cross_weight = 50 +INFO - Strategy Parameter(default): buy_upwards_trend_vwap_cross_weight = 50 +INFO - No params for sell found, using default values. +INFO - Strategy Parameter(default): sell___trades_when_downwards = True +INFO - Strategy Parameter(default): sell___trades_when_sideways = False +INFO - Strategy Parameter(default): sell___trades_when_upwards = True +INFO - Strategy Parameter(default): sell___unclogger_enabled = True +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trade_duration_minutes = 37 +INFO - Strategy Parameter(default): sell___unclogger_minimal_losing_trades_open = 3 +INFO - Strategy Parameter(default): sell___unclogger_open_trades_losing_percentage_needed = 30 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window = 35 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_downwards_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_sideways_candles = True +INFO - Strategy Parameter(default): sell___unclogger_trend_lookback_window_uses_upwards_candles = False +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__downwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed = 465 +INFO - Strategy Parameter(default): sell__upwards_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter(default): sell_downwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_downwards_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_sideways_trend_vwap_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_adx_strong_down_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_bollinger_bands_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_ema_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_macd_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_rsi_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_long_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_sma_short_death_cross_weight = 50 +INFO - Strategy Parameter(default): sell_upwards_trend_vwap_cross_weight = 50 + +INFO - Override strategy 'order_types' with value in config file: {'buy': 'limit', 'sell': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False}. +INFO - Override strategy 'order_time_in_force' with value in config file: {'buy': 'gtc', 'sell': 'gtc'}. +INFO - Override strategy 'stake_currency' with value in config file: USDT. +INFO - Override strategy 'stake_amount' with value in config file: 45. +INFO - Override strategy 'unfilledtimeout' with value in config file: {'buy': 10, 'sell': 30, 'unit': 'minutes'}. +INFO - Override strategy 'use_sell_signal' with value in config file: True. +INFO - Override strategy 'sell_profit_only' with value in config file: True. +INFO - Override strategy 'ignore_roi_if_buy_signal' with value in config file: True. +INFO - Strategy using minimal_roi: {'0': 10.0} +INFO - Strategy using timeframe: 5m +INFO - Strategy using stoploss: -0.25 +INFO - Strategy using trailing_stop: True +INFO - Strategy using trailing_stop_positive: 0.01 +INFO - Strategy using trailing_stop_positive_offset: 0.03 +INFO - Strategy using trailing_only_offset_is_reached: True +INFO - Strategy using use_custom_stoploss: True +INFO - Strategy using process_only_new_candles: False +INFO - Strategy using startup_candle_count: 4800 +INFO - Strategy using sell_profit_offset: 0.0 +INFO - Strategy using disable_dataframe_checks: False +INFO - Strategy using ignore_buying_expired_candle_after: 0 +INFO - Using optimizer random state: 18653 +INFO - Min roi table: {0: 0.03, 5: 0.025, 10: 0.02, 15: 0.015, 20: 0.01, 25: 0.005, 30: 0} +INFO - Max roi table: {0: 0.31, 5: 0.285, 10: 0.26, 15: 0.235, 20: 0.21, 25: 0.185, 30: 0.16, 35: 0.135, 40: 0.11, 45: 0.104, 50: 0.098, 55: 0.093, 60: 0.087, 65: 0.081, 70: 0.075, 75: 0.069, 80: 0.063, 85: 0.058, 90: 0.052, 95: 0.046, 100: 0.04, 105: 0.038, 110: 0.037, 115: 0.035, 120: 0.033, 125: 0.032, 130: 0.03, 135: 0.028, 140: 0.027, 145: 0.025, 150: 0.023, 155: 0.022, 160: 0.02, 165: 0.018, 170: 0.017, 175: 0.015, 180: 0.013, 185: 0.012, 190: 0.01, 195: 0.008, 200: 0.007, 205: 0.005, 210: 0.003, 215: 0.002, 220: 0} +INFO - Using indicator startup period: 4800 ... +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 263 | 179 54 30 | 1.55% | 183.887 USDT (36.78%) | 0 days 21:04:00 | -27,784.48441 | +| * Best | 3/1000 | 501 | 233 209 59 | 1.64% | 371.104 USDT (74.22%) | 0 days 17:59:00 | -38,314.83527 | +| * Best | 8/1000 | 1084 | 551 231 302 | 0.79% | 387.086 USDT (77.42%) | 0 days 12:25:00 | -43,680.06697 | +| * Best | 9/1000 | 658 | 345 205 108 | 1.51% | 448.350 USDT (89.67%) | 0 days 15:37:00 | -52,187.12680 | +| * Best | 14/1000 | 679 | 408 229 42 | 2.42% | 741.019 USDT (148.20%) | 0 days 21:01:00 | -98,849.26164 | +| Best | 62/1000 | 367 | 216 123 28 | 5.22% | 862.253 USDT (172.45%) | 1 days 19:54:00 | -112,661.61718 | +| Best | 64/1000 | 892 | 631 210 51 | 2.13% | 857.191 USDT (171.44%) | 0 days 23:03:00 | -134,615.61566 | +| Best | 141/1000 | 1684 | 1391 254 39 | 1.09% | 824.007 USDT (164.80%) | 0 days 10:07:00 | -151,101.70056 | +| Best | 162/1000 | 1087 | 888 151 48 | 2.04% | 999.044 USDT (199.81%) | 0 days 17:57:00 | -181,184.73689 | +| Best | 273/1000 | 1852 | 1630 151 71 | 1.27% | 1056.911 USDT (211.38%) | 0 days 11:44:00 | -206,508.67299 | +| Best | 316/1000 | 1608 | 1424 144 40 | 1.51% | 1094.790 USDT (218.96%) | 0 days 13:35:00 | -215,232.71155 | +| Best | 424/1000 | 2760 | 2546 141 73 | 0.93% | 1153.768 USDT (230.75%) | 0 days 07:58:00 | -236,276.93179 | + +Elapsed Time: 4:25:56 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Rikj000/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-24_23-23-25.fthypt'. + +Best result: + + 424/1000: + 2760 trades. + 2546/141/73 Wins/Draws/Losses. + Avg profit 0.93%. + Median profit 0.82%. + Total profit 1153.76830436 USDT ( 230.75Σ%). + Avg duration 7:58:00 min. + Objective: -236276.93179 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 141, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 4, + "buy__sideways_trend_total_signal_needed": 887, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 2, + "buy__upwards_trend_total_signal_needed": 49, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 69, + "buy_downwards_trend_bollinger_bands_weight": 29, + "buy_downwards_trend_ema_long_golden_cross_weight": 82, + "buy_downwards_trend_ema_short_golden_cross_weight": 38, + "buy_downwards_trend_macd_weight": 46, + "buy_downwards_trend_rsi_weight": 91, + "buy_downwards_trend_sma_long_golden_cross_weight": 53, + "buy_downwards_trend_sma_short_golden_cross_weight": 48, + "buy_downwards_trend_vwap_cross_weight": 62, + "buy_sideways_trend_adx_strong_up_weight": 56, + "buy_sideways_trend_bollinger_bands_weight": 57, + "buy_sideways_trend_ema_long_golden_cross_weight": 92, + "buy_sideways_trend_ema_short_golden_cross_weight": 38, + "buy_sideways_trend_macd_weight": 31, + "buy_sideways_trend_rsi_weight": 81, + "buy_sideways_trend_sma_long_golden_cross_weight": 1, + "buy_sideways_trend_sma_short_golden_cross_weight": 87, + "buy_sideways_trend_vwap_cross_weight": 98, + "buy_upwards_trend_adx_strong_up_weight": 75, + "buy_upwards_trend_bollinger_bands_weight": 29, + "buy_upwards_trend_ema_long_golden_cross_weight": 0, + "buy_upwards_trend_ema_short_golden_cross_weight": 35, + "buy_upwards_trend_macd_weight": 81, + "buy_upwards_trend_rsi_weight": 70, + "buy_upwards_trend_sma_long_golden_cross_weight": 31, + "buy_upwards_trend_sma_short_golden_cross_weight": 43, + "buy_upwards_trend_vwap_cross_weight": 18, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 16, + "sell___unclogger_minimal_losing_trades_open": 2, + "sell___unclogger_open_trades_losing_percentage_needed": 60, + "sell___unclogger_trend_lookback_candles_window": 10, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 21, + "sell__downwards_trend_total_signal_needed": 858, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, + "sell__sideways_trend_total_signal_needed": 65, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 3, + "sell__upwards_trend_total_signal_needed": 356, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 4, + "sell_downwards_trend_adx_strong_down_weight": 73, + "sell_downwards_trend_bollinger_bands_weight": 81, + "sell_downwards_trend_ema_long_death_cross_weight": 2, + "sell_downwards_trend_ema_short_death_cross_weight": 83, + "sell_downwards_trend_macd_weight": 40, + "sell_downwards_trend_rsi_weight": 8, + "sell_downwards_trend_sma_long_death_cross_weight": 82, + "sell_downwards_trend_sma_short_death_cross_weight": 84, + "sell_downwards_trend_vwap_cross_weight": 90, + "sell_sideways_trend_adx_strong_down_weight": 93, + "sell_sideways_trend_bollinger_bands_weight": 23, + "sell_sideways_trend_ema_long_death_cross_weight": 26, + "sell_sideways_trend_ema_short_death_cross_weight": 0, + "sell_sideways_trend_macd_weight": 62, + "sell_sideways_trend_rsi_weight": 30, + "sell_sideways_trend_sma_long_death_cross_weight": 93, + "sell_sideways_trend_sma_short_death_cross_weight": 14, + "sell_sideways_trend_vwap_cross_weight": 64, + "sell_upwards_trend_adx_strong_down_weight": 24, + "sell_upwards_trend_bollinger_bands_weight": 95, + "sell_upwards_trend_ema_long_death_cross_weight": 55, + "sell_upwards_trend_ema_short_death_cross_weight": 26, + "sell_upwards_trend_macd_weight": 18, + "sell_upwards_trend_rsi_weight": 52, + "sell_upwards_trend_sma_long_death_cross_weight": 99, + "sell_upwards_trend_sma_short_death_cross_weight": 98, + "sell_upwards_trend_vwap_cross_weight": 99, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.127, + "5": 0.116, + "10": 0.105, + "15": 0.094, + "20": 0.083, + "25": 0.072, + "30": 0.061, + "35": 0.05783, + "40": 0.05465, + "45": 0.05148, + "50": 0.04831, + "55": 0.04513, + "60": 0.04196, + "65": 0.03879, + "70": 0.03562, + "75": 0.03244, + "80": 0.02927, + "85": 0.02698, + "90": 0.02527, + "95": 0.02356, + "100": 0.02185, + "105": 0.02015, + "110": 0.01844, + "115": 0.01673, + "120": 0.01502, + "125": 0.01332, + "130": 0.01161, + "135": 0.0099, + "140": 0.0082, + "145": 0.00649, + "150": 0.00478, + "155": 0.00307, + "160": 0.00137, + "165": 0 + } + + # Stoploss: + stoploss = -0.292 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True diff --git a/Some Test Results/v0.11.0/HyperOptResults7_Pt2-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log b/Some Test Results/v0.11.0/HyperOptResults7_Pt2-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log new file mode 100644 index 000000000..bd73d579d --- /dev/null +++ b/Some Test Results/v0.11.0/HyperOptResults7_Pt2-26-05-2021-MoniGoManiHyperStrategy_load_from_config_freqtrade_develop-bd44deea.log @@ -0,0 +1,280 @@ +freqtrade hyperopt -s MoniGoManiHyperStrategy -c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -e 1000 --timerange 20210101-20210316 +================================================================================================================================================================================================================= +INFO - Using config: ./user_data/mgm-config.json ... +INFO - Using config: ./user_data/mgm-config-private.json ... + +WARNING - Parameter "buy___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "buy___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "buy___trades_when_upwards" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed = 118 +INFO - Strategy Parameter: buy__downwards_trend_total_signal_needed_candles_lookback_window = 4 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed = 413 +INFO - Strategy Parameter: buy__sideways_trend_total_signal_needed_candles_lookback_window = 3 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed = 248 +INFO - Strategy Parameter: buy__upwards_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: buy_downwards_trend_adx_strong_up_weight = 17 +INFO - Strategy Parameter: buy_downwards_trend_bollinger_bands_weight = 23 +INFO - Strategy Parameter: buy_downwards_trend_ema_long_golden_cross_weight = 11 +INFO - Strategy Parameter: buy_downwards_trend_ema_short_golden_cross_weight = 61 +INFO - Strategy Parameter: buy_downwards_trend_macd_weight = 39 +WARNING - Parameter "buy_downwards_trend_rsi_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_downwards_trend_sma_long_golden_cross_weight = 73 +INFO - Strategy Parameter: buy_downwards_trend_sma_short_golden_cross_weight = 67 +WARNING - Parameter "buy_downwards_trend_vwap_cross_weight" exists, but is disabled. Default value "100" used. +WARNING - Parameter "buy_sideways_trend_adx_strong_up_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_sideways_trend_bollinger_bands_weight = 46 +INFO - Strategy Parameter: buy_sideways_trend_ema_long_golden_cross_weight = 84 +INFO - Strategy Parameter: buy_sideways_trend_ema_short_golden_cross_weight = 75 +INFO - Strategy Parameter: buy_sideways_trend_macd_weight = 83 +INFO - Strategy Parameter: buy_sideways_trend_rsi_weight = 89 +INFO - Strategy Parameter: buy_sideways_trend_sma_long_golden_cross_weight = 19 +WARNING - Parameter "buy_sideways_trend_sma_short_golden_cross_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: buy_sideways_trend_vwap_cross_weight = 86 +WARNING - Parameter "buy_upwards_trend_adx_strong_up_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: buy_upwards_trend_bollinger_bands_weight = 21 +INFO - Strategy Parameter: buy_upwards_trend_ema_long_golden_cross_weight = 61 +INFO - Strategy Parameter: buy_upwards_trend_ema_short_golden_cross_weight = 17 +INFO - Strategy Parameter: buy_upwards_trend_macd_weight = 76 +INFO - Strategy Parameter: buy_upwards_trend_rsi_weight = 17 +INFO - Strategy Parameter: buy_upwards_trend_sma_long_golden_cross_weight = 53 +INFO - Strategy Parameter: buy_upwards_trend_sma_short_golden_cross_weight = 57 +INFO - Strategy Parameter: buy_upwards_trend_vwap_cross_weight = 42 +WARNING - Parameter "sell___trades_when_downwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___trades_when_sideways" exists, but is disabled. Default value "False" used. +WARNING - Parameter "sell___trades_when_upwards" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_enabled" exists, but is disabled. Default value "True" used. +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trade_duration_minutes = 32 +INFO - Strategy Parameter: sell___unclogger_minimal_losing_trades_open = 4 +INFO - Strategy Parameter: sell___unclogger_open_trades_losing_percentage_needed = 57 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window = 55 +INFO - Strategy Parameter: sell___unclogger_trend_lookback_candles_window_percentage_needed = 25 +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_downwards_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_sideways_candles" exists, but is disabled. Default value "True" used. +WARNING - Parameter "sell___unclogger_trend_lookback_window_uses_upwards_candles" exists, but is disabled. Default value "False" used. +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed = 121 +INFO - Strategy Parameter: sell__downwards_trend_total_signal_needed_candles_lookback_window = 5 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed = 880 +INFO - Strategy Parameter: sell__sideways_trend_total_signal_needed_candles_lookback_window = 4 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed = 601 +INFO - Strategy Parameter: sell__upwards_trend_total_signal_needed_candles_lookback_window = 4 +INFO - Strategy Parameter: sell_downwards_trend_adx_strong_down_weight = 36 +INFO - Strategy Parameter: sell_downwards_trend_bollinger_bands_weight = 58 +INFO - Strategy Parameter: sell_downwards_trend_ema_long_death_cross_weight = 80 +INFO - Strategy Parameter: sell_downwards_trend_ema_short_death_cross_weight = 85 +INFO - Strategy Parameter: sell_downwards_trend_macd_weight = 32 +INFO - Strategy Parameter: sell_downwards_trend_rsi_weight = 41 +INFO - Strategy Parameter: sell_downwards_trend_sma_long_death_cross_weight = 16 +WARNING - Parameter "sell_downwards_trend_sma_short_death_cross_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: sell_downwards_trend_vwap_cross_weight = 81 +WARNING - Parameter "sell_sideways_trend_adx_strong_down_weight" exists, but is disabled. Default value "0" used. +WARNING - Parameter "sell_sideways_trend_bollinger_bands_weight" exists, but is disabled. Default value "0" used. +INFO - Strategy Parameter: sell_sideways_trend_ema_long_death_cross_weight = 53 +INFO - Strategy Parameter: sell_sideways_trend_ema_short_death_cross_weight = 16 +INFO - Strategy Parameter: sell_sideways_trend_macd_weight = 25 +INFO - Strategy Parameter: sell_sideways_trend_rsi_weight = 22 +INFO - Strategy Parameter: sell_sideways_trend_sma_long_death_cross_weight = 63 +INFO - Strategy Parameter: sell_sideways_trend_sma_short_death_cross_weight = 82 +INFO - Strategy Parameter: sell_sideways_trend_vwap_cross_weight = 39 +INFO - Strategy Parameter: sell_upwards_trend_adx_strong_down_weight = 24 +INFO - Strategy Parameter: sell_upwards_trend_bollinger_bands_weight = 63 +WARNING - Parameter "sell_upwards_trend_ema_long_death_cross_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: sell_upwards_trend_ema_short_death_cross_weight = 33 +WARNING - Parameter "sell_upwards_trend_macd_weight" exists, but is disabled. Default value "100" used. +INFO - Strategy Parameter: sell_upwards_trend_rsi_weight = 61 +INFO - Strategy Parameter: sell_upwards_trend_sma_long_death_cross_weight = 23 +INFO - Strategy Parameter: sell_upwards_trend_sma_short_death_cross_weight = 55 +INFO - Strategy Parameter: sell_upwards_trend_vwap_cross_weight = 37 + +INFO - Override strategy 'order_types' with value in config file: {'buy': 'limit', 'sell': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False}. +INFO - Override strategy 'order_time_in_force' with value in config file: {'buy': 'gtc', 'sell': 'gtc'}. +INFO - Override strategy 'stake_currency' with value in config file: USDT. +INFO - Override strategy 'stake_amount' with value in config file: 45. +INFO - Override strategy 'unfilledtimeout' with value in config file: {'buy': 10, 'sell': 30, 'unit': 'minutes'}. +INFO - Override strategy 'use_sell_signal' with value in config file: True. +INFO - Override strategy 'sell_profit_only' with value in config file: True. +INFO - Override strategy 'ignore_roi_if_buy_signal' with value in config file: True. +INFO - Strategy using minimal_roi: {'0': 0.264, '5': 0.21550000000000002, '10': 0.167, '15': 0.1185, '20': 0.07, '25': 0.0654054054054054, '30': 0.060810810810810814, '35': 0.05621621621621622, '40': 0.05162162162162162, '45': 0.04702702702702703, '50': 0.04243243243243243, '55': 0.03783783783783783, '60': 0.029249999999999998, '65': 0.018, '70': 0.006749999999999999, '75': 0} +INFO - Strategy using timeframe: 5m +INFO - Strategy using stoploss: -0.314 +INFO - Strategy using trailing_stop: True +INFO - Strategy using trailing_stop_positive: 0.011 +INFO - Strategy using trailing_stop_positive_offset: 0.031 +INFO - Strategy using trailing_only_offset_is_reached: True +INFO - Strategy using use_custom_stoploss: True +INFO - Strategy using process_only_new_candles: False +INFO - Strategy using startup_candle_count: 4800 +INFO - Strategy using sell_profit_offset: 0.0 +INFO - Strategy using disable_dataframe_checks: False +INFO - Strategy using ignore_buying_expired_candle_after: 0 +INFO - Using optimizer random state: 18298 +INFO - Min roi table: {0: 0.03, 5: 0.025, 10: 0.02, 15: 0.015, 20: 0.01, 25: 0.005, 30: 0} +INFO - Max roi table: {0: 0.31, 5: 0.285, 10: 0.26, 15: 0.235, 20: 0.21, 25: 0.185, 30: 0.16, 35: 0.135, 40: 0.11, 45: 0.104, 50: 0.098, 55: 0.093, 60: 0.087, 65: 0.081, 70: 0.075, 75: 0.069, 80: 0.063, 85: 0.058, 90: 0.052, 95: 0.046, 100: 0.04, 105: 0.038, 110: 0.037, 115: 0.035, 120: 0.033, 125: 0.032, 130: 0.03, 135: 0.028, 140: 0.027, 145: 0.025, 150: 0.023, 155: 0.022, 160: 0.02, 165: 0.018, 170: 0.017, 175: 0.015, 180: 0.013, 185: 0.012, 190: 0.01, 195: 0.008, 200: 0.007, 205: 0.005, 210: 0.003, 215: 0.002, 220: 0} +INFO - Using indicator startup period: 4800 ... +INFO - Loading data from 2020-12-15 08:00:00 up to 2021-03-16 00:00:00 (90 days). +INFO - Dataload complete. Calculating indicators +INFO - Hyperopting with data from 2021-01-01 00:00:00 up to 2021-03-16 00:00:00 (74 days).. ++--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------+ +| Best | Epoch | Trades | Win Draw Loss | Avg profit | Profit | Avg duration | Objective | +|--------+-----------+----------+------------------+--------------+-------------------------------+-----------------+---------------| +| * Best | 1/1000 | 656 | 299 145 212 | 2.45% | 722.782 USDT (144.56%) | 0 days 17:08:00 | -73,135.45738 | +| * Best | 2/1000 | 659 | 359 193 107 | 2.60% | 772.278 USDT (154.46%) | 0 days 21:08:00 | -93,397.65001 | +| Best | 31/1000 | 694 | 429 199 66 | 2.68% | 838.073 USDT (167.61%) | 0 days 23:51:00 | -115,009.31725 | +| Best | 40/1000 | 860 | 655 159 46 | 2.01% | 780.237 USDT (156.05%) | 0 days 22:29:00 | -131,923.69875 | +| Best | 55/1000 | 1118 | 932 138 48 | 1.66% | 834.859 USDT (166.97%) | 0 days 17:52:00 | -154,504.26879 | +| Best | 60/1000 | 1407 | 1218 146 43 | 1.60% | 1011.263 USDT (202.25%) | 0 days 14:30:00 | -194,343.71754 | +| Best | 76/1000 | 1423 | 1225 147 51 | 1.62% | 1036.844 USDT (207.37%) | 0 days 14:06:00 | -198,151.79747 | +| Best | 97/1000 | 1343 | 1147 150 46 | 1.76% | 1067.654 USDT (213.53%) | 0 days 15:54:00 | -202,428.34360 | +| Best | 109/1000 | 1752 | 1565 135 52 | 1.36% | 1072.523 USDT (214.50%) | 0 days 12:19:00 | -212,686.59168 | +| Best | 181/1000 | 1976 | 1787 138 51 | 1.19% | 1059.698 USDT (211.94%) | 0 days 09:48:00 | -212,751.69675 | +| Best | 194/1000 | 1865 | 1673 143 49 | 1.27% | 1069.308 USDT (213.86%) | 0 days 10:32:00 | -212,947.89282 | +| Best | 219/1000 | 1848 | 1667 142 39 | 1.30% | 1079.244 USDT (215.85%) | 0 days 11:16:00 | -216,125.88347 | +| Best | 229/1000 | 2132 | 1951 140 41 | 1.15% | 1105.078 USDT (221.02%) | 0 days 09:18:00 | -224,499.99511 | +| Best | 437/1000 | 2126 | 1949 137 40 | 1.16% | 1114.329 USDT (222.87%) | 0 days 09:26:00 | -226,785.60306 | +| Best | 714/1000 | 2134 | 1967 127 40 | 1.16% | 1111.057 USDT (222.21%) | 0 days 10:24:00 | -227,352.40862 | + +Elapsed Time: 5:16:54 +INFO - 1000 epochs saved to + '/mnt/Windows/Users/Rik/Desktop/Rikj-Home/Projects/Freqtrade-Rikj000/user_data/hyperopt_results/strategy_MoniGoManiHyperStrategy_2021-05-26_19-06-16.fthypt'. + +Best result: + + 714/1000: + 2134 trades. + 1967/127/40 Wins/Draws/Losses. + Avg profit 1.16%. + Median profit 0.81%. + Total profit 1111.05667714 USDT ( 222.21Σ%). + Avg duration 10:24:00 min. + Objective: -227352.40862 + + + # Buy hyperspace params: + buy_params = { + "buy__downwards_trend_total_signal_needed": 126, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy__sideways_trend_total_signal_needed": 404, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 3, + "buy__upwards_trend_total_signal_needed": 244, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, + "buy_downwards_trend_adx_strong_up_weight": 25, + "buy_downwards_trend_bollinger_bands_weight": 28, + "buy_downwards_trend_ema_long_golden_cross_weight": 12, + "buy_downwards_trend_ema_short_golden_cross_weight": 53, + "buy_downwards_trend_macd_weight": 37, + "buy_downwards_trend_sma_long_golden_cross_weight": 83, + "buy_downwards_trend_sma_short_golden_cross_weight": 69, + "buy_sideways_trend_bollinger_bands_weight": 56, + "buy_sideways_trend_ema_long_golden_cross_weight": 92, + "buy_sideways_trend_ema_short_golden_cross_weight": 84, + "buy_sideways_trend_macd_weight": 78, + "buy_sideways_trend_rsi_weight": 82, + "buy_sideways_trend_sma_long_golden_cross_weight": 10, + "buy_sideways_trend_vwap_cross_weight": 85, + "buy_upwards_trend_bollinger_bands_weight": 19, + "buy_upwards_trend_ema_long_golden_cross_weight": 58, + "buy_upwards_trend_ema_short_golden_cross_weight": 12, + "buy_upwards_trend_macd_weight": 75, + "buy_upwards_trend_rsi_weight": 27, + "buy_upwards_trend_sma_long_golden_cross_weight": 55, + "buy_upwards_trend_sma_short_golden_cross_weight": 50, + "buy_upwards_trend_vwap_cross_weight": 32, + "buy___trades_when_downwards": True, # value loaded from strategy + "buy___trades_when_sideways": False, # value loaded from strategy + "buy___trades_when_upwards": True, # value loaded from strategy + "buy_downwards_trend_rsi_weight": 100, # value loaded from strategy + "buy_downwards_trend_vwap_cross_weight": 100, # value loaded from strategy + "buy_sideways_trend_adx_strong_up_weight": 100, # value loaded from strategy + "buy_sideways_trend_sma_short_golden_cross_weight": 0, # value loaded from strategy + "buy_upwards_trend_adx_strong_up_weight": 100, # value loaded from strategy + } + + # Sell hyperspace params: + sell_params = { + "sell___unclogger_minimal_losing_trade_duration_minutes": 25, + "sell___unclogger_minimal_losing_trades_open": 5, + "sell___unclogger_open_trades_losing_percentage_needed": 59, + "sell___unclogger_trend_lookback_candles_window": 58, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 16, + "sell__downwards_trend_total_signal_needed": 125, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 4, + "sell__sideways_trend_total_signal_needed": 886, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 5, + "sell__upwards_trend_total_signal_needed": 598, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 4, + "sell_downwards_trend_adx_strong_down_weight": 29, + "sell_downwards_trend_bollinger_bands_weight": 65, + "sell_downwards_trend_ema_long_death_cross_weight": 74, + "sell_downwards_trend_ema_short_death_cross_weight": 75, + "sell_downwards_trend_macd_weight": 35, + "sell_downwards_trend_rsi_weight": 39, + "sell_downwards_trend_sma_long_death_cross_weight": 24, + "sell_downwards_trend_vwap_cross_weight": 77, + "sell_sideways_trend_ema_long_death_cross_weight": 57, + "sell_sideways_trend_ema_short_death_cross_weight": 7, + "sell_sideways_trend_macd_weight": 32, + "sell_sideways_trend_rsi_weight": 23, + "sell_sideways_trend_sma_long_death_cross_weight": 73, + "sell_sideways_trend_sma_short_death_cross_weight": 78, + "sell_sideways_trend_vwap_cross_weight": 42, + "sell_upwards_trend_adx_strong_down_weight": 27, + "sell_upwards_trend_bollinger_bands_weight": 72, + "sell_upwards_trend_ema_short_death_cross_weight": 25, + "sell_upwards_trend_rsi_weight": 69, + "sell_upwards_trend_sma_long_death_cross_weight": 24, + "sell_upwards_trend_sma_short_death_cross_weight": 46, + "sell_upwards_trend_vwap_cross_weight": 35, + "sell___trades_when_downwards": True, # value loaded from strategy + "sell___trades_when_sideways": False, # value loaded from strategy + "sell___trades_when_upwards": True, # value loaded from strategy + "sell___unclogger_enabled": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy + "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy + "sell_downwards_trend_sma_short_death_cross_weight": 100, # value loaded from strategy + "sell_sideways_trend_adx_strong_down_weight": 0, # value loaded from strategy + "sell_sideways_trend_bollinger_bands_weight": 0, # value loaded from strategy + "sell_upwards_trend_ema_long_death_cross_weight": 100, # value loaded from strategy + "sell_upwards_trend_macd_weight": 100, # value loaded from strategy + } + + # ROI table: + minimal_roi = { + "0": 0.093, + "5": 0.07709, + "10": 0.06118, + "15": 0.05551, + "20": 0.05241, + "25": 0.0493, + "30": 0.04619, + "35": 0.04308, + "40": 0.03997, + "45": 0.03686, + "50": 0.03421, + "55": 0.03225, + "60": 0.03028, + "65": 0.02831, + "70": 0.02635, + "75": 0.02438, + "80": 0.02242, + "85": 0.02045, + "90": 0.01848, + "95": 0.01652, + "100": 0.01455, + "105": 0.01258, + "110": 0.01062, + "115": 0.00865, + "120": 0.00669, + "125": 0.00472, + "130": 0.00275, + "135": 0.00079, + "140": 0 + } + + # Stoploss: + stoploss = -0.349 + + # Trailing stop: + trailing_stop = True + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = True \ No newline at end of file diff --git a/VERYQUICKSTART.md b/VERYQUICKSTART.md deleted file mode 100644 index f1950e2b7..000000000 --- a/VERYQUICKSTART.md +++ /dev/null @@ -1,335 +0,0 @@ -

- - Join CryptoStonksShallRise on Discord - - - Total Releases Downloaded from GitHub - - - Latest Official Release on GitHub - - - GNU General Public License - - - Freqtrade - The open source crypto day-trading bot - - - ICONOMI - The world’s largest crypto strategy provider - -

- -**WARNING: I am in no way responsible for your live results! This strategy is still experimental and under development!** -**WARNING: MoniGoMani should always be [re-optimized](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#how-to-optimize-monigomani) unless you really know what you are doing when manually allocating parameters!** -**I strongly recommended to [re-optimize](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#how-to-optimize-monigomani) your own copy of MoniGoMani while thinking logically, don't follow your computer blindly!** - - -# Very Quick Start (With Docker): -1) [Download](https://github.com/Rikj000/MoniGoMani/releases) the latest `MoniGoMani` release and unzip it somewhere. Or clone the `main` branch through git. -2) Install [Docker Desktop](https://www.docker.com/get-started) -3) Open and edit `MoniGoMani/user_data/config-private.json` & `MoniGoMani/user_data/config.json` -([VSCodium](https://vscodium.com/) is open source and comes pre-installed with good color codes to make it easier to read `.json` or `.log` files, and many more too) - 3.A. Follow [these 4 easy steps](https://www.siteguarding.com/en/how-to-get-telegram-bot-api-token) to create your own Telegram bot and fetch it's api-token, fill `token` under `telegram` up in `config-private.json` with this. Make sure to start a conversation with your bot before continuing! - 3.B. Say `/start` to `@userinfobot` on Telegram to get your Chat ID, fill `chat_id` under `telegram` up in `config-private.json` with this. - 3.C. Generate a strong key/password for `jwt_secret_key` under `api_server` in `config-private.json` - 3.D. Choose and fill in a `username` and strong `password` also under `api_server` in `config-private.json` -4) Open a terminal window and navigate to where you put `MoniGoMani` and type on of the following: - - `docker-compose pull` to pull in any updates to the Image if there are any - - `docker-compose up --build` to build and start the bot & view its log or - - `docker-compose up -d` to build and start the bot in the background. - - `docker-compose stop` to stop the bot. -5) When running the included compose file FreqUI is already included and can be accessed from localhost:8080, - login is possible using the `username` and `password` from step 3.D. - -That's it you successfully set up Freqtrade, connected to Telegram, with FreqUI! Congratulations :partying_face: -*Need a more detailed guide? Checkout the [Official Freqtrade Website](https://www.freqtrade.io/en/stable/docker_quickstart/)!* - - -# Very Quick Start (From Source Code): -1) Install [Git](https://git-scm.com/downloads) -2) Open a terminal window and navigate to where you want to put `Freqtrade` -3) Type `git clone https://github.com/freqtrade/freqtrade.git` to clone the Freqtrade repo -4) Type `git checkout remotes/origin/develop` to switch to the development branch (currently needed for [Auto-HyperOptable Strategies](https://github.com/freqtrade/freqtrade/pull/4596)) -5) Type `./setup.sh -i` to install freqtrade from scratch -6) Type `source ./.env/bin/activate` to activate your virtual environment (Needs to be done every time you open the terminal) -7) *(Type `./setup.sh -u` to update freqtrade with git pull)* -8) *(Type `./setup.sh -r` to hard reset the branch)* -9) [Download](https://github.com/Rikj000/MoniGoMani/releases) the latest `MoniGoMani` release and unzip it in the `Freqtrade` folder. Or clone the `main` branch through git & copy the files over. -10) Follow step 3 from the *Very Quick Start (With Docker)* above - -That's it you successfully set up Freqtrade natively, you can now use `MoniGoManiHyperStrategy` for hyperopting/backtesting/dry/live-running! Congratulations :partying_face: -Check the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#go-to-commands) for how to use it. - - -# How to Optimize MoniGoMani: -*(These are just my ideas/theories, if you have other ideas, please test them & report your results to [#moni-go-mani-testing](https://discord.gg/xFZ9bB6vEz) so we can learn and improve this flow! Also yes the current process is lengthy, but we hope to automate this where possible in further versions)* - -0) When you change anything in your `config.json`, `config-private.json` (besides personal info etc) or in `MoniGoManiHyperStrategy` itself you should always re-hyperopt to find the new ideal weights for your setup. This should also be done when the market changes in it's long term direction! -1) Do some Technical Analysis on how your stake currency has been behaving in the last months/weeks & pick a logical timeframe to do your hyperopt upon (The timeframe in the go-to commands for example resembles some bullish rise/correction cycles & I believe 2021 will be a bullish year thus I think it's a good timeframe to test upon). -2) Set up the [Current Default MoniGoMani Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#current-default-monigomani-overrides) manually with some logical thinking. We do this to disable HyperOpting for some settings inside MGM that don't always get placed logically by HyperOpt. This helps refine the search space during HyperOpting, pushing it more towards where we want it to look. Instructions for how to do this are under [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#hyperopt-setting-overrides) -3) HyperOpt MoniGoManiHyperStrategy for a 1st run with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#go-to-commands) (Free to alter the command if you have a good idea that you want to test) -4) Pick the `epoch` you deem best. The last one is not always the best one & be wary of profit exploitation on the last epochs! You can use `freqtrade hyperopt-show -n ` to print out HyperOpt results found for a certain epoch. -5) Apply the HyperOpt results from your 1st run into the HyperOpt Results Copy/Paste Section of `MoniGoManiHyperStrategy.py` (Manually add the settings back in that where overridden in step 2 since they will be excluded from HyperOpts results!) -6) Further, Disable HyperOpting for `buy/sell_downwards/sideways/upwards_trend_signal_weight` settings that scored lower then `10%` in the 1st HyperOpt run and override them manually to `0%` (Indication of weak signal / signal not working well during these trends with your current weight allocation setup. -Also `10%` was just an idea, feel free to change this) instructions for how to do this are under [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#hyperopt-setting-overrides) -7) Further, Disable HyperOpting for `buy/sell_downwards/sideways/upwards_trend_signal_weight` settings that scored higher then `90%` in the 1st HyperOpt run and override them manually to `100%` (Indication of strong signal / signal good enough in that trend to act on its own as a full buy/sell signal. -Also `90%` was just an idea, feel free to change this) instructions for how to do this are under [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#hyperopt-setting-overrides) -8) Refine the search spaces for the total buy/sell signals and **all** weighted signals in the tables still remaining in the HyperOpt space (aka normal, not overridden). We do this to push the next HyperOpt run back in the direction that we already had going during the 1st HyperOpt run. See [HyperOpt Narrowing Down Search Spaces](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#hyperopt-narrowing-down-search-spaces) for how to do this. -By changing the search space for each signal remaining, from the usual (0 - 100) and setting it's to ±10 the value found for said signal during the 1st HyperOpt run. -Example: If for `sell_sideways_trend_bollinger_bands_weight` a weight of `33` was found during the 1st HyperOpt run, then the refined search space would become as following: -`sell_sideways_trend_bollinger_bands_weight = IntParameter(23, int(43 * precision), default=0, space='sell', optimize=True, load=True)` -*(1000 epochs might be overkill for the 2nd run with refined search spaces, we will have to take notice where new 'best' results stop popping up since it could save us time if for example no results are ever found after epoch 250)* -*(Please refine the Open Trade Unclogger's spaces too, but do not blindly follow this step which is meant for the **weighted signal tables**, but refine using values that you deem to make sense)* -9) HyperOpt MoniGoManiHyperStrategy for a 2nd run with the command provided in the [Go-To Commands](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#go-to-commands). This is needed since we have been altering the "perfectly" calculated setup, thus we have to re-balance the weights in use now. This should not cause overfitting since it's a complete fresh hyperopt run. -10) Pick the `epoch` you deem best. The last one is not always the best one & be wary of profit exploitation on the last epochs! You can use `freqtrade hyperopt-show -n ` to print out HyperOpt results found for a certain epoch. -11) Copy/Paste your results into the `Total-Overall-Signal-Importance-Calculator.py` & run it's [Go-To Command](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#go-to-commands) but include `-fm` or `--fix-missing` at the end of your command. This is needed to make them whole again since overridden weighted buy/sell_params will be missing from your HyperOpt results. (This command will re-include them with **0** as their value & re-print the fixed copy/paste-able weighted buy/sell_params. -**WARNING: The results will still be partial!! Since the calculator only fills in missing `Integer` values with `0`, the ones with `100%` and the `True/False` should still be added back in manually!**) -12) Once you fixed all missing signals (those that where overridden) paste the full HyperOpt Results in the Copy/Paste Section of `MoniGoManiHyperStrategy.py` (You need to manually add the settings that where overridden since they will be excluded from HyperOpt & Calculator results) -13) Turn off all Override settings again to prevent confusion during your next HyperOpt run & you should have a nicely optimised version now! :smile: - - -# HyperOpt Setting Overrides: -When the Parameters in the HyperOpt Space Parameters sections are altered as following examples then they can be used as overrides while hyperopting / backtesting / dry/live-running -(only truly useful when hyperopting though!) Meaning you can use this to set individual buy_params/sell_params to a fixed value when hyperopting! -*(MoniGoManiHyperStrategy v0.8.1 or above Required!)* - -**WARNING: Always double check that when doing a fresh hyperopt or doing a dry/live-run that all overrides are turned off!** -**WARNING: Overridden buy/sell_params will be missing from the HyperOpt Results!, after hyperopting with IntParameters overridden to 0 you can use the Total Overall Signal Importance Calculator's `--fix-missing` subcommand to re-include the missing IntParameter results with 0 as their weight** - -### Override / Static Examples: -Override `buy___trades_when_sideways` to always be **False**: -```python -buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) -``` -Override `sell_downwards_trend_macd_weight` to always be **0**: -```python -sell_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=False, load=False) -``` -| Function Param | Meaning | -| --- |--- | -| **default**=X | The value used when overriding | -| **optimize**=False | Exclude from hyperopting (Make static) | -| **load**=False | Don't load from the HyperOpt Results Copy/Paste Section | - -### HyperOptable / Normal Examples: -Normal usage of `buy___trades_when_sideways` making it hyperoptable: -```python -buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=True, load=True) -``` -Normal usage of `sell_downwards_trend_macd_weight` making it hyperoptable: -```python -sell_downwards_trend_macd_weight = \ - IntParameter(0, int(100 * precision), default=0, space='sell', optimize=True, load=True) -``` -| Function Param | Meaning | -| --- |--- | -| **default**=X | Not used in this case | -| **optimize**=True | Include during hyperopting (Look for "ideal" value) | -| **load**=True | Load from the HyperOpt Results Copy/Paste Section | - -### Current Default MoniGoMani Overrides: -*(More testing should be done to find out if there are other/more overrides that would work better!)* -Feel free to **manually** alter these if you think other values are more logical. These should be applied using the examples above. - -Following have proven to sometimes create a hodlr bot when hyperopting, which is not what we want! -- `buy___trades_when_downwards` = `True` -- `buy___trades_when_sideways` = `False` -- `buy___trades_when_upwards` = `True` -- `sell___trades_when_downwards` = `True` -- `sell___trades_when_sideways` = `False` -- `sell___trades_when_upwards` = `True` - -We would like to use the sell unclogger -- `sell___unclogger_enabled` = `True` - -Setting these logically manually is not too hard to do and will narrow down the hyperopt space, thus resulting in less time/system resources needed to run our hyperopt (We basically push it in the direction we want by hand doing this) -- `sell___unclogger_trend_lookback_window_uses_downwards_candles` = `True` -- `sell___unclogger_trend_lookback_window_uses_sideways_candles` = `True` -- `sell___unclogger_trend_lookback_window_uses_upwards_candles` = `False` - -# HyperOpt Narrowing Down Search Spaces: -The search spaces used for HyperOptable settings in MoniGoMani can easily be tweaked/fine-tuned to try and improve upon profit being made. -It also helps in cutting down the time needed for HyperOpting since fewer values will be possible. This if applied right it means we are pushing/pointing hyperopt in the right direction before it runs off doing its crunching. - -### Narrowed Down Space Example: -Hyperopt Space for `sell___unclogger_minimal_losing_trades_open` narrowed down to only search for an ideal setup between **1 up to 5** losing trades open: -```python -sell___unclogger_minimal_losing_trades_open = \ - IntParameter(1, int(5 * precision), default=0, space='sell', optimize=True, load=True) -``` - -# Open Trade Unclogger: -When the Open Trade Unclogger is enabled it attempts to unclog the bot when it's stuck with losing trades & unable to trade more new trades. -This `custom_stoploss` function should be able to work in tandem with `Trailing stoploss`. - -It will only unclog a losing trade when all following checks have been full-filled (If a check is set to `0` it will be taken out of the equation, thus the unclogger will continue checking further without it): -- Check if `sell___unclogger_enabled` is `True`, otherwise abort further unclogger logic. -- Check if everything in custom_storage is up to date with all_open_trades -- Check if there are enough losing trades open to fulfil `sell___unclogger_minimal_losing_trades_open` -- Check if there is a losing trade open for the pair currently being run through the MoniGoMani loop -- Check if trade has been open for `sell___unclogger_minimal_losing_trade_duration_minutes` (long enough to give it a recovery chance) -- Check if `sell___unclogger_open_trades_losing_percentage_needed` is fulfilled -- Check if open_trade's trend changed negatively during past `sell___unclogger_trend_lookback_candles_window`: -For unclogging to occur `sell___unclogger_trend_lookback_candles_window_percentage_needed` should be fulfilled! -The trends used for the calculations in this check can be configured with `sell___unclogger_trend_lookback_window_uses_downwards/sideways/upwards_candles=True/False` (Its recommended setting these last 3 true/false values manually using [HyperOpt Setting Overrides](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#hyperopt-setting-overrides)). -Each candle fulfilling a trend set to `True` will be added in the sum used to calculate the value for `sell___unclogger_trend_lookback_candles_window_percentage_needed` if it is found in the lookback window. - - -Only used when `use_custom_stoploss` & `sell_params['sell___unclogger_enabled']` are both set to `True`! - - -# Total Overall Signal Importance Calculator: -Paste the `buy_params` & `sell_params` results from your HyperOpt over in the `/user_data/Total-Overall-Signal-Importance-Calculator.py` file. -Then execute: `python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc BTC` from your favorite terminal / CLI to calculate the overall importance of the signals being used. -The higher the score of a signal the better! Now it will also export to a `importance.log` file in the same folder for easy sharing! -Share these results in [#moni-go-mani-testing](https://discord.gg/xFZ9bB6vEz) so we can improve the signals! - -### Handy Calculator Sub Commands: -- `-h` or `--help`: Print out information about the usage of all sub commands. -- `-sc` or `--stake-currency` ***Mandatory***: Stake currency displayed in the report (Should match to what is under `stake_currency` in your `config.json`) -- `-lf` or `--load-file` ***Optional (Unused by default)***: Path to `.json` file to load HyperOpt Results from which will be used in the Calculator. -`.json`'s should be extracted with `freqtrade hyperopt-show --best --no-header --print-json > ./user_data/config-mgm-hyperopt.json` -**Warning** Make sure your calculator copy-paste section is complete before using this sub-command! -- `-cf` or `--create-file` ***Optional (Unused by default)***: Save the Total-Average-Signal-Importance-Report as a `.log` file with a custom filename and file output location -- `-nf` or `--no-file` ***Optional (Defaults to `True` when not omitted)***: Do not output the Total-Average-Signal-Importance-Report as a `.log` file -- `-fm` or `--fix-missing` ***Optional (Defaults to `True` when not omitted)***: Re-Include missing weighted buy/sell_params with **0 as their value** & re-print them as copy/paste-able results. Also keeps the tool from crashing when there are missing values. Mostly useful after a hyperopt with overridden/missing values in the hyperopt results. -- `-pu` or `--precision-used` ***Optional (Defaults to `1` when not omitted)***: The precision value used during hyperopt. Can be decimal (0.2) or fraction 1/5. Mostly useful after a running a hyperopt with precision different from 1, used to patch the weights of the signals displayed in the report to what we would expect them to be for comparison with other results. - - -# TimeFrame-Zoom: -To prevent profit exploitation during backtesting/hyperopting we backtest/hyperopt MoniGoMani which would normally use a `timeframe` (1h candles) using a smaller `backtest_timeframe` (5m candles) instead. This happens while still using an `informative_timeframe` (original 1h candles) to generate the buy/sell signals. - -With this more realistic results should be found during backtesting/hyperopting. Since the buy/sell signals will operate on the same `timeframe` that live would use (1h candles), while at the same time `backtest_timeframe` (5m or 1m candles) will simulate price movement during that `timeframe` (1h candle), providing more realistic trailing stoploss and ROI behaviour during backtesting/hyperopting. - -For more information on why this is needed please read [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/)! - -**WARNING: Remove the `timeframe` line from your `config-btc.json` if it would still be there! Otherwise, TimeFrame-Zoom won't work properly in the current version!** -**WARNING: Candle data for both `timeframe` as `backtest_timeframe` will have to be downloaded before you will be able to backtest/hyperopt! (Since both will be used)** -**WARNING: This will be slower than backtesting at 1h and 1m is a CPU killer. If you plan on using trailing stoploss or ROI, you probably want to know that your backtest results are not complete lies.** -**WARNING: To disable TimeFrame-Zoom just use the same candles for `timeframe` & `backtest_timeframe`** - -### TimeFrame-Zoom Examples: -| Parameter | Meaning | -| --- | --- | -| **timeframe**='1h' | TimeFrame used during dry/live-runs | -| **backtest_timeframe**='5m' | Zoomed in TimeFrame used during backtesting/hyperopting | - - -# Precision Setting: -The `precision` setting can be used to control the precision / step size used during hyperopting. -A value **smaller than 1** will limit the search space, but may skip over good values. -While a value **larger than 1** increases the search space, but will increase the duration of hyperopting. -To disable `precision` / for old the work mode **just** use **1**. - -**WARNING: Only use a precision different from 1 during hyperopting & restore to 1 afterwards!** -**WARNING: HyperOpt Results don't take precision into consideration, after hyperopting with precision use the Total Overall Signal Importance Calculator's `--precision-used` subcommand to fix the results** - -### Precision Examples: -| Precision Value | Step Size effectively used during HyperOpting | -| --- | --- | -| **1/5** or **0.2** | **5** (0, 5, 10 ...) | -| **5** | **1/5** or **0.2** (0, 0.2, 0.4, 0.8, ...) | - - -# Custom HyperLoss Functions: -MoniGoMani comes with an extra set of loss functions for HyperOpting, supplementing the ones shipped with FreqTrade. -You can find these functions in `M̀oniGoMani/user_data/hyperopts/`, and can use them by overriding the freqtrade hyperopt parameter `--hyperopt-loss`. - -Following 2 Custom HyperLoss Functions ship with the MoniGoMani Framework: -- [**WinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/hyperopts/WinRatioAndProfitRatioLoss.py): Attempts to optimise for the best profit **and** stability (Returns smaller number for better results) -- [**UncloggedWinRatioAndProfitRatioLoss**](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/hyperopts/UncloggedWinRatioAndProfitRatioLoss.py): Same as WinRatioAndProfitRatioLoss but has a configurable Percentage of loss to ignore while HyperOpting (Small losses are a by-product of the Unclogger) - -**Example Usage:** -```powershell ---hyperopt-loss WinRatioAndProfitRatioLoss -``` - - -# PairLists: -By default, MoniGoMani includes 2 pairlists in `config-btc.json`: -- A VolumePairList: - - Best to use for Dry and Live Running - - Will automatically update to the current best top volume coin pairs available -- A StaticPairList: - - Used for BackTesting / HyperOpting since a VolumePairList cannot be used here. - - When [optimizing](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#how-to-optimize-monigomani) MoniGoMani for actual dry/live-running (instead of testing) it's truly recommended to [download a fresh top volume StaticPairList](https://github.com/Rikj000/MoniGoMani/blob/main/VERYQUICKSTART.md#download-staticpairlists) and HyperOpt upon that (Preferably as big as possible, but beware of the warning below)! - This should yield much better & more realistic results during HyperOpting/BackTesting! - This is due to giving a better reflection of the current market and being closer to the VolumePairList used during dry/live-run's. - -Switching between the PairList in use can easily be done by moving the `_` in front of the `pairlists` value inside `config-btc.json` for the pairlist you wish to disable. - -**WARNING: The bigger the (Volume/Static)PairList in use the higher the system requirements (CPU usage, RAM usage & Time needed to HyperOpt will go up)! Switch to a smaller list if your system can't handle it!** - -### Enabled StaticPairList / Disabled VolumePairList Example: -```json -"pairlists": [{ - "method": "StaticPairList" - }], -"_pairlists": [ - { - "method": "VolumePairList", -``` - -### Download StaticPairLists -Retrieve a current **Binance-BTC-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))* (The amount of pairs in these top volume lists can be altered by opening up `Binance-Retrieve-Top-Volume-StaticPairList.json` and changing the `number_assets` value inside to the amount of pairs you'd like in your list): -```powershell -freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote BTC --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json -``` - -Retrieve a current **Binance-BTC-All-Tradable-StaticPairList.json** file *(using [Binance-Retrieve-All-Tradable-StaticPairList.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py))* (Beware, very high system requirements due to a lot of BTC pairs!): -```powershell -python ./user_data/mgm_tools/Binance-Retrieve-All-Tradable-StaticPairList.py -q BTC > ./user_data/mgm_pair_lists/Binance-BTC-All-Tradable-StaticPairList.json -``` - -**After Downloading** the StaticPairList will be available under `./user_data/mgm_pair_lists/<>-StaticPairList.json`, just open up the file and copy the PairList Data into your own `config-private.json` file under `pair_whitelist` section to start using it! - -Don't forget to **Download Candle Data** before HyperOpting or Backtesting (Example for last 2 years of candle data): -```powershell -freqtrade download-data --exchange binance -c ./user_data/config-btc.json -c ./user_data/config-private.json --data-format-ohlcv hdf5 --days 740 --timeframes 5m 1h -``` - -# Go-To Commands: -For Hyper Opting *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py))*: -```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all -s MoniGoManiHyperStrategy -e 1000 --timerange 20210101-20210316 -``` -For Back Testing *(the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) or legacy [MoniGoManiHyperOpted.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoManiHyperOpted.py) or legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py))*: -```powershell -freqtrade backtesting -s MoniGoManiHyperStrategy -c ./user_data/config-btc.json -c ./user_data/config-private.json --timerange 20210101-20210316 -``` -For Total Average Signal Importance Calculation *(with the [Total-Overall-Signal-Importance-Calculator.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py))*: -```powershell -python ./user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py -sc BTC -``` - -To retrieve a current **Binance-BTC-Top-Volume-StaticPairList.json** file *(using [Binance-Retrieve-Top-Volume-StaticPairList.json](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json))*: -```powershell -freqtrade test-pairlist -c ./user_data/mgm_tools/Binance-Retrieve-Top-Volume-StaticPairList.json --quote BTC --print-json | tail -n 1 | jq '.|{exchange: { pair_whitelist: .}}' > ./user_data/mgm_pair_lists/Binance-BTC-Top-Volume-StaticPairList.json -# Don't forget to open the downloaded '...-StaticPairList.json' and copy the PairList Data into your own 'config-private.json' file to start using it! -``` - -For Hyper Opting *(the legacy [MoniGoMani.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/strategies/MoniGoMani.py) + legacy [MoniGoManiHyperOpt.py](https://github.com/Rikj000/MoniGoMani/blob/main/Legacy%20MoniGoMani/user_data/hyperopts/MoniGoManiHyperOpt.py). Please use the new [MoniGoManiHyperStrategy.py](https://github.com/Rikj000/MoniGoMani/blob/main/user_data/strategies/MoniGoManiHyperStrategy.py) instead though since support for Legacy versions stopped!)*: -```powershell -freqtrade hyperopt -c ./user_data/config-btc.json -c ./user_data/config-private.json --hyperopt-loss WinRatioAndProfitRatioLoss --spaces all --hyperopt MoniGoManiHyperOpt -s MoniGoMani -e 1000 --timerange 20210101-20210316 -``` - -# How to share your test results properly: -The easiest way to share how your MGM setup has been doing would be by posting a screenshot in the [Discord Server](https://discord.gg/xFZ9bB6vEz) with the output of the `/status table` and `/profit` commands (Using the Telegram connection of the bot). - -Also, one of the other most welcome things is the results from the `Total-Overall-Signal-Importance-Calculator`, but you'll have to paste your own fresh hyperopt results in it first before it can make you a nice report that can help us find better signals for MGM !:rocket: - -Of course all FreqUI / Telegram / config / HyperOpt results done on MGM **can be** useful / be learned from! -Try to **always include** a `Total-Overall-Signal-Importance-Calculator` report or just your own MoniGoMani file with your hyperopt results applied to it! -Since without knowing which signal weights or which on/off settings are applied we can't really truly learn much from your results! - -The epoch table being generated when hyperopting + the number of the epoch you used is also very helpful, so we can easily rule out if your test results are exploited. (See [Backtesting-Traps](https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/)!) - -# Common mistakes: - -### TypeError: integer argument expected, got float -You likely are using a `Float` value where you should be using a `Integer` value. Hopefully your error will show more information about which Parameter. -- `Integer` = Whole number. Examples: 1, 3, 23 -- `Float` = Decimal number. Examples: 1.53, 4.2, 17.12 \ No newline at end of file diff --git a/VERYQUICKSTART_FREQTRADE.md b/VERYQUICKSTART_FREQTRADE.md index 136514115..72e60dc5b 100644 --- a/VERYQUICKSTART_FREQTRADE.md +++ b/VERYQUICKSTART_FREQTRADE.md @@ -23,22 +23,25 @@ **WARNING: MoniGoMani should always be [re-optimized](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) unless you really know what you are doing when manually allocating parameters!** **I strongly recommended to [re-optimize](https://github.com/Rikj000/MoniGoMani/blob/main/MGM_DOCUMENTATION.md#how-to-optimize-monigomani) your own copy of MoniGoMani while thinking logically, don't follow your computer blindly!** -**TIP: Native installation is faster/better then a Docker VM, but Docker is easier to install** +**TIP: Native installation is recommended since MoniGoMani sometimes requires a specific Freqtrade commit. It's also faster/better than a Docker VM, but Docker is easier to install** + # Very Quick Start (From Source Code): *Need a more detailed guide? Checkout the [**Official Freqtrade Installation Guide**](https://www.freqtrade.io/en/latest/installation/)!* 1) Install [Git](https://git-scm.com/downloads) -2) Open a terminal window and navigate to where you want to put `Freqtrade` -3) Type `git clone https://github.com/freqtrade/freqtrade.git` to clone the Freqtrade repo -4) Type `git checkout remotes/origin/develop` to switch to the development branch (MoniGoMani often uses some of the latest versions of Freqtrade) -5) Type `./setup.sh -i` to install Freqtrade from scratch -6) Type `source ./.env/bin/activate` to activate your virtual environment (Needs to be done every time you open the terminal) -7) *(Type `./setup.sh -u` to update freqtrade with git pull)* -8) *(Type `./setup.sh -r` to hard reset the branch)* -9) [Download](https://github.com/Rikj000/MoniGoMani/releases) the latest `MoniGoMani` release and unzip it in the `Freqtrade` folder. Or clone the `main` branch through git & copy the files over. -10) Type `freqtrade install-ui` to install FreqUI -11) Follow step 3 from the *Very Quick Start (With Docker)* below +2) Install [jq](https://stedolan.github.io/jq/) (command-line JSON processor) +3) Open a terminal window and navigate to where you want to put `freqtrade` +4) Type `git clone https://github.com/freqtrade/freqtrade.git` to clone the Freqtrade repo +5) Type `cd freqtrade` +6) Type `git checkout remotes/origin/develop` to switch to the development branch (MoniGoMani often uses some of the latest versions of Freqtrade) +7) Type `./setup.sh -i` to install Freqtrade from scratch +8) Type `source ./.env/bin/activate` to activate your virtual environment (Needs to be done every time you open the terminal) +9) *(Type `./setup.sh -u` to update freqtrade with git pull)* +10) *(Type `./setup.sh -r` to hard reset the branch)* +11) [Download](https://github.com/Rikj000/MoniGoMani/releases) the latest `MoniGoMani` release and unzip it in the `Freqtrade` folder. Or clone the `main` branch through git & copy the files over. +12) Type `freqtrade install-ui` to install FreqUI +13) Follow step 3 from the *Very Quick Start (With Docker)* below That's it you successfully set up Freqtrade natively, connected to Telegram, with FreqUI! You can now start using `MoniGoManiHyperStrategy` for hyperopting/backtesting/dry/live-running! Congratulations :partying_face: @@ -49,12 +52,12 @@ Please read the [MGM_DOCUMENTATION](https://github.com/Rikj000/MoniGoMani/blob/m 1) [Download](https://github.com/Rikj000/MoniGoMani/releases) the latest `MoniGoMani` release and unzip it somewhere. Or clone the `main` branch through git. 2) Install [Docker Desktop](https://www.docker.com/get-started) -3) Open and edit `MoniGoMani/user_data/config-private.json` & `MoniGoMani/user_data/config.json` +3) Open and edit `MoniGoMani/user_data/mgm-config-private.json` & `MoniGoMani/user_data/mgm-config.json` ([VSCodium](https://vscodium.com/) is open source and comes pre-installed with good color codes to make it easier to read `.json` or `.log` files, and many more too) - 3.A. Follow [these 4 easy steps](https://www.siteguarding.com/en/how-to-get-telegram-bot-api-token) to create your own Telegram bot and fetch it's api-token, fill `token` under `telegram` up in `config-private.json` with this. Make sure to start a conversation with your bot before continuing! - 3.B. Say `/start` to `@userinfobot` on Telegram to get your Chat ID, fill `chat_id` under `telegram` up in `config-private.json` with this. - 3.C. Generate a strong key/password for `jwt_secret_key` under `api_server` in `config-private.json` - 3.D. Choose and fill in a `username` and strong `password` also under `api_server` in `config-private.json` + 3.A. Follow [these 4 easy steps](https://www.siteguarding.com/en/how-to-get-telegram-bot-api-token) to create your own Telegram bot and fetch it's api-token, fill `token` under `telegram` up in `mgm-config-private.json` with this. Make sure to start a conversation with your bot before continuing! + 3.B. Say `/start` to `@userinfobot` on Telegram to get your Chat ID, fill `chat_id` under `telegram` up in `mgm-config-private.json` with this. + 3.C. Generate a strong key/password for `jwt_secret_key` under `api_server` in `mgm-config-private.json` + 3.D. Choose and fill in a `username` and strong `password` also under `api_server` in `mgm-config-private.json` 4) Open a terminal window and navigate to where you put `MoniGoMani` and type on of the following: - `docker-compose pull` to pull in any updates to the Image if there are any - `docker-compose up --build` to build and start the bot & view its log or diff --git a/docker-compose.yml b/docker-compose.yml index 46c1566e1..e8f0ffc8c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,13 +3,13 @@ version: '3' services: freqtrade: # image: freqtradeorg/freqtrade:stable - image: freqtradeorg/freqtrade:develop + # image: freqtradeorg/freqtrade:develop # Use plotting image # image: freqtradeorg/freqtrade:develop_plot # Build step - only needed when additional dependencies are needed - #build: - # context: . - # dockerfile: "./docker/Dockerfile.technical" + build: + context: . + dockerfile: "./docker/Dockerfile.MoniGoMani" restart: unless-stopped container_name: Freqtrade-MoniGoMani volumes: @@ -25,6 +25,6 @@ services: trade --logfile /freqtrade/user_data/logs/freqtrade.log --db-url sqlite:////freqtrade/user_data/tradesv3-MoniGoMani_v0.11.0.sqlite - --config /freqtrade/user_data/mgm-config-usdt.json + --config /freqtrade/user_data/mgm-config.json --config /freqtrade/user_data/mgm-config-private.json - --strategy MoniGoManiConfiguration + --strategy MoniGoManiHyperStrategy \ No newline at end of file diff --git a/docker/Dockerfile.MoniGoMani b/docker/Dockerfile.MoniGoMani new file mode 100644 index 000000000..45d2002c7 --- /dev/null +++ b/docker/Dockerfile.MoniGoMani @@ -0,0 +1,9 @@ +FROM freqtradeorg/freqtrade:develop + +# Switch user to root if you must install something from apt +# Don't forget to switch the user back below! +USER root + +RUN apt-get install -y jq + +USER ftuser \ No newline at end of file diff --git a/docker/Dockerfile.develop b/docker/Dockerfile.develop deleted file mode 100644 index cb49984e2..000000000 --- a/docker/Dockerfile.develop +++ /dev/null @@ -1,10 +0,0 @@ -FROM freqtradeorg/freqtrade:develop - -# Install dependencies -COPY requirements-dev.txt /freqtrade/ - -RUN pip install numpy --no-cache-dir \ - && pip install -r requirements-dev.txt --no-cache-dir - -# Empty the ENTRYPOINT to allow all commands -ENTRYPOINT [] diff --git a/docker/Dockerfile.jupyter b/docker/Dockerfile.jupyter deleted file mode 100644 index b7499eeef..000000000 --- a/docker/Dockerfile.jupyter +++ /dev/null @@ -1,7 +0,0 @@ -FROM freqtradeorg/freqtrade:develop_plot - - -RUN pip install jupyterlab --no-cache-dir - -# Empty the ENTRYPOINT to allow all commands -ENTRYPOINT [] diff --git a/docker/Dockerfile.plot b/docker/Dockerfile.plot deleted file mode 100644 index 40bc72bc5..000000000 --- a/docker/Dockerfile.plot +++ /dev/null @@ -1,7 +0,0 @@ -ARG sourceimage=develop -FROM freqtradeorg/freqtrade:${sourceimage} - -# Install dependencies -COPY requirements-plot.txt /freqtrade/ - -RUN pip install -r requirements-plot.txt --no-cache-dir diff --git a/docker/Dockerfile.technical b/docker/Dockerfile.technical deleted file mode 100644 index 9431e72d0..000000000 --- a/docker/Dockerfile.technical +++ /dev/null @@ -1,6 +0,0 @@ -FROM freqtradeorg/freqtrade:develop - -RUN apt-get update \ - && apt-get -y install git \ - && apt-get clean \ - && pip install git+https://github.com/freqtrade/technical diff --git a/docker/docker-compose-jupyter.yml b/docker/docker-compose-jupyter.yml deleted file mode 100644 index 11a01705c..000000000 --- a/docker/docker-compose-jupyter.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -version: '3' -services: - ft_jupyterlab: - build: - context: .. - dockerfile: docker/Dockerfile.jupyter - restart: unless-stopped - container_name: freqtrade - ports: - - "127.0.0.1:8888:8888" - volumes: - - "./user_data:/freqtrade/user_data" - # Default command used when running `docker compose up` - command: > - jupyter lab --port=8888 --ip 0.0.0.0 --allow-root diff --git a/user_data/mgm-config-btc.json b/user_data/mgm-config-btc.json deleted file mode 100644 index bd3b235b0..000000000 --- a/user_data/mgm-config-btc.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "dry_run": true, - "dry_run_wallet": 0.01136, - "max_open_trades": -1, - "stake_currency": "BTC", - "stake_amount": 0.001, - "tradable_balance_ratio": 1.0, - "cancel_open_orders_on_exit": false, - "unfilledtimeout": { - "buy": 10, - "sell": 30 - }, - "bid_strategy": { - "price_side": "bid", - "ask_last_balance": 0.0, - "use_order_book": true, - "order_book_top": 1, - "check_depth_of_market": { - "enabled": false, - "bids_to_ask_delta": 0.95 - } - }, - "ask_strategy": { - "price_side": "ask", - "use_order_book": true, - "order_book_min": 1, - "order_book_max": 1, - "use_sell_signal": true, - "sell_profit_only": true, - "ignore_roi_if_buy_signal": true - }, - "order_types": { - "buy": "limit", - "sell": "limit", - "stoploss": "market", - "stoploss_on_exchange": false - }, - "order_time_in_force": { - "buy": "gtc", - "sell": "gtc" - }, - "exchange": { - "ccxt_config": { - "enableRateLimit": true - }, - "ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 200 - }, - "pair_whitelist": [ - "ETH/BTC", - "XRP/BTC", - "ADA/BTC", - "DOGE/BTC", - "DOT/BTC", - "SOL/BTC", - "LTC/BTC", - "LINK/BTC", - "VET/BTC", - "ETC/BTC", - "AAVE/BTC", - "RUNE/BTC", - "THETA/BTC", - "EOS/BTC", - "BCH/BTC" - ], - "pair_blacklist": [ - ".*DOWN/BTC", - ".*UP/BTC", - ".*DOWN/ETH", - ".*UP/ETH", - ".*DOWN/USDT", - ".*UP/USDT", - ".*DOWN/BNB", - ".*UP/BNB", - ".*/BNB", - "BNB/.*", - ".*_PREMIUM", - ".*PERP", - ".*BULL/.*", - ".*BEAR/.*", - ".*BULL2021/.*", - ".*BEAR2021/.*" - ] - }, - "pairlists": [ - { - "method": "StaticPairList" - } - ], - "_pairlists": [ - { - "method": "VolumePairList", - "number_assets": 200, - "sort_key": "quoteVolume", - "refresh_period": 1800 - }, - { - "method": "AgeFilter", - "min_days_listed": 3 - }, - { - "method": "PerformanceFilter" - }, - { - "method": "PrecisionFilter" - }, - { - "method": "PriceFilter", - "low_price_ratio": 0.1 - }, - { - "method": "ShuffleFilter" - }, - { - "method": "SpreadFilter", - "max_spread_ratio": 0.005 - }, - { - "method": "RangeStabilityFilter", - "lookback_days": 10, - "min_rate_of_change": 0.01, - "refresh_period": 1440 - }, - { - "method": "VolatilityFilter", - "lookback_days": 5, - "min_volatility": 0.05, - "max_volatility": 0.5, - "refresh_period": 1440 - }, - { - "method": "VolumePairList", - "number_assets": 100, - "sort_key": "quoteVolume" - } - ], - "initial_state": "running", - "forcebuy_enable": false, - "internals": { - "process_throttle_secs": 5 - } -} diff --git a/user_data/mgm-config-usdt.json b/user_data/mgm-config.json similarity index 79% rename from user_data/mgm-config-usdt.json rename to user_data/mgm-config.json index 6770806ef..5746182f2 100644 --- a/user_data/mgm-config-usdt.json +++ b/user_data/mgm-config.json @@ -1,4 +1,27 @@ { + "monigomani_settings": { + "timeframe": "1h", + "backtest_timeframe": "5m", + "startup_candle_count": 400, + "precision": 1, + "min_weighted_signal_value": 0, + "max_weighted_signal_value": 100, + "min_trend_total_signal_needed_value": 30, + "min_trend_total_signal_needed_candles_lookback_window_value": 1, + "max_trend_total_signal_needed_candles_lookback_window_value": 6, + "search_threshold_weighted_signal_values": 10, + "search_threshold_trend_total_signal_needed_candles_lookback_window_value": 1, + "number_of_weighted_signals": 9, + "roi_table_step_size": 5, + "debuggable_weighted_signal_dataframe": false, + "use_mgm_logging": false, + "mgm_log_levels_enabled": { + "info": true, + "warning": true, + "error": true, + "debug": true + } + }, "dry_run": true, "dry_run_wallet": 500, "max_open_trades": -1, diff --git a/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py b/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py index 4c043bcd7..3b1eb88c5 100644 --- a/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py +++ b/user_data/mgm_tools/Total-Overall-Signal-Importance-Calculator.py @@ -9,10 +9,10 @@ class TotalOverallSignalImportanceCalculator: """ - Total Overall Signal Importance Calculator for MoniGoMani v0.10.0 + Total Overall Signal Importance Calculator for MoniGoMani v0.11.0 ----------------------------------------------------------------- Paste the results from your HyperOpt over below `buy_params` & `sell_params` arrays - Then execute: `python ./user_data/Total-Overall-Signal-Importance-Calculator.py -sc BTC` from your favorite + Then execute: `python ./user_data/Total-Overall-Signal-Importance-Calculator.py -sc USDT` from your favorite terminal / CLI to calculate the overall importance of the signals being used. The higher the score of a signal the better diff --git a/user_data/strategies/MoniGoManiConfiguration.py b/user_data/strategies/MoniGoManiConfiguration.py deleted file mode 100644 index 092d89e25..000000000 --- a/user_data/strategies/MoniGoManiConfiguration.py +++ /dev/null @@ -1,684 +0,0 @@ -# --- Do not remove these libs ---------------------------------------------------------------------- -from MoniGoManiHyperStrategy import MoniGoManiHyperStrategy as MGMStrategy -from freqtrade.strategy \ - import CategoricalParameter, IntParameter -import sys -from pathlib import Path - -sys.path.append(str(Path(__file__).parent)) - - -def init_vars(parameter_dictionary: dict, parameter_name: str, parameter_min_value: int, parameter_max_value: int, - parameter_threshold: int, precision: float, overrideable: bool = True): - """ - Function to automatically initialize MoniGoMani's HyperOptable parameter values for both HyperOpt Runs. - - :param parameter_dictionary: Buy or Sell params dictionary - :param parameter_name: Name of the signal in the dictionary - :param parameter_min_value: Minimal search space value to use during the 1st HyperOpt Run - :param parameter_max_value: Maximum search space value to use during the 1st HyperOpt Run - :param parameter_threshold: Threshold to use for overriding weak/strong signals and setting up refined search spaces after the 1st HyperOpt Run - :param precision: Precision used while HyperOpting - :param overrideable: Allow value to be overrideable or not (defaults to 'True') - :return: Dictionary containing the search space values to use during the HyperOpt Runs - """ - parameter_value = parameter_dictionary.get(parameter_name) - - # 1st HyperOpt Run: Use provided min/max values for the search spaces - if parameter_value is None: - min_value = parameter_min_value - max_value = parameter_max_value - # 2nd HyperOpt Run: Use refined search spaces where needed - else: - min_value = parameter_min_value if parameter_value <= (parameter_min_value + parameter_threshold) else \ - parameter_value - parameter_threshold - max_value = parameter_max_value if parameter_value >= (parameter_max_value - parameter_threshold) else \ - parameter_value + parameter_threshold - - # 1st HyperOpt Run: Use middle of min/max values as default value - if parameter_value is None: - default_value = int((parameter_min_value + parameter_max_value) / 2) - # 2nd HyperOpt Run: Use Overrides where needed for default value - elif (max_value == parameter_max_value) and (overrideable is True): - default_value = parameter_max_value - elif min_value == parameter_min_value and (overrideable is True): - default_value = parameter_min_value - # 2nd HyperOpt Run: Use values found in Run 1 for the remaining default values - else: - default_value = parameter_value - - return_vars_dictionary = { - "min_value": int(min_value * precision), - "max_value": int(max_value * precision), - "default_value": int(default_value * precision), - # 1st HyperOpt Run: No overrides, 2nd HyperOpt Run: Apply Overrides where needed - "opt_and_Load": False if (parameter_value is not None) and (overrideable is True) and - (min_value == parameter_min_value or max_value == parameter_max_value) else True - } - - return return_vars_dictionary - - -class MoniGoManiConfiguration(MGMStrategy): - """ - MoniGoManiConfiguration is a Child Strategy which requires import of it's Parent Strategy, MoniGoManiHyperStrategy. - It separates most code from settings, and automates the refining of the search spaces and setting up of overrides in - between HyperOpt Runs. - """ - - #################################################################################################################### - # START MONIGOMANI SETTINGS SECTION # - #################################################################################################################### - timeframe = '1h' - backtest_timeframe = '5m' - precision = 1 - - # Default Minimal/Maximum search space values for signals: - min_weighted_signal_value = 0 - max_weighted_signal_value = 100 - min_trend_total_signal_needed_value = 30 - min_trend_total_signal_needed_candles_lookback_window_value = 1 - max_trend_total_signal_needed_candles_lookback_window_value = 6 - - # Search space thresholds, for detecting overrides and refining search spaces during the 2nd HyperOpt Run - search_threshold_weighted_signal_values = 10 - search_threshold_trend_total_signal_needed_candles_lookback_window_value = 1 - - # Number of weighted signals: - # Fill in the total number of different weighted signals in use in the weighted tables - # 'buy/sell__downwards/sideways/upwards_trend_total_signal_needed' settings will be multiplied with this value - # so their search spaces will be larger, resulting in more equally divided weighted signal scores when hyperopting - number_of_weighted_signals = 9 - - # ROI Table StepSize: - # Size of the steps in minutes to be used when calculating the long continuous ROI table - # MGM generates a custom really long table so it will have less gaps in it and be more continuous in it's decrease - roi_table_step_size = 5 - - #################################################################################################################### - # END MONIGOMANI SETTINGS SECTION # - #################################################################################################################### - - # Initialize empty buy/sell_params dictionaries - buy_params = {} - sell_params = {} - - #################################################################################################################### - # START OF 1ST RUN HYPEROPT RESULTS COPY-PASTE SECTION # - #################################################################################################################### - - # Paste 1st Run HyperOpt Results here... - - #################################################################################################################### - # END OF 1ST RUN HYPEROPT RESULTS COPY-PASTE SECTION # - #################################################################################################################### - - # Initialize the buy/sell_param_final dictionaries with results from the 1st HyperOpt Run - buy_param_final = buy_params - sell_param_final = sell_params - - #################################################################################################################### - # START OF 2ND (OR MORE) RUN HYPEROPT RESULTS COPY-PASTE SECTION # - #################################################################################################################### - - #################################################################################################################### - # END OF 2ND (OR MORE) RUN HYPEROPT RESULTS COPY-PASTE SECTION # - #################################################################################################################### - - # Update buy/sell_param_final dictionaries with 2nd HyperOpt Run Results - buy_param_final.update(buy_params) - sell_param_final.update(sell_params) - buy_params = buy_param_final - sell_params = sell_param_final - - #################################################################################################################### - # START OF HYPEROPT PARAMETERS CONFIGURATION SECTION # - #################################################################################################################### - - # HyperOpt Settings Override - # -------------------------- - # When the Parameters in below HyperOpt Space Parameters sections are altered as following examples then they can be - # used as overrides while hyperopting / backtesting / dry/live-running (only truly useful when hyperopting though!) - # Meaning you can use this to set individual buy_params/sell_params to a fixed value when hyperopting! - # WARNING: Always double check that when doing a fresh hyperopt or doing a dry/live-run that all overrides are - # turned off! - # - # Override Examples: - # Override to False: CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - # Override to 0: IntParameter(0, int(100*precision), default=0, space='sell', optimize=False, load=False) - # - # default= The value used when overriding - # optimize=False Exclude from hyperopting (Make static) - # load=False Don't load from above HYPEROPT RESULTS COPY-PASTE SECTION - - # ---------------------------------------------------------------- # - # Buy HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - - # Trend Detecting Buy Signal Weight Influence Tables - # ------------------------------------------------------- - # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to - # them while also finding the "perfect" weight division between each-other. - # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected - # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then - # total_buy_signal_needed) - - # React to Buy Signals when certain trends are detected (False would disable trading in said trend) - buy___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - buy___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - - # Downwards Trend Buy - # ------------------- - - # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed", min_trend_total_signal_needed_value, - int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - buy__downwards_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - buy__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Buy Signal Weight Influence Table - param = init_vars(buy_params, "buy_downwards_trend_adx_strong_up_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_adx_strong_up_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_ema_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_ema_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_sma_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_sma_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_downwards_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_downwards_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Sideways Trend Buy - # ------------------ - - # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed", - min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - buy__sideways_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - buy__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Buy Signal Weight Influence Table - param = init_vars(buy_params, "buy_sideways_trend_adx_strong_up_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_adx_strong_up_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_ema_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_ema_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_sma_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_sma_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_sideways_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_sideways_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Upwards Trend Buy - # ----------------- - - # Total Buy Signal Percentage needed for a signal to be positive - param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed", - min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - buy__upwards_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - buy__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Buy Signal Weight Influence Table - param = init_vars(buy_params, "buy_upwards_trend_adx_strong_up_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_adx_strong_up_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_ema_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_ema_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_sma_long_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_sma_short_golden_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(buy_params, "buy_upwards_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - buy_upwards_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # ---------------------------------------------------------------- # - # Sell HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - - # Trend Detecting Buy Signal Weight Influence Tables - # ------------------------------------------------------- - # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to - # them while also finding the "perfect" weight division between each-other. - # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected - # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then - # total_buy_signal_needed) - - # React to Sell Signals when certain trends are detected (False would disable trading in said trend) - sell___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - sell___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - - # Downwards Trend Sell - # -------------------- - - # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed", - min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - sell__downwards_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - sell__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_downwards_trend_adx_strong_down_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_adx_strong_down_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_ema_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_ema_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_sma_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_sma_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_downwards_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_downwards_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Sideways Trend Sell - # ------------------- - - # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed", - min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - sell__sideways_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - sell__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_sideways_trend_adx_strong_down_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_adx_strong_down_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_ema_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_ema_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_sma_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_sma_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_sideways_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_sideways_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Upwards Trend Sell - # ------------------ - - # Total Sell Signal Percentage needed for a signal to be positive - param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed", - min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), - search_threshold_weighted_signal_values, precision) - sell__upwards_trend_total_signal_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", - min_trend_total_signal_needed_candles_lookback_window_value, - max_trend_total_signal_needed_candles_lookback_window_value, - search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) - sell__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # Sell Signal Weight Influence Table - param = init_vars(sell_params, "sell_upwards_trend_adx_strong_down_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_adx_strong_down_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_bollinger_bands_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_ema_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_ema_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_macd_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_macd_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_rsi_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_rsi_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_sma_long_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_sma_short_death_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell_upwards_trend_vwap_cross_weight", min_weighted_signal_value, - max_weighted_signal_value, search_threshold_weighted_signal_values, precision) - sell_upwards_trend_vwap_cross_weight = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - # ---------------------------------------------------------------- # - # Sell Unclogger HyperOpt Space Parameters # - # ---------------------------------------------------------------- # - - sell___unclogger_enabled = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - - param = init_vars(sell_params, "sell___unclogger_minimal_losing_trade_duration_minutes", - 15, 60, search_threshold_weighted_signal_values, precision, False) - sell___unclogger_minimal_losing_trade_duration_minutes = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell___unclogger_minimal_losing_trades_open", - 1, 5, 1, precision, False) - sell___unclogger_minimal_losing_trades_open = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell___unclogger_open_trades_losing_percentage_needed", - 1, 60, search_threshold_weighted_signal_values, precision, False) - sell___unclogger_open_trades_losing_percentage_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window", - 10, 60, search_threshold_weighted_signal_values, precision, False) - sell___unclogger_trend_lookback_candles_window = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window_percentage_needed", - 10, 40, search_threshold_weighted_signal_values, precision, False) - sell___unclogger_trend_lookback_candles_window_percentage_needed = \ - IntParameter(param["min_value"], param["max_value"], default=param["default_value"], - space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - - sell___unclogger_trend_lookback_window_uses_downwards_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_sideways_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_upwards_candles = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - - #################################################################################################################### - # END OF HYPEROPT PARAMETERS CONFIGURATION SECTION # - #################################################################################################################### diff --git a/user_data/strategies/MoniGoManiHyperStrategy.py b/user_data/strategies/MoniGoManiHyperStrategy.py index 55dfa7ed0..6fb78d293 100644 --- a/user_data/strategies/MoniGoManiHyperStrategy.py +++ b/user_data/strategies/MoniGoManiHyperStrategy.py @@ -1,13 +1,13 @@ # --- Do not remove these libs ---------------------------------------------------------------------- +import os +import sys from scipy.interpolate import interp1d - import freqtrade.vendor.qtpylib.indicators as qtpylib import logging import numpy as np # noqa import pandas as pd # noqa import talib.abstract as ta from datetime import datetime, timedelta - from freqtrade.exchange import timeframe_to_prev_date from freqtrade.persistence import Trade from freqtrade.strategy \ @@ -15,6 +15,7 @@ from freqtrade.state import RunMode from numpy import timedelta64 from pandas import DataFrame +import json logger = logging.getLogger(__name__) @@ -23,6 +24,56 @@ # ta._ta_lib. can temporarily be used while writing as a workaround # Then change back to ta. so IDE won't nag about accessing a protected member of TA-Lib # ---------------------------------------------------------------------------------------------------- +def init_vars(parameter_dictionary: dict, parameter_name: str, parameter_min_value: int, parameter_max_value: int, + parameter_threshold: int, precision: float, overrideable: bool = True): + """ + Function to automatically initialize MoniGoMani's HyperOptable parameter values for both HyperOpt Runs. + + :param parameter_dictionary: Buy or Sell params dictionary + :param parameter_name: Name of the signal in the dictionary + :param parameter_min_value: Minimal search space value to use during the 1st HyperOpt Run and override value for weak signals on the 2nd HyperOpt Run + :param parameter_max_value: Maximum search space value to use during the 1st HyperOpt Run and override value for weak signals on the 2nd HyperOpt Run + :param parameter_threshold: Threshold to use for overriding weak/strong signals and setting up refined search spaces after the 1st HyperOpt Run + :param precision: Precision used while HyperOpting + :param overrideable: Allow value to be overrideable or not (defaults to 'True') + :return: Dictionary containing the search space values to use during the HyperOpt Runs + """ + parameter_value = parameter_dictionary.get(parameter_name) + + # 1st HyperOpt Run: Use provided min/max values for the search spaces + if parameter_value is None: + min_value = parameter_min_value + max_value = parameter_max_value + # 2nd HyperOpt Run: Use refined search spaces where needed + else: + min_value = parameter_min_value if parameter_value <= (parameter_min_value + parameter_threshold) else \ + parameter_value - parameter_threshold + max_value = parameter_max_value if parameter_value >= (parameter_max_value - parameter_threshold) else \ + parameter_value + parameter_threshold + + # 1st HyperOpt Run: Use middle of min/max values as default value + if parameter_value is None: + default_value = int((parameter_min_value + parameter_max_value) / 2) + # 2nd HyperOpt Run: Use Overrides where needed for default value + elif (max_value == parameter_max_value) and (overrideable is True): + default_value = parameter_max_value + elif min_value == parameter_min_value and (overrideable is True): + default_value = parameter_min_value + # 2nd HyperOpt Run: Use values found in Run 1 for the remaining default values + else: + default_value = parameter_value + + return_vars_dictionary = { + "min_value": int(min_value * precision), + "max_value": int(max_value * precision), + "default_value": int(default_value * precision), + # 1st HyperOpt Run: No overrides, 2nd HyperOpt Run: Apply Overrides where needed + "opt_and_Load": False if (parameter_value is not None) and (overrideable is True) and + (min_value == parameter_min_value or max_value == parameter_max_value) else True + } + + return return_vars_dictionary + class MoniGoManiHyperStrategy(IStrategy): """ @@ -51,821 +102,662 @@ class MoniGoManiHyperStrategy(IStrategy): #################################################################################### """ - # If enabled all Weighted Signal results will be added to the dataframe for easy debugging with BreakPoints - # Warning: Disable this for anything else then debugging in an IDE! (Integrated Development Environment) - debuggable_weighted_signal_dataframe = False - - # If enabled MoniGoMani logging will be displayed to the console and be integrated in Freqtrades native logging - # For live it's recommended to disable at least info/debug logging, to keep MGM as lightweight as possible! - use_mgm_logging = False - mgm_log_levels_enabled = { - 'info': True, - 'warning': True, - 'error': True, - 'debug': True - # ^ Debug is very verbose! Always set it to False when BackTesting/HyperOpting! - # (Only recommended to be True in an IDE with Breakpoints enabled or when you suspect a bug in the code) - } - - # Ps: Documentation has been moved to the Buy/Sell HyperOpt Space Parameters sections below this copy-paste section #################################################################################################################### - # START OF HYPEROPT RESULTS COPY-PASTE SECTION # + # START OF CONFIG NAMES SECTION # + #################################################################################################################### + mgm_config_name = 'mgm-config.json' + mgm_config_hyperopt_name = 'mgm-config-hyperopt.json' + #################################################################################################################### + # END OF CONFIG NAMES SECTION # #################################################################################################################### - # Buy hyperspace params: - buy_params = { - "buy___trades_when_downwards": True, # value loaded from strategy - "buy___trades_when_sideways": False, # value loaded from strategy - "buy___trades_when_upwards": True, # value loaded from strategy - "buy__downwards_trend_total_signal_needed": 109, - "buy__downwards_trend_total_signal_needed_candles_lookback_window": 6, - "buy__sideways_trend_total_signal_needed": 809, - "buy__sideways_trend_total_signal_needed_candles_lookback_window": 5, - "buy__upwards_trend_total_signal_needed": 285, - "buy__upwards_trend_total_signal_needed_candles_lookback_window": 6, - "buy_downwards_trend_adx_strong_up_weight": 68, - "buy_downwards_trend_bollinger_bands_weight": 73, - "buy_downwards_trend_ema_long_golden_cross_weight": 10, - "buy_downwards_trend_ema_short_golden_cross_weight": 81, - "buy_downwards_trend_macd_weight": 33, - "buy_downwards_trend_rsi_weight": 33, - "buy_downwards_trend_sma_long_golden_cross_weight": 42, - "buy_downwards_trend_sma_short_golden_cross_weight": 84, - "buy_downwards_trend_vwap_cross_weight": 21, - "buy_sideways_trend_adx_strong_up_weight": 83, - "buy_sideways_trend_bollinger_bands_weight": 75, - "buy_sideways_trend_ema_long_golden_cross_weight": 81, - "buy_sideways_trend_ema_short_golden_cross_weight": 46, - "buy_sideways_trend_macd_weight": 67, - "buy_sideways_trend_rsi_weight": 4, - "buy_sideways_trend_sma_long_golden_cross_weight": 8, - "buy_sideways_trend_sma_short_golden_cross_weight": 83, - "buy_sideways_trend_vwap_cross_weight": 26, - "buy_upwards_trend_adx_strong_up_weight": 96, - "buy_upwards_trend_bollinger_bands_weight": 49, - "buy_upwards_trend_ema_long_golden_cross_weight": 66, - "buy_upwards_trend_ema_short_golden_cross_weight": 32, - "buy_upwards_trend_macd_weight": 69, - "buy_upwards_trend_rsi_weight": 37, - "buy_upwards_trend_sma_long_golden_cross_weight": 3, - "buy_upwards_trend_sma_short_golden_cross_weight": 97, - "buy_upwards_trend_vwap_cross_weight": 53 - } - - # Sell hyperspace params: - sell_params = { - "sell___trades_when_downwards": True, # value loaded from strategy - "sell___trades_when_sideways": False, # value loaded from strategy - "sell___trades_when_upwards": True, # value loaded from strategy - "sell___unclogger_enabled": True, # value loaded from strategy - "sell___unclogger_minimal_losing_trade_duration_minutes": 19, - "sell___unclogger_minimal_losing_trades_open": 4, - "sell___unclogger_open_trades_losing_percentage_needed": 31, - "sell___unclogger_trend_lookback_candles_window": 51, - "sell___unclogger_trend_lookback_candles_window_percentage_needed": 35, - "sell___unclogger_trend_lookback_window_uses_downwards_candles": True, # value loaded from strategy - "sell___unclogger_trend_lookback_window_uses_sideways_candles": True, # value loaded from strategy - "sell___unclogger_trend_lookback_window_uses_upwards_candles": False, # value loaded from strategy - "sell__downwards_trend_total_signal_needed": 565, - "sell__downwards_trend_total_signal_needed_candles_lookback_window": 2, - "sell__sideways_trend_total_signal_needed": 638, - "sell__sideways_trend_total_signal_needed_candles_lookback_window": 2, - "sell__upwards_trend_total_signal_needed": 590, - "sell__upwards_trend_total_signal_needed_candles_lookback_window": 1, - "sell_downwards_trend_adx_strong_down_weight": 63, - "sell_downwards_trend_bollinger_bands_weight": 5, - "sell_downwards_trend_ema_long_death_cross_weight": 14, - "sell_downwards_trend_ema_short_death_cross_weight": 6, - "sell_downwards_trend_macd_weight": 92, - "sell_downwards_trend_rsi_weight": 98, - "sell_downwards_trend_sma_long_death_cross_weight": 91, - "sell_downwards_trend_sma_short_death_cross_weight": 86, - "sell_downwards_trend_vwap_cross_weight": 54, - "sell_sideways_trend_adx_strong_down_weight": 69, - "sell_sideways_trend_bollinger_bands_weight": 57, - "sell_sideways_trend_ema_long_death_cross_weight": 78, - "sell_sideways_trend_ema_short_death_cross_weight": 72, - "sell_sideways_trend_macd_weight": 0, - "sell_sideways_trend_rsi_weight": 41, - "sell_sideways_trend_sma_long_death_cross_weight": 76, - "sell_sideways_trend_sma_short_death_cross_weight": 49, - "sell_sideways_trend_vwap_cross_weight": 1, - "sell_upwards_trend_adx_strong_down_weight": 72, - "sell_upwards_trend_bollinger_bands_weight": 38, - "sell_upwards_trend_ema_long_death_cross_weight": 48, - "sell_upwards_trend_ema_short_death_cross_weight": 65, - "sell_upwards_trend_macd_weight": 24, - "sell_upwards_trend_rsi_weight": 58, - "sell_upwards_trend_sma_long_death_cross_weight": 65, - "sell_upwards_trend_sma_short_death_cross_weight": 99, - "sell_upwards_trend_vwap_cross_weight": 37 - } - - # ROI table: - minimal_roi = { - "0": 0.17, - "5": 0.16926, - "10": 0.16853, - "15": 0.16779, - "20": 0.16705, - "25": 0.16631, - "30": 0.16558, - "35": 0.16484, - "40": 0.1641, - "45": 0.16336, - "50": 0.16263, - "55": 0.16189, - "60": 0.16115, - "65": 0.16041, - "70": 0.15968, - "75": 0.15894, - "80": 0.1582, - "85": 0.15746, - "90": 0.15673, - "95": 0.15599, - "100": 0.15525, - "105": 0.15451, - "110": 0.15378, - "115": 0.15304, - "120": 0.1523, - "125": 0.15156, - "130": 0.15083, - "135": 0.15009, - "140": 0.14935, - "145": 0.14862, - "150": 0.14788, - "155": 0.14714, - "160": 0.1464, - "165": 0.14567, - "170": 0.14493, - "175": 0.14419, - "180": 0.14345, - "185": 0.14272, - "190": 0.14198, - "195": 0.14124, - "200": 0.1405, - "205": 0.13977, - "210": 0.13903, - "215": 0.13829, - "220": 0.13755, - "225": 0.13682, - "230": 0.13608, - "235": 0.13534, - "240": 0.1346, - "245": 0.13387, - "250": 0.13313, - "255": 0.13239, - "260": 0.13165, - "265": 0.13092, - "270": 0.13018, - "275": 0.12944, - "280": 0.1284, - "285": 0.12689, - "290": 0.12539, - "295": 0.12389, - "300": 0.12238, - "305": 0.12088, - "310": 0.11937, - "315": 0.11787, - "320": 0.11636, - "325": 0.11486, - "330": 0.11336, - "335": 0.11185, - "340": 0.11035, - "345": 0.10884, - "350": 0.10734, - "355": 0.10583, - "360": 0.10433, - "365": 0.10283, - "370": 0.10132, - "375": 0.09982, - "380": 0.09831, - "385": 0.09681, - "390": 0.0953, - "395": 0.0938, - "400": 0.0923, - "405": 0.09079, - "410": 0.08929, - "415": 0.08778, - "420": 0.08628, - "425": 0.08477, - "430": 0.08327, - "435": 0.08177, - "440": 0.08026, - "445": 0.07876, - "450": 0.07725, - "455": 0.07575, - "460": 0.07424, - "465": 0.07274, - "470": 0.07123, - "475": 0.06973, - "480": 0.06823, - "485": 0.06672, - "490": 0.06522, - "495": 0.06371, - "500": 0.06221, - "505": 0.0607, - "510": 0.0592, - "515": 0.0577, - "520": 0.05619, - "525": 0.05469, - "530": 0.05318, - "535": 0.05168, - "540": 0.05017, - "545": 0.04867, - "550": 0.04717, - "555": 0.04566, - "560": 0.04416, - "565": 0.04265, - "570": 0.04115, - "575": 0.03964, - "580": 0.03814, - "585": 0.03664, - "590": 0.03513, - "595": 0.03363, - "600": 0.03212, - "605": 0.03062, - "610": 0.02911, - "615": 0.02761, - "620": 0.02611, - "625": 0.0246, - "630": 0.0239, - "635": 0.02372, - "640": 0.02355, - "645": 0.02337, - "650": 0.0232, - "655": 0.02302, - "660": 0.02285, - "665": 0.02267, - "670": 0.0225, - "675": 0.02232, - "680": 0.02215, - "685": 0.02197, - "690": 0.0218, - "695": 0.02162, - "700": 0.02145, - "705": 0.02127, - "710": 0.0211, - "715": 0.02092, - "720": 0.02075, - "725": 0.02057, - "730": 0.0204, - "735": 0.02022, - "740": 0.02005, - "745": 0.01987, - "750": 0.0197, - "755": 0.01952, - "760": 0.01935, - "765": 0.01917, - "770": 0.019, - "775": 0.01882, - "780": 0.01865, - "785": 0.01847, - "790": 0.0183, - "795": 0.01812, - "800": 0.01795, - "805": 0.01777, - "810": 0.0176, - "815": 0.01742, - "820": 0.01725, - "825": 0.01707, - "830": 0.0169, - "835": 0.01672, - "840": 0.01655, - "845": 0.01637, - "850": 0.0162, - "855": 0.01602, - "860": 0.01585, - "865": 0.01567, - "870": 0.0155, - "875": 0.01532, - "880": 0.01515, - "885": 0.01497, - "890": 0.0148, - "895": 0.01462, - "900": 0.01445, - "905": 0.01427, - "910": 0.0141, - "915": 0.01392, - "920": 0.01375, - "925": 0.01357, - "930": 0.0134, - "935": 0.01322, - "940": 0.01305, - "945": 0.01287, - "950": 0.0127, - "955": 0.01252, - "960": 0.01235, - "965": 0.01217, - "970": 0.012, - "975": 0.01183, - "980": 0.01165, - "985": 0.01148, - "990": 0.0113, - "995": 0.01113, - "1000": 0.01095, - "1005": 0.01078, - "1010": 0.0106, - "1015": 0.01043, - "1020": 0.01025, - "1025": 0.01008, - "1030": 0.0099, - "1035": 0.00973, - "1040": 0.00955, - "1045": 0.00938, - "1050": 0.0092, - "1055": 0.00903, - "1060": 0.00885, - "1065": 0.00868, - "1070": 0.0085, - "1075": 0.00833, - "1080": 0.00815, - "1085": 0.00798, - "1090": 0.0078, - "1095": 0.00763, - "1100": 0.00745, - "1105": 0.00728, - "1110": 0.0071, - "1115": 0.00693, - "1120": 0.00675, - "1125": 0.00658, - "1130": 0.0064, - "1135": 0.00623, - "1140": 0.00605, - "1145": 0.00588, - "1150": 0.0057, - "1155": 0.00553, - "1160": 0.00535, - "1165": 0.00518, - "1170": 0.005, - "1175": 0.00483, - "1180": 0.00465, - "1185": 0.00448, - "1190": 0.0043, - "1195": 0.00413, - "1200": 0.00395, - "1205": 0.00378, - "1210": 0.0036, - "1215": 0.00343, - "1220": 0.00325, - "1225": 0.00308, - "1230": 0.0029, - "1235": 0.00273, - "1240": 0.00255, - "1245": 0.00238, - "1250": 0.0022, - "1255": 0.00203, - "1260": 0.00185, - "1265": 0.00168, - "1270": 0.0015, - "1275": 0.00133, - "1280": 0.00115, - "1285": 0.00098, - "1290": 0.0008, - "1295": 0.00063, - "1300": 0.00045, - "1305": 0.00028, - "1310": 0.0001, - "1315": 0 - } - - # Stoploss: - stoploss = -0.111 - - # Trailing stop: + # Load the MoniGoMani settings + mgm_config_path = os.getcwd() + '/user_data/' + mgm_config_name + if os.path.isfile(mgm_config_path) is True: + # Load the 'mgm-config.json' file as an object and parse it as a dictionary + file_object = open(mgm_config_path, ) + json_data = json.load(file_object) + mgm_config = json_data['monigomani_settings'] + + else: + sys.exit(f'MoniGoManiHyperStrategy - ERROR - The main MoniGoMani configuration file ({mgm_config_name}) can\'t ' + f'be found at: {mgm_config_path}... Please provide the correct file and/or alter "mgm_config_name" in ' + f'"MoniGoManiHyperStrategy.py"') + + # Apply the loaded MoniGoMani Settings + timeframe = mgm_config['timeframe'] + backtest_timeframe = mgm_config['backtest_timeframe'] + startup_candle_count = mgm_config['startup_candle_count'] + precision = mgm_config['precision'] + min_weighted_signal_value = mgm_config['min_weighted_signal_value'] + max_weighted_signal_value = mgm_config['max_weighted_signal_value'] + min_trend_total_signal_needed_value = mgm_config['min_trend_total_signal_needed_value'] + min_trend_total_signal_needed_candles_lookback_window_value = \ + mgm_config['min_trend_total_signal_needed_candles_lookback_window_value'] + max_trend_total_signal_needed_candles_lookback_window_value = \ + mgm_config['max_trend_total_signal_needed_candles_lookback_window_value'] + search_threshold_weighted_signal_values = mgm_config['search_threshold_weighted_signal_values'] + search_threshold_trend_total_signal_needed_candles_lookback_window_value = \ + mgm_config['search_threshold_trend_total_signal_needed_candles_lookback_window_value'] + number_of_weighted_signals = mgm_config['number_of_weighted_signals'] + roi_table_step_size = mgm_config['roi_table_step_size'] + debuggable_weighted_signal_dataframe = mgm_config['debuggable_weighted_signal_dataframe'] + use_mgm_logging = mgm_config['use_mgm_logging'] + mgm_log_levels_enabled = mgm_config['mgm_log_levels_enabled'] + + # Initialize empty buy/sell_params dictionaries and initial (trailing)stoploss values + buy_params = {} + sell_params = {} + stoploss = -0.25 trailing_stop = True trailing_stop_positive = 0.01 - trailing_stop_positive_offset = 0.013 + trailing_stop_positive_offset = 0.03 trailing_only_offset_is_reached = True - + + # If results from a previous HyperOpt Run are found then continue the next HyperOpt Run upon them + mgm_config_hyperopt_path = os.getcwd() + '/user_data/' + mgm_config_hyperopt_name + if os.path.isfile(mgm_config_hyperopt_path) is True: + # Load the previous 'mgm-config-hyperopt.json' file as an object and parse it as a dictionary + file_object = open(mgm_config_hyperopt_path, ) + mgm_config_hyperopt = json.load(file_object) + + # Convert the loaded 'mgm-config-hyperopt.json' data to the needed HyperOpt Results format + for param in mgm_config_hyperopt['params']: + param_value = mgm_config_hyperopt['params'][str(param)] + if (isinstance(param_value, str) is True) and (str.isdigit(param_value) is True): + param_value = int(param_value) + + if str(param).startswith('buy'): + buy_params[str(param)] = param_value + else: + sell_params[str(param)] = param_value + + minimal_roi = mgm_config_hyperopt['minimal_roi'] + stoploss = mgm_config_hyperopt['stoploss'] + if isinstance(mgm_config_hyperopt['trailing_stop'], str) is True: + trailing_stop = bool(mgm_config_hyperopt['trailing_stop']) + else: + trailing_stop = mgm_config_hyperopt['trailing_stop'] + trailing_stop_positive = mgm_config_hyperopt['trailing_stop_positive'] + trailing_stop_positive_offset = mgm_config_hyperopt['trailing_stop_positive_offset'] + if isinstance(mgm_config_hyperopt['trailing_only_offset_is_reached'], str) is True: + trailing_only_offset_is_reached = bool(mgm_config_hyperopt['trailing_only_offset_is_reached']) + else: + trailing_only_offset_is_reached = mgm_config_hyperopt['trailing_only_offset_is_reached'] + #################################################################################################################### - # END OF HYPEROPT RESULTS COPY-PASTE SECTION # + # START OF HYPEROPT PARAMETERS CONFIGURATION SECTION # #################################################################################################################### - # Create dictionary to store custom information MoniGoMani will be using in RAM - custom_info = { - 'open_trades': {} - } + # ---------------------------------------------------------------- # + # Buy HyperOpt Space Parameters # + # ---------------------------------------------------------------- # + + # React to Buy Signals when certain trends are detected (False would disable trading in said trend) + buy___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) + buy___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) + buy___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - # If enabled MoniGoMani's custom stoploss function will be used (Needed for open_trade custom_information_storage) - use_custom_stoploss = True # Leave this enabled when using the 'losing trade unclogger' + # ---------------------------------------------------------------- # + # Sell HyperOpt Space Parameters # + # ---------------------------------------------------------------- # - # Create class level runmode detection (No need for configuration, will automatically be detected, - # changed & used at runtime) - is_dry_live_run_detected = True + # React to Sell Signals when certain trends are detected (False would disable trading in said trend) + sell___trades_when_downwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___trades_when_sideways = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + sell___trades_when_upwards = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - # TimeFrame-Zoom: - # To prevent profit exploitation during backtesting/hyperopting we backtest/hyperopt this can be used. - # When normally a 'timeframe' (1h candles) would be used, you can zoom in using a smaller 'backtest_timeframe' - # (5m candles) instead. This happens while still using an 'informative_timeframe' (original 1h candles) to generate - # the buy/sell signals. + # ---------------------------------------------------------------- # + # Sell Unclogger HyperOpt Space Parameters # + # ---------------------------------------------------------------- # - # With this more realistic results should be found during backtesting/hyperopting. Since the buy/sell signals will - # operate on the same 'timeframe' that live would use (1h candles), while at the same time 'backtest_timeframe' - # (5m or 1m candles) will simulate price movement during that 'timeframe' (1h candle), providing more realistic - # trailing stoploss and ROI behaviour during backtesting/hyperopting. + sell___unclogger_enabled = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - # Warning: Since MoniGoMani v0.10.0 it appears TimeFrame-Zoom is not needed anymore and even lead to bad results! - # Warning: Candle data for both 'timeframe' as 'backtest_timeframe' will have to be downloaded before you will be - # able to backtest/hyperopt! (Since both will be used) - # Warning: This will be slower than backtesting at 1h and 1m is a CPU killer. But if you plan on using trailing - # stoploss or ROI, you probably want to know that your backtest results are not complete lies. - # Source: https://brookmiles.github.io/freqtrade-stuff/2021/04/12/backtesting-traps/ + param = init_vars(sell_params, "sell___unclogger_minimal_losing_trade_duration_minutes", + 15, 60, search_threshold_weighted_signal_values, precision, False) + sell___unclogger_minimal_losing_trade_duration_minutes = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - # To disable TimeFrame-Zoom just use the same candles for 'timeframe' & 'backtest_timeframe' - timeframe = '1h' # Optimal TimeFrame for MoniGoMani (used during Dry/Live-Runs) - backtest_timeframe = '5m' # Optimal TimeFrame-Zoom for MoniGoMani (used to zoom in during Backtesting/HyperOpting) + param = init_vars(sell_params, "sell___unclogger_minimal_losing_trades_open", + 1, 5, 1, precision, False) + sell___unclogger_minimal_losing_trades_open = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - informative_timeframe = timeframe # Gets set automatically - timeframe = backtest_timeframe - timeframe_multiplier = None # Gets set automatically + param = init_vars(sell_params, "sell___unclogger_open_trades_losing_percentage_needed", + 1, 60, search_threshold_weighted_signal_values, precision, False) + sell___unclogger_open_trades_losing_percentage_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - # Number of candles the strategy requires before producing valid signals. - # In live and dry runs this ratio will be 1, so nothing changes there. - # But we need `startup_candle_count` to be for the timeframe of - # `informative_timeframe` (1h) not `timeframe` (5m) for backtesting. - startup_candle_count = 400 - # SMA200 needs 200 candles before producing valid signals - # EMA200 needs an extra 200 candles of SMA200 before producing valid signals - - # Precision: - # This value can be used to control the precision of hyperopting. - # A value of 1/5 will effectively set the step size to be 5 (0, 5, 10 ...) - # A value of 5 will set the step size to be 1/5=0.2 (0, 0.2, 0.4, 0.8, ...) - # A smaller value will limit the search space a lot, but may skip over good values. - precision = 1 - - # Number of weighted signals: - # Fill in the total number of different weighted signals in use in the weighted tables - # 'buy/sell__downwards/sideways/upwards_trend_total_signal_needed' settings will be multiplied with this value - # so their search spaces will be larger, resulting in more equally divided weighted signal scores when hyperopting - number_of_weighted_signals = 9 - - # ROI Table StepSize: - # Size of the steps in minutes to be used when calculating the long continuous ROI table - # MGM generates a custom really long table so it will have less gaps in it and be more continuous in it's decrease - roi_table_step_size = 5 + param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window", + 10, 60, search_threshold_weighted_signal_values, precision, False) + sell___unclogger_trend_lookback_candles_window = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - # Plot configuration to show all signals used in MoniGoMani in FreqUI (Use load from Strategy in FreqUI) - plot_config = { - 'main_plot': { - # Main Plot Indicators (SMAs, EMAs, Bollinger Bands, VWAP) - 'sma9': {'color': '#2c05f6'}, - 'sma50': {'color': '#19038a'}, - 'sma200': {'color': '#0d043b'}, - 'ema9': {'color': '#12e5a6'}, - 'ema50': {'color': '#0a8963'}, - 'ema200': {'color': '#074b36'}, - 'bb_upperband': {'color': '#6f1a7b'}, - 'bb_lowerband': {'color': '#6f1a7b'}, - 'vwap': {'color': '#727272'} - }, - 'subplots': { - # Subplots - Each dict defines one additional plot (MACD, ADX, Plus/Minus Direction, RSI) - 'MACD (Moving Average Convergence Divergence)': { - 'macd': {'color': '#19038a'}, - 'macdsignal': {'color': '#ae231c'} - }, - 'ADX (Average Directional Index) + Plus & Minus Directions': { - 'adx': {'color': '#6f1a7b'}, - 'plus_di': {'color': '#0ad628'}, - 'minus_di': {'color': '#ae231c'} - }, - 'RSI (Relative Strength Index)': { - 'rsi': {'color': '#7fba3c'} - } - } - } + param = init_vars(sell_params, "sell___unclogger_trend_lookback_candles_window_percentage_needed", + 10, 40, search_threshold_weighted_signal_values, precision, False) + sell___unclogger_trend_lookback_candles_window_percentage_needed = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + sell___unclogger_trend_lookback_window_uses_downwards_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_sideways_candles = \ + CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) + sell___unclogger_trend_lookback_window_uses_upwards_candles = \ + CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + + #################################################################################################################### + # END OF HYPEROPT PARAMETERS CONFIGURATION SECTION # + #################################################################################################################### - # HyperOpt Settings Override - # -------------------------- - # When the Parameters in below HyperOpt Space Parameters sections are altered as following examples then they can be - # used as overrides while hyperopting / backtesting / dry/live-running (only truly useful when hyperopting though!) - # Meaning you can use this to set individual buy_params/sell_params to a fixed value when hyperopting! - # WARNING: Always double check that when doing a fresh hyperopt or doing a dry/live-run that all overrides are - # turned off! - # - # Override Examples: - # Override to False: CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - # Override to 0: IntParameter(0, int(100*precision), default=0, space='sell', optimize=False, load=False) - # - # default= The value used when overriding - # optimize=False Exclude from hyperopting (Make static) - # load=False Don't load from above HYPEROPT RESULTS COPY-PASTE SECTION + # Below HyperOpt Space Parameters should preferably be tweaked using the 'monigomani_settings' section inside + # 'mgm-config.json'. But they can still be manually tweaked if truly needed! # ---------------------------------------------------------------- # # Buy HyperOpt Space Parameters # # ---------------------------------------------------------------- # - # Trend Detecting Buy Signal Weight Influence Tables - # ------------------------------------------------------- - # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to - # them while also finding the "perfect" weight division between each-other. - # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected - # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then - # total_buy_signal_needed) - - # React to Buy Signals when certain trends are detected (False would disable trading in said trend) - buy___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - buy___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='buy', optimize=False, load=False) - buy___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='buy', optimize=False, load=False) - # Downwards Trend Buy # ------------------- - # Total Buy Signal Weight needed for Downwards Trends, calculated over a small lookback window, - # to check if an actual buy should occur + # Total Buy Signal Percentage needed for a signal to be positive + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed", min_trend_total_signal_needed_value, + int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__downwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__downwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table + param = init_vars(buy_params, "buy_downwards_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_adx_strong_up_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_ema_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_ema_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_sma_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_sma_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_downwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_downwards_trend_vwap_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sideways Trend Buy # ------------------ - # Total Buy Signal Weight needed for Sideways Trends, calculated over a small lookback window, - # to check if an actual buy should occur + # Total Buy Signal Percentage needed for a signal to be positive + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__sideways_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__sideways_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table + param = init_vars(buy_params, "buy_sideways_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_adx_strong_up_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_ema_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_ema_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_sma_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_sma_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_sideways_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_sideways_trend_vwap_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Upwards Trend Buy # ----------------- - # Total Buy Signal Weight needed for Upwards Trends, calculated over a small lookback window, - # to check if an actual buy should occur + # Total Buy Signal Percentage needed for a signal to be positive + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) buy__upwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy__upwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) buy__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Buy Signal Weight Influence Table + param = init_vars(buy_params, "buy_upwards_trend_adx_strong_up_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_adx_strong_up_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) - buy_upwards_trend_ema_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_ema_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_ema_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_ema_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) + buy_upwards_trend_ema_long_golden_cross_weight = \ + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_sma_long_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_sma_long_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_sma_short_golden_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_sma_short_golden_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(buy_params, "buy_upwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) buy_upwards_trend_vwap_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='buy', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='buy', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # ---------------------------------------------------------------- # # Sell HyperOpt Space Parameters # # ---------------------------------------------------------------- # - # Trend Detecting Buy Signal Weight Influence Tables - # ------------------------------------------------------- - # The idea is to let hyperopt find out which signals are more important over other signals by allocating weights to - # them while also finding the "perfect" weight division between each-other. - # These Signal Weight Influence Tables will be allocated to signals when their respective trend is detected - # (Signals can be turned off by allocating 0 or turned into an override by setting them equal to or higher then - # total_buy_signal_needed) - - # React to Sell Signals when certain trends are detected (False would disable trading in said trend) - sell___trades_when_downwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___trades_when_sideways = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) - sell___trades_when_upwards = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - # Downwards Trend Sell # -------------------- - # Total Sell Signal Weight needed for Downwards Trends, calculated over a small lookback window, - # to check if an actual sell should occur + # Total Sell Signal Percentage needed for a signal to be positive + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__downwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__downwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__downwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), int(6 * precision), default=(1 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table + param = init_vars(sell_params, "sell_downwards_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_adx_strong_down_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_ema_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_ema_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_sma_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_sma_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_downwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_downwards_trend_vwap_cross_weight = \ - IntParameter(int(5 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sideways Trend Sell # ------------------- - # Total Sell Signal Weight needed for Sideways Trends, calculated over a small lookback window, - # to check if an actual sell should occur + # Total Sell Signal Percentage needed for a signal to be positive + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__sideways_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__sideways_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__sideways_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), (6 * precision), default=(1 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table + param = init_vars(sell_params, "sell_sideways_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_adx_strong_down_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_ema_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_ema_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_sma_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_sma_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_sideways_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_sideways_trend_vwap_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Upwards Trend Sell # ------------------ - # Total Sell Signal Weight needed for Sideways Trends, calculated over a small lookback window, - # to check if an actual sell should occur + # Total Sell Signal Percentage needed for a signal to be positive + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed", + min_trend_total_signal_needed_value, int(max_weighted_signal_value * number_of_weighted_signals), + search_threshold_weighted_signal_values, precision) sell__upwards_trend_total_signal_needed = \ - IntParameter(int(30 * precision), int(100 * number_of_weighted_signals * precision), default=int(30 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell__upwards_trend_total_signal_needed_candles_lookback_window", + min_trend_total_signal_needed_candles_lookback_window_value, + max_trend_total_signal_needed_candles_lookback_window_value, + search_threshold_trend_total_signal_needed_candles_lookback_window_value, precision, False) sell__upwards_trend_total_signal_needed_candles_lookback_window = \ - IntParameter(int(1 * precision), int(6 * precision), default=int(1 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) # Sell Signal Weight Influence Table + param = init_vars(sell_params, "sell_upwards_trend_adx_strong_down_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_adx_strong_down_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_bollinger_bands_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_bollinger_bands_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_ema_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_ema_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_ema_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_ema_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_macd_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_macd_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_rsi_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_rsi_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_sma_long_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_sma_long_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_sma_short_death_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_sma_short_death_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) + + param = init_vars(sell_params, "sell_upwards_trend_vwap_cross_weight", min_weighted_signal_value, + max_weighted_signal_value, search_threshold_weighted_signal_values, precision) sell_upwards_trend_vwap_cross_weight = \ - IntParameter(int(0 * precision), int(100 * precision), default=int(50 * precision), - space='sell', optimize=True, load=True) + IntParameter(param["min_value"], param["max_value"], default=param["default_value"], + space='sell', optimize=param["opt_and_Load"], load=param["opt_and_Load"]) - # ---------------------------------------------------------------- # - # Sell Unclogger HyperOpt Space Parameters # - # ---------------------------------------------------------------- # + # Create dictionary to store custom information MoniGoMani will be using in RAM + custom_info = { + 'open_trades': {} + } - sell___unclogger_enabled = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_minimal_losing_trade_duration_minutes = \ - IntParameter(int(15 * precision), int(60 * precision), default=int(15 * precision), - space='sell', optimize=True, load=True) - sell___unclogger_minimal_losing_trades_open = \ - IntParameter(int(1 * precision), int(5 * precision), default=int(1 * precision), - space='sell', optimize=True, load=True) - sell___unclogger_open_trades_losing_percentage_needed = \ - IntParameter(int(1 * precision), int(60 * precision), default=int(1 * precision), - space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window = \ - IntParameter(int(10 * precision), int(60 * precision), default=int(10 * precision), - space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_candles_window_percentage_needed = \ - IntParameter(int(10 * precision), int(40 * precision), default=int(10 * precision), - space='sell', optimize=True, load=True) - sell___unclogger_trend_lookback_window_uses_downwards_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_sideways_candles = \ - CategoricalParameter([True, False], default=True, space='sell', optimize=False, load=False) - sell___unclogger_trend_lookback_window_uses_upwards_candles = \ - CategoricalParameter([True, False], default=False, space='sell', optimize=False, load=False) + # Initialize some parameters which will be automatically configured/used by MoniGoMani + use_custom_stoploss = True # Leave this enabled (Needed for open_trade custom_information_storage) + is_dry_live_run_detected = True # Class level runmode detection, Gets set automatically + informative_timeframe = timeframe # Gets set automatically + timeframe = backtest_timeframe # Gets set automatically + timeframe_multiplier = None # Gets set automatically + + # Plot configuration to show all signals used in MoniGoMani in FreqUI (Use load from Strategy in FreqUI) + plot_config = { + 'main_plot': { + # Main Plot Indicators (SMAs, EMAs, Bollinger Bands, VWAP) + 'sma9': {'color': '#2c05f6'}, + 'sma50': {'color': '#19038a'}, + 'sma200': {'color': '#0d043b'}, + 'ema9': {'color': '#12e5a6'}, + 'ema50': {'color': '#0a8963'}, + 'ema200': {'color': '#074b36'}, + 'bb_upperband': {'color': '#6f1a7b'}, + 'bb_lowerband': {'color': '#6f1a7b'}, + 'vwap': {'color': '#727272'} + }, + 'subplots': { + # Subplots - Each dict defines one additional plot (MACD, ADX, Plus/Minus Direction, RSI) + 'MACD (Moving Average Convergence Divergence)': { + 'macd': {'color': '#19038a'}, + 'macdsignal': {'color': '#ae231c'} + }, + 'ADX (Average Directional Index) + Plus & Minus Directions': { + 'adx': {'color': '#6f1a7b'}, + 'plus_di': {'color': '#0ad628'}, + 'minus_di': {'color': '#ae231c'} + }, + 'RSI (Relative Strength Index)': { + 'rsi': {'color': '#7fba3c'} + } + } + } class HyperOpt: # Generate a Custom Long Continuous ROI-Table with less gaps in it @@ -916,6 +808,12 @@ def __init__(self, config: dict): self.startup_candle_count *= self.timeframe_multiplier else: + if os.path.isfile(self.mgm_config_hyperopt_path) is False: + sys.exit(f'MoniGoManiHyperStrategy - ERROR - The MoniGoMani HyperOpt Results configuration file ' + f'({self.mgm_config_hyperopt_name}) can\'t be found at: {self.mgm_config_hyperopt_path}... ' + f'Please Optimize your MoniGoMani before Dry/Live running! Once optimized provide the correct ' + f'file and/or alter "mgm_config_hyperopt_name" in "MoniGoManiHyperStrategy.py"') + self.is_dry_live_run_detected = True self.mgm_logger('info', initialization, f'Current run mode detected as: Dry/Live-Run. ' f'Auto updated is_dry_live_run_detected to: True') @@ -1068,7 +966,7 @@ def _populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFram # Detect if current trend going Downwards / Sideways / Upwards, strategy will respond accordingly dataframe.loc[(dataframe['adx'] > 22) & (dataframe['plus_di'] < dataframe['minus_di']), 'trend'] = 'downwards' - dataframe.loc[dataframe['adx'] < 22, 'trend'] = 'sideways' + dataframe.loc[dataframe['adx'] <= 22, 'trend'] = 'sideways' dataframe.loc[(dataframe['adx'] > 22) & (dataframe['plus_di'] > dataframe['minus_di']), 'trend'] = 'upwards' return dataframe