freqtrade / freqtrade

Free, open source crypto trading bot

Home Page:https://www.freqtrade.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mismatch in hyperopt and backtesting

luca-palese opened this issue · comments

Describe your environment

  • Operating system: Windows 10
  • Python Version: 3.12.1 (python -V)
  • CCXT version: CCXT 4.2.51 (pip freeze | grep ccxt)
  • Freqtrade Version: freqtrade 2024.2 (freqtrade -V or docker compose run --rm freqtrade -V for Freqtrade running in docker)

Note: All issues other than enhancement requests will be closed without further comment if the above template is deleted or not filled out.

Describe the problem:

Hi guys, first time in the faq so first of all thanks for this :) .
I got this weird mismatch in the hyperopt results, where trade are executed and parameters are optimized; but when I backtest on the same time period no trade are executed. The exchange is Binance and it is a strategy for futures.it is something stupid , but it did happened to me other times, for example I can see the trade in the UI but the backtesting function skips it; but never like this.
Thank again :)

Steps to reproduce:

1)my strategy

# --- Do not remove these libs ---
from functools import reduce
import numpy as np  # noqa
import pandas as pd  # noqa
from pandas import DataFrame
# --- Do not remove these libs ---
from freqtrade.strategy.interface import IStrategy
from typing import Dict, List
from functools import reduce
from pandas import DataFrame
# --------------------------------

import talib.abstract as ta
import numpy as np
import freqtrade.vendor.qtpylib.indicators as qtpylib
import datetime
from technical.util import resample_to_interval, resampled_merge
from datetime import datetime, timedelta
from freqtrade.persistence import Trade
from freqtrade.strategy import informative, stoploss_from_open, merge_informative_pair, DecimalParameter, IntParameter, CategoricalParameter
import technical.indicators as ftt
from freqtrade.strategy import (
    BooleanParameter,
    CategoricalParameter,
    DecimalParameter,
    IStrategy,
    IntParameter,
)

# --------------------------------
# Add your lib to import here
import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib


# This class is a sample. Feel free to customize it.
class FAdxSmaStrategy(IStrategy):

    INTERFACE_VERSION = 3
    timeframe = "4h"

    can_short = True
    protections = [
        # 	{
        # 		"method": "StoplossGuard",
        # 		"lookback_period_candles": 12,
        # 		"trade_limit": 1,
        # 		"stop_duration_candles": 6,
        # 		"only_per_pair": True
        # 	},
        # 	{
        # 		"method": "StoplossGuard",
        # 		"lookback_period_candles": 12,
        # 		"trade_limit": 2,
        # 		"stop_duration_candles": 6,
        # 		"only_per_pair": False
        # 	},
        {
            "method": "LowProfitPairs",
            "lookback_period_candles": 60,
            "trade_limit": 1,



            
            "stop_duration_candles": 96,
            "required_profit": 0
        },
        {
            "method": "CooldownPeriod",
            "stop_duration_candles": 2
        }
    ]

    # Buy hyperspace params:
    buy_params = {
    "base_nb_candles_buy":8,
    "base_nb_candles_buy_short":66,
    "keltner_length":14,
    "ewo_high": 2.5,
    "ewo_low": -8.5,
    "low_offset":1,
    "high_offset_short":1,
    "rsi_buy":  45,
    "fast_ewo":40,
    "slow_ewo":190
    }
    # Sell hyperspace params:
    sell_params = {
        "base_nb_candles_sell":70,
        "base_nb_candles_sell_short":11,

        "high_offset": 1,
        "low_offset_short":1,
        "rsi_short":55
    }

    # and disable roi:
    # ROI table:
    minimal_roi = { 
      "0": 0.25,
      "138": 0.1,
      "400": 0.05,
      "520": 0
    }
    

    # Stoploss:
    stoploss = -0.333

    
    # SMAOffset
    base_nb_candles_buy = IntParameter(
        5, 20, default=9, space='buy', optimize=True)
    base_nb_candles_sell = IntParameter(
        30, 60, default=30, space='sell', optimize=True)
    low_offset = DecimalParameter(
        0.9, 0.99, default=0.95, space='buy', optimize=True)
    high_offset = DecimalParameter(
        1, 1.1, default=1.05, space='sell', optimize=True)
    

    
    low_offset_short = DecimalParameter(
        0.9, 0.99, default=0.95, space='buy', optimize=True)
    high_offset_short = DecimalParameter(
        1, 1.1, default=1.05, space='sell', optimize=True)
    base_nb_candles_buy_short = IntParameter(
        30,60, default=45, space='buy', optimize=True)
    base_nb_candles_sell_short = IntParameter(
        5, 20, default=9, space='sell', optimize=True)

    # EWO
    fast_ewo = IntParameter(10, 30, default=20, space='buy', optimize=True)
    slow_ewo = IntParameter(40,100, default=70, space='buy', optimize=True)
    
    avg_ewo=int(np.floor(fast_ewo.value+slow_ewo.value)/2)

    keltner_length=IntParameter(10, 40, default=24, space='buy', optimize=False)

    rsi_period = IntParameter(10,50, default=30, space='buy', optimize=False)


    #ewo_low = DecimalParameter(-20, -5,default=-12, space='buy', optimize=False)
    ewo_high = DecimalParameter(1,6, default=3, space='buy', optimize=True)
    rsi_buy = IntParameter(40,80, default=70, space='buy', optimize=False)


    ewo_low = DecimalParameter(-6,1,default=-3, space='sell', optimize=True)
    #ewo_high_short = DecimalParameter(10, 23, default=15, space='sell', optimize=False)
    rsi_short = IntParameter(30,70, default=55, space='sell', optimize=False)

    # Trailing stop: 

    trailing_stop = True
    trailing_stop_positive = 0.01
    trailing_stop_positive_offset = 0.046
    trailing_only_offset_is_reached = True

    # Sell signal
    use_exit_signal = True
    exit_profit_only = False
    exit_profit_offset = 0.01
    ignore_roi_if_entry_signal = False


    process_only_new_candles = True
    startup_candle_count = 30

    plot_config = {
        'main_plot': {
            'ma_buy': {'color': 'orange'},
            'ma_sell': {'color': 'orange'},
        },
    }

    use_custom_stoploss = False





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

        # Elliot
        
        (int(self.fast_ewo.value)+int(self.slow_ewo.value))/2

        # RSI
        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=int(self.rsi_period.value))

        keltner=qtpylib.keltner_channel(dataframe,window=self.keltner_length.value, atrs=2)
        dataframe['kc_lowerband']=keltner['lower']
        dataframe['kc_middleband']=keltner['mid']
        dataframe['kc_upperband']=keltner['upper']

        dataframe['ATR'] = ta.ATR(dataframe ,timeperiod=int(self.slow_ewo.value))

        dataframe['EWO'] = (ta.EMA(dataframe, timeperiod=int(self.fast_ewo.value))-ta.EMA(dataframe, timeperiod=int(self.slow_ewo.value)))/dataframe['ATR']
    

        return dataframe
    


    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        conditions_long = []
        conditions_short = []
        dataframe.loc[:, 'enter_tag'] = ''
        
        dataframe['ma_buy'] = ta.EMA(dataframe, timeperiod=int(self.base_nb_candles_buy.value))
        dataframe['ma_sell_short'] = ta.EMA(dataframe, timeperiod=int(self.base_nb_candles_sell_short.value))
        buy_ewo_high = (
            (dataframe['close'] < (dataframe['ma_buy'] * self.low_offset.value)) &
            (dataframe['EWO'] > self.ewo_high.value) &
            #(dataframe['rsi'] < self.rsi_buy.value) &
            (dataframe['volume'] > 0)
        )

        buy_keltner_low = (
            (dataframe['close'] < (dataframe['kc_lowerband'] * self.low_offset.value)) &
            (dataframe['EWO'] > self.ewo_low.value) &
            #(dataframe['rsi'] < self.rsi_buy.value) &
            (dataframe['volume'] > 0)
        )


        dataframe.loc[buy_ewo_high, 'enter_tag'] += ' long '
        # GUARDS AND TRIGGERS
        conditions_long.append( buy_ewo_high )
        #conditions_long.append( buy_keltner_low )
        

        sell_ewo_low = (
            (dataframe['close'] > (dataframe['ma_sell_short'] * self.high_offset_short.value)) &
            (dataframe['EWO'] < self.ewo_low.value) &
            #(dataframe['rsi'] > self.rsi_short.value) &
            (dataframe['volume'] > 0)
            )
        
        sell_short_keltner_high = (
            (dataframe['close'] > (dataframe['kc_upperband'] * self.high_offset_short.value)) &
            (dataframe['EWO'] < self.ewo_high.value) &
            #(dataframe['rsi'] > self.rsi_short.value) &
            (dataframe['volume'] > 0)
            )


        dataframe.loc[sell_ewo_low, 'enter_tag'] += ' short '
        conditions_short.append(sell_ewo_low)
        #conditions_short.append(sell_short_keltner_high)


        dataframe.loc[
            reduce(lambda x, y: x | y, conditions_long),
            "enter_long",
        ] = 1

        dataframe.loc[
            reduce(lambda x, y: x | y, conditions_short),
            "enter_short",
        ] = 1

        return dataframe
     

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe['ma_sell'] = ta.EMA(dataframe, timeperiod=int(self.base_nb_candles_sell.value))
        dataframe['ma_buy_short'] = ta.EMA(dataframe, timeperiod=int(self.base_nb_candles_buy_short.value))
        dataframe.loc[:, 'exit_tag'] = ''
        conditions_close = []
        conditions_close_short = []



        sell_cond = (                   
            (dataframe['close'] > (dataframe['ma_sell'] * self.high_offset.value)) &
            (dataframe['volume'] > 0)
        )
        sell_cond_keltner = (                   
            (dataframe['close'] > (dataframe['kc_middleband'] * self.high_offset.value)) &
            (dataframe['volume'] > 0)
        )
        dataframe.loc[sell_cond, 'exit_tag'] += ' ex_long '
        conditions_close.append(sell_cond)
        #conditions_close.append(sell_cond_keltner)

        



        buy_short_cond=(
            (dataframe['close'] < (dataframe['ma_buy_short'] * self.low_offset_short.value)) &
            (dataframe['volume'] > 0)
        )


        buy_short_cond_keltner = (                   
            (dataframe['close'] < (dataframe['kc_middleband'] * self.low_offset_short.value)) &
            (dataframe['volume'] > 0)
        )
        dataframe.loc[buy_short_cond, 'exit_tag'] += ' ex_short '
        conditions_close_short.append(buy_short_cond)
        #conditions_close_short.append(buy_short_cond_keltner)

        dataframe.loc[
            reduce(lambda x, y: x | y, conditions_close),
            "exit_long",
        ] = 1

        dataframe.loc[
            reduce(lambda x, y: x | y, conditions_close_short),
            "exit_short",
        ] = 1

        return dataframe

2)my config

{
    "max_open_trades": 1,
    "stake_currency": "USDT",
    "stake_amount": "unlimited",
    "tradable_balance_ratio": 0.99,
    "fiat_display_currency": "USD",
    "timeframe": "4h",
    "dry_run": true,

    "dry_run_wallet": 1000,
    "cancel_open_orders_on_exit": false,
    "trading_mode": "futures",
    "margin_mode": "isolated",
    "unfilledtimeout": {
        "entry": 10,
        "exit": 10,
        "exit_timeout_count": 0,
        "unit": "minutes"
    },
    "entry_pricing": {
        "price_side": "same",
        "use_order_book": true,
        "order_book_top": 1,
        "price_last_balance": 0.0,
        "check_depth_of_market": {
            "enabled": false,
            "bids_to_ask_delta": 1
        }
    },
    "exit_pricing":{
        "price_side": "same",
        "use_order_book": true,
        "order_book_top": 1
    },
    "exchange": {
        "name": "binance",
        "key": "",
        "secret": "",
        "ccxt_config": {},
        "ccxt_async_config": {},
        "pair_whitelist": ["SOL/USDT:USDT","BNB/USDT:USDT","XRP/USDT:USDT","ADA/USDT:USDT","TRX/USDT:USDT","ETH/USDT:USDT",
        "BTC/USDT:USDT","AVAX/USDT:USDT","MATIC/USDT:USDT"],
        "pair_blacklist": ["USDC/USDT","FDUSD/USDT"
            
        ]
    },
    "pairlists": [
        {
            "method": "StaticPairList",
            "number_assets":8,
            "sort_key": "quoteVolume",
            "min_value": 0,
            "refresh_period": 1800
        }
    ],
    "telegram": {
        "enabled": true,
        "token": "6434548006:AAFB1oLxrSrpO4arIFUoza6MC3oXV6uYtnwmiao",
        "chat_id": "5532293536miao"
    },
    "api_server": {
        "enabled": true,
        "listen_ip_address": "0.0.0.0",
        "listen_port": 8080,
        "verbosity": "error",
        "enable_openapi": false,
        "jwt_secret_key": "6ea21c8587cce6c25b1668e11bcd726551924c6ec4b7a81c5217811f5fc8a88c",
        "ws_token": "Ehhscx4pOQCts9u0APO6mUN5WUcLrvJ0Gg",
        "CORS_origins": [],
        "username": "freqtrader",
        "password": "Incantacapre1!Bot"
    },
    "bot_name": "freqtrade",
    "initial_state": "running",
    "force_entry_enable": false,
    "internals": {
        "process_throttle_secs": 5
    }
}

Observed Results:

2024-04-25 09:08:27,727 - freqtrade - INFO - freqtrade 2024.2
2024-04-25 09:08:27,850 - freqtrade.configuration.load_config - INFO - Using config: user_data/config.json ...
2024-04-25 09:08:27,857 - freqtrade.loggers - INFO - Verbosity set to 0
2024-04-25 09:08:27,857 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 1 ...
2024-04-25 09:08:27,857 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20210101-20230101 ...
2024-04-25 09:08:29,146 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/binance ...
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Parameter --epochs detected ... Will run Hyperopt with for 400 epochs ...
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Parameter -s/--spaces detected: default
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Parameter -j/--job-workers detected: -1
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Parameter --min-trades detected: 1
2024-04-25 09:08:29,151 - freqtrade.configuration.configuration - INFO - Using Hyperopt loss class name: OnlyProfitHyperOptLoss
2024-04-25 09:08:29,152 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20210101-20230101
2024-04-25 09:08:29,153 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2024-04-25 09:08:29,170 - freqtrade.exchange.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.
2024-04-25 09:08:29,170 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2024-04-25 09:08:29,171 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2024-04-25 09:08:29,175 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Hyperopt mode
2024-04-25 09:08:29,181 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2024-04-25 09:08:29,182 - freqtrade.exchange.exchange - INFO - Using CCXT 4.2.51
2024-04-25 09:08:29,182 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-25 09:08:29,197 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-25 09:08:29,213 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"
2024-04-25 09:08:35,566 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...
2024-04-25 09:08:35,890 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy FAdxSmaStrategy from '/freqtrade/user_data/strategies/FAdxSmaStrategy.py'...
2024-04-25 09:08:35,893 - freqtrade.strategy.hyper - INFO - Loading parameters from file /freqtrade/user_data/strategies/FAdxSmaStrategy.json
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 4h.
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: unlimited.
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 10, 'exit': 10, 'exit_timeout_count': 0, 'unit': 'minutes'}.
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 1.
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 0.366, '1727': 0.277, '3854': 0.067, '7075': 0}
2024-04-25 09:08:35,900 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 4h
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.334
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.046
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: True
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False, 'stoploss_on_exchange_interval': 60}
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2024-04-25 09:08:35,901 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: unlimited
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using protections: [{'method': 'LowProfitPairs', 'lookback_period_candles': 60, 'trade_limit': 1, 'stop_duration_candles': 96, 'required_profit': 0}, {'method': 'CooldownPeriod', 'stop_duration_candles': 2}]
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 10, 'exit': 10, 'exit_timeout_count': 0, 'unit': 'minutes'}
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2024-04-25 09:08:35,902 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.01
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2024-04-25 09:08:35,904 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 1
2024-04-25 09:08:35,904 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2024-04-25 09:08:35,929 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2024-04-25 09:08:35,961 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_buy = 6
2024-04-25 09:08:35,961 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_buy_short = 58
2024-04-25 09:08:35,961 - freqtrade.strategy.hyper - INFO - Strategy Parameter: ewo_high = 2.673
2024-04-25 09:08:35,961 - freqtrade.strategy.hyper - INFO - Strategy Parameter: fast_ewo = 10
2024-04-25 09:08:35,961 - freqtrade.strategy.hyper - INFO - Strategy Parameter: keltner_length = 14
2024-04-25 09:08:35,962 - freqtrade.strategy.hyper - INFO - Strategy Parameter: low_offset = 0.988
2024-04-25 09:08:35,962 - freqtrade.strategy.hyper - INFO - Strategy Parameter: low_offset_short = 0.986
2024-04-25 09:08:35,963 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_buy = 45
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_period = 30
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: slow_ewo = 99
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_sell = 33
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_sell_short = 7
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: ewo_low = -2.872
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: high_offset = 1.051
2024-04-25 09:08:35,964 - freqtrade.strategy.hyper - INFO - Strategy Parameter: high_offset_short = 1.042
2024-04-25 09:08:35,965 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_short = 55
2024-04-25 09:08:35,965 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2024-04-25 09:08:35,990 - freqtrade.resolvers.iresolver - INFO - Using resolved hyperoptloss OnlyProfitHyperOptLoss from '/freqtrade/freqtrade/optimize/hyperopt_loss/hyperopt_loss_onlyprofit.py'...
2024-04-25 09:08:35,993 - freqtrade.optimize.hyperopt - INFO - Removing `/freqtrade/user_data/hyperopt_results/hyperopt_tickerdata.pkl`.
2024-04-25 09:08:35,998 - freqtrade.optimize.hyperopt - INFO - Using optimizer random state: 4328
2024-04-25 09:08:36,006 - freqtrade.optimize.hyperopt_interface - INFO - Min roi table: {0: 0.092, 480: 0.061, 960: 0.031, 1440: 0}
2024-04-25 09:08:36,007 - freqtrade.optimize.hyperopt_interface - INFO - Max roi table: {0: 0.949, 1920: 0.337, 4800: 0.122, 10560: 0}
2024-04-25 09:08:36,014 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 30 ...
2024-04-25 09:08:36,059 - freqtrade.data.history.idatahandler - WARNING - SOL/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,104 - freqtrade.data.history.idatahandler - WARNING - BNB/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,149 - freqtrade.data.history.idatahandler - WARNING - XRP/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,190 - freqtrade.data.history.idatahandler - WARNING - ADA/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,235 - freqtrade.data.history.idatahandler - WARNING - TRX/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,289 - freqtrade.data.history.idatahandler - WARNING - ETH/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,350 - freqtrade.data.history.idatahandler - WARNING - BTC/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,424 - freqtrade.data.history.idatahandler - WARNING - AVAX/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,480 - freqtrade.data.history.idatahandler - WARNING - MATIC/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:08:36,504 - freqtrade.optimize.backtesting - INFO - Loading data from 2021-01-01 00:00:00 up to 2023-01-01 00:00:00 (730 days).
2024-04-25 09:08:36,504 - freqtrade.configuration.timerange - WARNING - Moving start-date by 30 candles to account for startup time.
2024-04-25 09:08:37,115 - freqtrade.optimize.hyperopt - INFO - Dataload complete. Calculating indicators
2024-04-25 09:08:37,199 - freqtrade.optimize.hyperopt - INFO - Hyperopting with data from 2021-01-06 00:00:00 up to 2023-01-01 00:00:00 (725 days)..
2024-04-25 09:08:37,295 - freqtrade.optimize.hyperopt - INFO - Found 4 CPU cores. Let's make them scream!
2024-04-25 09:08:37,296 - freqtrade.optimize.hyperopt - INFO - Number of parallel jobs set as: -1
2024-04-25 09:08:37,296 - freqtrade.optimize.hyperopt - INFO - Using estimator ET.
2024-04-25 09:08:37,325 - freqtrade.optimize.hyperopt - INFO - Effective number of parallel workers used: 4
+--------+---------+----------+--------------------------+--------------+-------------------------------+-----------------+-------------+-------------------------------+
|   Best |   Epoch |   Trades |    Win  Draw  Loss  Win% |   Avg profit |                        Profit |    Avg duration |   Objective |           Max Drawdown (Acct) |
|--------+---------+----------+--------------------------+--------------+-------------------------------+-----------------+-------------+-------------------------------|
| * Best |   2/400 |        9 |      9     0     0   100 |        4.17% |       433.908 USDT   (43.39%) | 0 days 06:13:00 |    -433.908 |                            -- |
| * Best |   4/400 |       64 |     56     0     8  87.5 |        2.43% |      2623.091 USDT  (262.31%) | 1 days 01:45:00 | -2,623.09079 |       674.689 USDT   (26.12%) |
| * Best |  24/400 |      185 |    147     0    38  79.5 |        1.11% |      4631.998 USDT  (463.20%) | 1 days 09:13:00 | -4,631.99847 |      2498.126 USDT   (35.18%) |
|   Best |  37/400 |      181 |    155     0    26  85.6 |        1.61% |      8575.389 USDT  (857.54%) | 2 days 10:17:00 | -8,575.38899 |      2649.857 USDT   (27.50%) |
|   Best |  84/400 |       68 |     61     0     7  89.7 |        4.00% |    12605.586 USDT (1,260.56%) | 1 days 05:11:00 | -12,605.58612 |       666.957 USDT    (6.84%) |
|   Best | 105/400 |       89 |     78     0    11  87.6 |        3.59% |    18160.612 USDT (1,816.06%) | 1 days 09:07:00 | -18,160.61231 |      2965.431 USDT   (34.29%) |
|   Best | 149/400 |      108 |     91     1    16  84.3 |        3.30% |    21348.090 USDT (2,134.81%) | 1 days 09:09:00 | -21,348.09003 |     10084.343 USDT   (55.75%) |
|   Best | 273/400 |      127 |    106     0    21  83.5 |        2.80% |    26094.223 USDT (2,609.42%) | 2 days 09:38:00 | -26,094.22327 |      3750.821 USDT   (33.76%) |
|   Best | 334/400 |       77 |     74     0     3  96.1 |        4.49% |    26816.375 USDT (2,681.64%) | 1 days 00:41:00 | -26,816.37546 |       523.884 USDT    (3.92%) |
Epochs ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 400/400 100% • 0:21:25 • 0:00:00
2024-04-25 09:30:02,535 - freqtrade.optimize.hyperopt - INFO - 400 epochs saved to '/freqtrade/user_data/hyperopt_results/strategy_FAdxSmaStrategy_2024-04-25_09-08-35.fthypt'.
Add {
        "method": "AgeFilter",
        "min_days_listed": 30
},
 to your pairlists in config (Under StaticPairList)
2024-04-25 09:30:03,704 - freqtrade.optimize.hyperopt_tools - INFO - Dumping parameters to /freqtrade/user_data/strategies/FAdxSmaStrategy.json

Best result:

   334/400:     77 trades. 74/0/3 Wins/Draws/Losses. Avg profit   4.49%. Median profit   3.66%. Total profit 26816.37545759 USDT (2681.64%). Avg duration 1 day, 0:41:00 min. Objective: -26816.37546


    # Buy hyperspace params:
    buy_params = {
        "base_nb_candles_buy": 12,
        "base_nb_candles_buy_short": 37,
        "ewo_high": 4.203,
        "fast_ewo": 21,
        "low_offset": 0.982,
        "low_offset_short": 0.96,
        "slow_ewo": 52,
        "keltner_length": 14,  # value loaded from strategy
        "rsi_buy": 45,  # value loaded from strategy
        "rsi_period": 30,  # value loaded from strategy
    }

    # Sell hyperspace params:
    sell_params = {
        "base_nb_candles_sell": 37,
        "base_nb_candles_sell_short": 20,
        "ewo_low": -4.278,
        "high_offset": 1.055,
        "high_offset_short": 1.066,
        "rsi_short": 55,  # value loaded from strategy
    }

    # ROI table:
    minimal_roi = {
        "0": 0.463,
        "1903": 0.133,
        "4207": 0.099,
        "9215": 0
    }

    # Stoploss:
    stoploss = -0.326

    # Trailing stop:
    trailing_stop = True  # value loaded from strategy
    trailing_stop_positive = 0.01  # value loaded from strategy
    trailing_stop_positive_offset = 0.046  # value loaded from strategy
    trailing_only_offset_is_reached = True  # value loaded from strategy


    # Max Open Trades:
    max_open_trades = 1  # value loaded from strategy

Relevant code exceptions or logs

Note: Please copy/paste text of the messages, no screenshots of logs please.

the problem 


2024-04-25 09:34:55,736 - freqtrade - INFO - freqtrade 2024.2
2024-04-25 09:34:55,756 - freqtrade.configuration.load_config - INFO - Using config: user_data/config.json ...
2024-04-25 09:34:55,763 - freqtrade.loggers - INFO - Verbosity set to 0
2024-04-25 09:34:55,764 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 1 ...
2024-04-25 09:34:55,764 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20210101-20240301 ...
2024-04-25 09:34:56,899 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2024-04-25 09:34:56,902 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/binance ...
2024-04-25 09:34:56,902 - freqtrade.configuration.configuration - INFO - Parameter --cache=day detected ...
2024-04-25 09:34:56,902 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20210101-20240301
2024-04-25 09:34:56,904 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2024-04-25 09:34:56,918 - freqtrade.exchange.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.
2024-04-25 09:34:56,918 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2024-04-25 09:34:56,918 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2024-04-25 09:34:56,922 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2024-04-25 09:34:56,922 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2024-04-25 09:34:56,922 - freqtrade.exchange.exchange - INFO - Using CCXT 4.2.51
2024-04-25 09:34:56,923 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-25 09:34:56,934 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}
2024-04-25 09:34:56,947 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"
2024-04-25 09:35:03,217 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...
2024-04-25 09:35:03,569 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy FAdxSmaStrategy from '/freqtrade/user_data/strategies/FAdxSmaStrategy.py'...
2024-04-25 09:35:03,572 - freqtrade.strategy.hyper - INFO - Loading parameters from file /freqtrade/user_data/strategies/FAdxSmaStrategy.json
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 4h.
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: unlimited.
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 10, 'exit': 10, 'exit_timeout_count': 0, 'unit': 'minutes'}.
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 1.
2024-04-25 09:35:03,578 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 0.463, '1903': 0.133, '4207': 0.099, '9215': 0}
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 4h
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.326
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.046
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: True
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False, 'stoploss_on_exchange_interval': 60}
2024-04-25 09:35:03,579 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: unlimited
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using protections: [{'method': 'LowProfitPairs', 'lookback_period_candles': 60, 'trade_limit': 1, 'stop_duration_candles': 96, 'required_profit': 0}, {'method': 'CooldownPeriod', 'stop_duration_candles': 2}]
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 10, 'exit': 10, 'exit_timeout_count': 0, 'unit': 'minutes'}
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2024-04-25 09:35:03,580 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.01
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2024-04-25 09:35:03,581 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 1
2024-04-25 09:35:03,581 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2024-04-25 09:35:03,604 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2024-04-25 09:35:03,639 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 30 ...
2024-04-25 09:35:03,695 - freqtrade.data.history.idatahandler - WARNING - SOL/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,741 - freqtrade.data.history.idatahandler - WARNING - BNB/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,790 - freqtrade.data.history.idatahandler - WARNING - XRP/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,835 - freqtrade.data.history.idatahandler - WARNING - ADA/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,880 - freqtrade.data.history.idatahandler - WARNING - TRX/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,921 - freqtrade.data.history.idatahandler - WARNING - ETH/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:03,974 - freqtrade.data.history.idatahandler - WARNING - BTC/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:04,019 - freqtrade.data.history.idatahandler - WARNING - AVAX/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:04,063 - freqtrade.data.history.idatahandler - WARNING - MATIC/USDT:USDT, futures, 4h, data starts at 2021-01-01 00:00:00
2024-04-25 09:35:04,085 - freqtrade.optimize.backtesting - INFO - Loading data from 2021-01-01 00:00:00 up to 2024-03-01 00:00:00 (1155 days).
2024-04-25 09:35:04,085 - freqtrade.configuration.timerange - WARNING - Moving start-date by 30 candles to account for startup time.
2024-04-25 09:35:04,679 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2024-04-25 09:35:04,766 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy FAdxSmaStrategy
2024-04-25 09:35:04,766 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_buy = 12
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_buy_short = 37
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: ewo_high = 4.203
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: fast_ewo = 21
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: keltner_length = 14
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: low_offset = 0.982
2024-04-25 09:35:04,767 - freqtrade.strategy.hyper - INFO - Strategy Parameter: low_offset_short = 0.96
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_buy = 45
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_period = 30
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: slow_ewo = 52
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_sell = 37
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: base_nb_candles_sell_short = 20
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: ewo_low = -4.278
2024-04-25 09:35:04,768 - freqtrade.strategy.hyper - INFO - Strategy Parameter: high_offset = 1.055
2024-04-25 09:35:04,769 - freqtrade.strategy.hyper - INFO - Strategy Parameter: high_offset_short = 1.066
2024-04-25 09:35:04,769 - freqtrade.strategy.hyper - INFO - Strategy Parameter: rsi_short = 55
2024-04-25 09:35:04,769 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2024-04-25 09:35:04,862 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2021-01-06 00:00:00 up to 2024-03-01 00:00:00 (1150 days).
2024-04-25 09:35:05,596 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2024-04-25_09-35-05.meta.json"
2024-04-25 09:35:05,603 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2024-04-25_09-35-05.json"
2024-04-25 09:35:05,611 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/.last_result.json"
Result for strategy FAdxSmaStrategy
=============================================================== BACKTESTING REPORT ==============================================================
|            Pair |   Entries |   Avg Profit % |   Cum Profit % |   Tot Profit USDT |   Tot Profit % |   Avg Duration |   Win  Draw  Loss  Win% |
|-----------------+-----------+----------------+----------------+-------------------+----------------+----------------+-------------------------|
|   SOL/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   BNB/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   XRP/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   ADA/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   TRX/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   ETH/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|   BTC/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|  AVAX/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
| MATIC/USDT:USDT |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
|           TOTAL |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
======================================================= LEFT OPEN TRADES REPORT ========================================================
|   Pair |   Entries |   Avg Profit % |   Cum Profit % |   Tot Profit USDT |   Tot Profit % |   Avg Duration |   Win  Draw  Loss  Win% |
|--------+-----------+----------------+----------------+-------------------+----------------+----------------+-------------------------|
|  TOTAL |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
=========================================================== ENTER TAG STATS ===========================================================
|   TAG |   Entries |   Avg Profit % |   Cum Profit % |   Tot Profit USDT |   Tot Profit % |   Avg Duration |   Win  Draw  Loss  Win% |
|-------+-----------+----------------+----------------+-------------------+----------------+----------------+-------------------------|
| TOTAL |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 |
================================ SUMMARY METRICS =================================
No trades made. Your starting balance was 1000 USDT, and your stake was unlimited.
==================================================================================

Backtested 2021-01-06 00:00:00 -> 2024-03-01 00:00:00 | Max open trades : 1
======================================================================== STRATEGY SUMMARY =======================================================================
|        Strategy |   Entries |   Avg Profit % |   Cum Profit % |   Tot Profit USDT |   Tot Profit % |   Avg Duration |   Win  Draw  Loss  Win% |      Drawdown |
|-----------------+-----------+----------------+----------------+-------------------+----------------+----------------+-------------------------+---------------|
| FAdxSmaStrategy |         0 |           0.00 |           0.00 |                 0 |           0.00 |           0:00 |     0     0     0     0 | 0 USDT  0.00% |
=================================================================================================================================================================

what you're missing is the actual commands you used for both backtesting and hyperopt.

Right!
docker compose run --rm freqtrade hyperopt --hyperopt-loss OnlyProfitHyperOptLoss --strategy FAdxSmaStrategy --config user_data/config.json -e 400 --timerange 20210101-20230101

docker compose run --rm freqtrade backtesting --config user_data/config.json --strategy FAdxSmaStrategy --timerange 20210101-20240301

Well your "problem" is the careless / wrong usage of parameter.value.

You can't use .value in populate_indicators() (unless you specify --analyze-per-epoch - which will make backtesting significantly slower). This method is only called once by default - so no changes to it's values will be actually used.

if memory constraints allow - it's instead recommended to create all parameters upfront (e.g. 'ATR_{val}') to then be used as part of the other populate_*_trend() methods - as described in the optimizing indicator parameters documentation section.

If memory doesn't allow (e.g. if your space is too big - you can keep your strategy as is - but you MUST use --analyze-per-epoch - which will call populate_indicators() for every epoch (this is described on the same section in the "performance tip").

I will read those, thanks man XD.

Essentially, you either use <parameter>.range: ... in your populate_indicators() - or you use --analyze-per-epoch - so you can keep using .value in populate_indicators().