引入时间衰减因子

This commit is contained in:
zhangkun9038@dingtalk.com 2025-05-04 19:56:20 +08:00
parent 259f1b4f16
commit 6d4cffb2c9
10 changed files with 594 additions and 424 deletions

View File

@ -348,19 +348,19 @@ class OKXRegressionStrategy(IStrategy):
def _dynamic_take_profit(self, dataframe: DataFrame, metadata: dict, atr_col: str = 'ATR_14', multiplier: float = 2.0) -> DataFrame:
"""
封装动态止盈逻辑基于入场价和ATR计算止盈线
封装动态止盈逻辑基于入场价ATR ADX 调整止盈线
:param dataframe: 原始DataFrame
:param metadata: 策略元数据
:param atr_col: 使用的ATR列名
:param multiplier: ATR乘数
:param multiplier: ATR乘数基础值
:return: 更新后的DataFrame
"""
# 获取交易对信息
pair = metadata.get('pair', 'unknown')
# 设置默认的止盈倍数
take_profit_multiplier = 2.0
# 根据交易对调整止盈倍数示例BTC/USDT 更稳定,止盈倍数较高)
if pair == "BTC/USDT":
take_profit_multiplier = 3.0
@ -370,10 +370,41 @@ class OKXRegressionStrategy(IStrategy):
take_profit_multiplier = 2.0
elif pair == "XRP/USDT":
take_profit_multiplier = 2.0
# 计算当前ATR在历史窗口中的百分位
historical_atr = dataframe[atr_col].rolling(window=20).mean().dropna().values
if len(historical_atr) < 20:
return dataframe
current_atr = dataframe[atr_col].iloc[-1]
percentile = (np.sum(historical_atr < current_atr) / len(historical_atr)) * 100
# 根据波动率百分位调整止盈倍数
if percentile > 80: # 高波动市场,缩短止盈距离
volatility_adjustment = 0.8
elif percentile < 20: # 低波动市场,拉长止盈距离
volatility_adjustment = 1.2
else: # 正常波动市场,保持默认
volatility_adjustment = 1.0
# 获取ADX指标判断趋势强度
dataframe['adx'] = ta.ADX(dataframe["high"], dataframe["low"], dataframe["close"], timeperiod=14)
adx_value = dataframe['adx'].iloc[-1]
# 根据ADX趋势强度调整止盈倍数
if adx_value > 25: # 强趋势,延长止盈距离
trend_adjustment = 1.3
elif adx_value < 15: # 震荡行情,缩短止盈距离
trend_adjustment = 0.7
else: # 中性趋势,保持默认
trend_adjustment = 1.0
# 综合调整止盈倍数
adjusted_multiplier = take_profit_multiplier * volatility_adjustment * trend_adjustment
# 计算止盈线
dataframe['entry_price'] = dataframe['open'].where(dataframe['enter_long'] == 1).ffill()
dataframe['take_profit_line'] = dataframe['entry_price'] + dataframe[atr_col] * take_profit_multiplier
dataframe['take_profit_line'] = dataframe['entry_price'] + dataframe[atr_col] * adjusted_multiplier
# 应用止盈逻辑
dataframe.loc[
@ -382,6 +413,7 @@ class OKXRegressionStrategy(IStrategy):
] = 1
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: Dict) -> DataFrame:
# 确保 ATR 列存在
if 'ATR_14' not in dataframe.columns:
@ -405,11 +437,64 @@ class OKXRegressionStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, profit_percent: float,
after_fill: bool, **kwargs) -> Optional[float]:
"""
自适应止损基于市场波动率百分位动态调整ATR乘数
"""
if trade.enter_tag == 'long':
atr_value = self.dp.get_pair_dataframe(pair, timeframe=self.timeframe)['ATR_14'].iloc[-1]
trailing_stop = current_rate - atr_value * 1.5
return trailing_stop / current_rate - 1 # 返回相对百分比
# 获取多个周期的ATR值
dataframe = self.dp.get_pair_dataframe(pair, timeframe=self.timeframe)
# 计算不同周期的ATR
dataframe['ATR_7'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=7)
dataframe['ATR_14'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=14)
dataframe['ATR_21'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=21)
# 计算20日平均ATR用于百分位计算
avg_atr_window = 20
dataframe['avg_atr'] = dataframe['ATR_14'].rolling(window=avg_atr_window).mean()
# 获取最新数据
latest_row = dataframe.iloc[-1].copy()
# 计算当前ATR在历史窗口中的百分位
historical_atr = dataframe['avg_atr'].dropna().values
if len(historical_atr) < avg_atr_window:
return None
current_atr = latest_row['avg_atr']
percentile = (np.sum(historical_atr < current_atr) / len(historical_atr)) * 100
# 根据市场波动率百分位选择ATR乘数
if percentile > 80: # 高波动市场
atr_multiplier = 1.5
elif percentile < 20: # 低波动市场
atr_multiplier = 2.5
else: # 正常波动市场
atr_multiplier = 2.0
# 根据交易对调整基础ATR值
pair_specific_atr = {
"BTC/USDT": latest_row['ATR_14'],
"ETH/USDT": latest_row['ATR_14'],
"OKB/USDT": latest_row['ATR_7'],
"TON/USDT": latest_row['ATR_7']
}
if pair in pair_specific_atr:
base_atr = pair_specific_atr[pair]
else:
base_atr = latest_row['ATR_14']
# 计算追踪止损价格
trailing_stop = current_rate - base_atr * atr_multiplier
# 添加额外条件:确保止损不低于入场价的一定比例
min_profit_ratio = 0.005 # 最低盈利0.5%
min_stop_price = trade.open_rate * (1 + min_profit_ratio)
final_stop_price = max(trailing_stop, min_stop_price)
return final_stop_price / current_rate - 1 # 返回相对百分比
return None
def leverage(self, pair: str, current_time: 'datetime', current_rate: float,

View File

@ -1,103 +1,103 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-04 10:49:39,348 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 10:49:39,557 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 10:49:40,987 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 10:49:40,989 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 10:49:40,989 - root - INFO - Logfile configured
2025-05-04 10:49:40,990 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 10:49:41,020 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 10:49:41,021 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 10:49:41,024 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 10:49:41,032 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 10:49:41,032 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 10:49:41,033 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:41,035 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 10:49:41,042 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 10:49:41,048 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 10:49:43,603 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 10:49:43,657 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 10:49:43,658 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 10:49:43,658 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
2025-05-04 11:40:32,235 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 11:40:32,439 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 11:40:33,890 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 11:40:33,893 - root - INFO - Logfile configured
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 11:40:33,895 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 11:40:33,920 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 11:40:33,922 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 11:40:33,923 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 11:40:33,929 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 11:40:33,929 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 11:40:33,930 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:33,932 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 11:40:33,932 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 11:40:33,938 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 11:40:33,944 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 11:40:36,494 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 11:40:36,548 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 11:40:36,549 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 11:40:36,549 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
'minutes'}.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
'stoploss_on_exchange_interval': 60}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 10:49:43,670 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:43,673 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 10:49:43,679 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 10:49:43,680 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:43,681 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 10:49:43,823 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 10:49:43,824 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 10:49:43,825 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 10:49:45,413 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 10:49:45,619 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 10:49:45,619 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 10:49:45,627 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:49:45,629 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:49:45,629 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 11:40:36,560 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:36,563 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 11:40:36,569 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 11:40:36,570 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:36,570 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 11:40:36,709 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 11:40:38,275 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 11:40:38,479 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 11:40:38,480 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 11:40:38,489 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:40:38,491 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:40:38,491 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743984000_prediction.feather
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 10:49:46,073 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:46,074 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,944 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,945 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
2025-05-04 10:49:52,079 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 10:49:52,080 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 10:49:52,209 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:49:52,210 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:49:52,264 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:49:52,312 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:49:52,313 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:40:45,045 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 11:40:45,046 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 11:40:45,176 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:40:45,176 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:40:45,233 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[0] validation_0-rmse:0.36629 validation_1-rmse:0.37143
[1] validation_0-rmse:0.36088 validation_1-rmse:0.36593
[2] validation_0-rmse:0.35557 validation_1-rmse:0.36052
@ -398,13 +398,13 @@ Creating freqtrade_freqtrade_run ... done
[297] validation_0-rmse:0.03425 validation_1-rmse:0.02814
[298] validation_0-rmse:0.03423 validation_1-rmse:0.02811
[299] validation_0-rmse:0.03422 validation_1-rmse:0.02808
2025-05-04 10:54:39,557 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (287.48 secs) --------------------
2025-05-04 10:54:39,775 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 10:54:39,776 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:54:39,838 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:54:39,925 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:54:39,926 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:54:39,927 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:42:53,857 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (128.81 secs) --------------------
2025-05-04 11:42:54,083 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 11:42:54,084 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:42:54,146 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:42:54,238 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:42:54,239 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:42:54,239 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_ton_1743984000_prediction.feather
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning:
@ -414,13 +414,13 @@ DataFrame.fillna with 'method' is deprecated and will raise in a future version.
DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
2025-05-04 10:54:46,169 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 10:54:46,169 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 10:54:46,285 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:54:46,286 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:54:46,340 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:43:00,429 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 11:43:00,429 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 11:43:00,548 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:43:00,549 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:43:00,606 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:43:00,657 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:43:00,658 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[0] validation_0-rmse:0.52241 validation_1-rmse:0.52534
[1] validation_0-rmse:0.51462 validation_1-rmse:0.51751
[2] validation_0-rmse:0.50695 validation_1-rmse:0.50980
@ -721,20 +721,20 @@ DataFrame.fillna with 'method' is deprecated and will raise in a future version.
[297] validation_0-rmse:0.03155 validation_1-rmse:0.02866
[298] validation_0-rmse:0.03153 validation_1-rmse:0.02862
[299] validation_0-rmse:0.03150 validation_1-rmse:0.02858
2025-05-04 10:59:22,550 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (276.38 secs) --------------------
2025-05-04 10:59:22,585 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 10:59:22,586 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:59:22,650 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:59:22,731 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 10:59:22,926 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_10-59-22.meta.json"
2025-05-04 11:46:04,560 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (184.13 secs) --------------------
2025-05-04 11:46:04,595 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 11:46:04,596 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:46:04,661 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:46:04,744 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 11:46:04,935 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_11-46-04.meta.json"
Result for strategy OKXRegressionStrategy
BACKTESTING REPORT
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OKB/USDT │ 6 │ 0.55 │ 0.659 │ 0.07 │ 0:28:00 │ 4 0 2 66.7 │
│ OKB/USDT │ 6 │ 0.6 │ 0.718 │ 0.07 │ 0:34:00 │ 4 0 2 66.7 │
│ TON/USDT │ 3 │ -0.1 │ -0.062 │ -0.01 │ 0:02:00 │ 1 0 2 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
@ -746,24 +746,24 @@ Result for strategy OKXRegressionStrategy
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ OTHER │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ │ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ │ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
@ -776,35 +776,35 @@ Result for strategy OKXRegressionStrategy
│ │ │
│ Total/Daily Avg Trades │ 9 / 1.12 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 1000.597 USDT │
│ Absolute profit │ 0.597 USDT │
│ Total profit % │ 0.06% │
│ CAGR % │ 2.76% │
│ Sortino │ 37.00
│ Sharpe │ 7.69
│ Calmar │ 890.73
│ SQN │ 1.01
│ Profit factor │ 2.49
│ Expectancy (Ratio) │ 0.07 (0.66) │
│ Final balance │ 1000.656 USDT │
│ Absolute profit │ 0.656 USDT │
│ Total profit % │ 0.07% │
│ CAGR % │ 3.04% │
│ Sortino │ 40.69
│ Sharpe │ 8.15
│ Calmar │ 979.41
│ SQN │ 1.07
│ Profit factor │ 2.64 │
│ Expectancy (Ratio) │ 0.07 (0.73) │
│ Avg. daily profit % │ 0.01% │
│ Avg. stake amount │ 20.003 USDT │
│ Total trade volume │ 361.233 USDT │
│ Total trade volume │ 361.294 USDT │
│ │ │
│ Best Pair │ OKB/USDT 0.07% │
│ Worst Pair │ TON/USDT -0.01% │
│ Best trade │ OKB/USDT 1.95% │
│ Best trade │ OKB/USDT 2.13% │
│ Worst trade │ OKB/USDT -0.71% │
│ Best day │ 0.332 USDT │
│ Worst day │ 0 USDT │
│ Days win/draw/lose │ 3 / 3 / 0 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Winners │ 0:39:00 │
│ Avg. Duration Loser │ 0:04:00 │
│ Max Consecutive Wins / Loss │ 2 / 2 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 999.84 USDT │
│ Max balance │ 1000.597 USDT │
│ Max balance │ 1000.656 USDT │
│ Max % of account underwater │ 0.02% │
│ Absolute Drawdown (Account) │ 0.02% │
│ Absolute Drawdown │ 0.16 USDT │
@ -820,5 +820,5 @@ Backtested 2025-04-07 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 2
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
│ OKXRegressionStrategy │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘

View File

@ -1,111 +1,111 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-04 10:49:39,348 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 10:49:39,557 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 10:49:40,987 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 10:49:40,989 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 10:49:40,989 - root - INFO - Logfile configured
2025-05-04 10:49:40,990 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 10:49:41,020 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 10:49:41,021 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 10:49:41,024 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 10:49:41,032 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 10:49:41,032 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 10:49:41,033 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:41,035 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 10:49:41,042 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 10:49:41,048 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 10:49:43,603 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 10:49:43,657 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 10:49:43,658 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 10:49:43,658 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
2025-05-04 11:40:32,235 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 11:40:32,439 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 11:40:33,890 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 11:40:33,893 - root - INFO - Logfile configured
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 11:40:33,895 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 11:40:33,920 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 11:40:33,922 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 11:40:33,923 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 11:40:33,929 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 11:40:33,929 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 11:40:33,930 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:33,932 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 11:40:33,932 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 11:40:33,938 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 11:40:33,944 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 11:40:36,494 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 11:40:36,548 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 11:40:36,549 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 11:40:36,549 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
'minutes'}.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
'stoploss_on_exchange_interval': 60}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 10:49:43,670 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:43,673 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 10:49:43,679 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 10:49:43,680 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:43,681 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 10:49:43,823 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 10:49:43,824 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 10:49:43,825 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 10:49:45,413 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 10:49:45,619 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 10:49:45,619 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 10:49:45,627 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:49:45,629 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:49:45,629 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 11:40:36,560 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:36,563 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 11:40:36,569 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 11:40:36,570 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:36,570 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 11:40:36,709 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 11:40:38,275 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 11:40:38,479 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 11:40:38,480 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 11:40:38,489 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:40:38,491 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:40:38,491 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743984000_prediction.feather
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 10:49:46,073 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:46,074 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,944 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,945 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
2025-05-04 10:49:52,079 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 10:49:52,080 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 10:49:52,209 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:49:52,210 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:49:52,264 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:49:52,312 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:49:52,313 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:40:45,045 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 11:40:45,046 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 11:40:45,176 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:40:45,176 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:40:45,233 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[99] validation_0-rmse:0.09103 validation_1-rmse:0.09003
2025-05-04 10:54:39,557 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (287.48 secs) --------------------
2025-05-04 10:54:39,775 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 10:54:39,776 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:54:39,838 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:54:39,925 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:54:39,926 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:54:39,927 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:42:53,857 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (128.81 secs) --------------------
2025-05-04 11:42:54,083 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 11:42:54,084 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:42:54,146 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:42:54,238 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:42:54,239 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:42:54,239 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_ton_1743984000_prediction.feather
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning:
@ -115,28 +115,28 @@ DataFrame.fillna with 'method' is deprecated and will raise in a future version.
DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
2025-05-04 10:54:46,169 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 10:54:46,169 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 10:54:46,285 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:54:46,286 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:54:46,340 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:43:00,429 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 11:43:00,429 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 11:43:00,548 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:43:00,549 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:43:00,606 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:43:00,657 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:43:00,658 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[99] validation_0-rmse:0.12193 validation_1-rmse:0.12248
2025-05-04 10:59:22,550 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (276.38 secs) --------------------
2025-05-04 10:59:22,585 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 10:59:22,586 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:59:22,650 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:59:22,731 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 10:59:22,926 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_10-59-22.meta.json"
2025-05-04 11:46:04,560 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (184.13 secs) --------------------
2025-05-04 11:46:04,595 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 11:46:04,596 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:46:04,661 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:46:04,744 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 11:46:04,935 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_11-46-04.meta.json"
Result for strategy OKXRegressionStrategy
BACKTESTING REPORT
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OKB/USDT │ 6 │ 0.55 │ 0.659 │ 0.07 │ 0:28:00 │ 4 0 2 66.7 │
│ OKB/USDT │ 6 │ 0.6 │ 0.718 │ 0.07 │ 0:34:00 │ 4 0 2 66.7 │
│ TON/USDT │ 3 │ -0.1 │ -0.062 │ -0.01 │ 0:02:00 │ 1 0 2 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
@ -148,24 +148,24 @@ Result for strategy OKXRegressionStrategy
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ OTHER │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ │ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ │ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
@ -178,35 +178,35 @@ Result for strategy OKXRegressionStrategy
│ │ │
│ Total/Daily Avg Trades │ 9 / 1.12 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 1000.597 USDT │
│ Absolute profit │ 0.597 USDT │
│ Total profit % │ 0.06% │
│ CAGR % │ 2.76% │
│ Sortino │ 37.00
│ Sharpe │ 7.69
│ Calmar │ 890.73
│ SQN │ 1.01
│ Profit factor │ 2.49
│ Expectancy (Ratio) │ 0.07 (0.66) │
│ Final balance │ 1000.656 USDT │
│ Absolute profit │ 0.656 USDT │
│ Total profit % │ 0.07% │
│ CAGR % │ 3.04% │
│ Sortino │ 40.69
│ Sharpe │ 8.15
│ Calmar │ 979.41
│ SQN │ 1.07
│ Profit factor │ 2.64 │
│ Expectancy (Ratio) │ 0.07 (0.73) │
│ Avg. daily profit % │ 0.01% │
│ Avg. stake amount │ 20.003 USDT │
│ Total trade volume │ 361.233 USDT │
│ Total trade volume │ 361.294 USDT │
│ │ │
│ Best Pair │ OKB/USDT 0.07% │
│ Worst Pair │ TON/USDT -0.01% │
│ Best trade │ OKB/USDT 1.95% │
│ Best trade │ OKB/USDT 2.13% │
│ Worst trade │ OKB/USDT -0.71% │
│ Best day │ 0.332 USDT │
│ Worst day │ 0 USDT │
│ Days win/draw/lose │ 3 / 3 / 0 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Winners │ 0:39:00 │
│ Avg. Duration Loser │ 0:04:00 │
│ Max Consecutive Wins / Loss │ 2 / 2 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 999.84 USDT │
│ Max balance │ 1000.597 USDT │
│ Max balance │ 1000.656 USDT │
│ Max % of account underwater │ 0.02% │
│ Absolute Drawdown (Account) │ 0.02% │
│ Absolute Drawdown │ 0.16 USDT │
@ -222,5 +222,5 @@ Backtested 2025-04-07 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 2
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
│ OKXRegressionStrategy │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"OKXRegressionStrategy":{"run_id":"8cd1db235e1aba6c021a92d8cffb370c33e42804","backtest_start_time":1746355783,"timeframe":"3m","timeframe_detail":null,"backtest_start_ts":1743984000,"backtest_end_ts":1744675200}}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"OKXRegressionStrategy":{"run_id":"203132ae0c5df1caf5c9fd1791d1721147fe4890","backtest_start_time":1746358836,"timeframe":"3m","timeframe_detail":null,"backtest_start_ts":1743984000,"backtest_end_ts":1744675200}}

View File

@ -348,19 +348,19 @@ class OKXRegressionStrategy(IStrategy):
def _dynamic_take_profit(self, dataframe: DataFrame, metadata: dict, atr_col: str = 'ATR_14', multiplier: float = 2.0) -> DataFrame:
"""
封装动态止盈逻辑基于入场价和ATR计算止盈线
封装动态止盈逻辑基于入场价ATR ADX 调整止盈线
:param dataframe: 原始DataFrame
:param metadata: 策略元数据
:param atr_col: 使用的ATR列名
:param multiplier: ATR乘数
:param multiplier: ATR乘数基础值
:return: 更新后的DataFrame
"""
# 获取交易对信息
pair = metadata.get('pair', 'unknown')
# 设置默认的止盈倍数
take_profit_multiplier = 2.0
# 根据交易对调整止盈倍数示例BTC/USDT 更稳定,止盈倍数较高)
if pair == "BTC/USDT":
take_profit_multiplier = 3.0
@ -370,10 +370,41 @@ class OKXRegressionStrategy(IStrategy):
take_profit_multiplier = 2.0
elif pair == "XRP/USDT":
take_profit_multiplier = 2.0
# 计算当前ATR在历史窗口中的百分位
historical_atr = dataframe[atr_col].rolling(window=20).mean().dropna().values
if len(historical_atr) < 20:
return dataframe
current_atr = dataframe[atr_col].iloc[-1]
percentile = (np.sum(historical_atr < current_atr) / len(historical_atr)) * 100
# 根据波动率百分位调整止盈倍数
if percentile > 80: # 高波动市场,缩短止盈距离
volatility_adjustment = 0.8
elif percentile < 20: # 低波动市场,拉长止盈距离
volatility_adjustment = 1.2
else: # 正常波动市场,保持默认
volatility_adjustment = 1.0
# 获取ADX指标判断趋势强度
dataframe['adx'] = ta.ADX(dataframe["high"], dataframe["low"], dataframe["close"], timeperiod=14)
adx_value = dataframe['adx'].iloc[-1]
# 根据ADX趋势强度调整止盈倍数
if adx_value > 25: # 强趋势,延长止盈距离
trend_adjustment = 1.3
elif adx_value < 15: # 震荡行情,缩短止盈距离
trend_adjustment = 0.7
else: # 中性趋势,保持默认
trend_adjustment = 1.0
# 综合调整止盈倍数
adjusted_multiplier = take_profit_multiplier * volatility_adjustment * trend_adjustment
# 计算止盈线
dataframe['entry_price'] = dataframe['open'].where(dataframe['enter_long'] == 1).ffill()
dataframe['take_profit_line'] = dataframe['entry_price'] + dataframe[atr_col] * take_profit_multiplier
dataframe['take_profit_line'] = dataframe['entry_price'] + dataframe[atr_col] * adjusted_multiplier
# 应用止盈逻辑
dataframe.loc[
@ -382,6 +413,7 @@ class OKXRegressionStrategy(IStrategy):
] = 1
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: Dict) -> DataFrame:
# 确保 ATR 列存在
if 'ATR_14' not in dataframe.columns:
@ -405,11 +437,64 @@ class OKXRegressionStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, profit_percent: float,
after_fill: bool, **kwargs) -> Optional[float]:
"""
自适应止损基于市场波动率百分位动态调整ATR乘数
"""
if trade.enter_tag == 'long':
atr_value = self.dp.get_pair_dataframe(pair, timeframe=self.timeframe)['ATR_14'].iloc[-1]
trailing_stop = current_rate - atr_value * 1.5
return trailing_stop / current_rate - 1 # 返回相对百分比
# 获取多个周期的ATR值
dataframe = self.dp.get_pair_dataframe(pair, timeframe=self.timeframe)
# 计算不同周期的ATR
dataframe['ATR_7'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=7)
dataframe['ATR_14'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=14)
dataframe['ATR_21'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=21)
# 计算20日平均ATR用于百分位计算
avg_atr_window = 20
dataframe['avg_atr'] = dataframe['ATR_14'].rolling(window=avg_atr_window).mean()
# 获取最新数据
latest_row = dataframe.iloc[-1].copy()
# 计算当前ATR在历史窗口中的百分位
historical_atr = dataframe['avg_atr'].dropna().values
if len(historical_atr) < avg_atr_window:
return None
current_atr = latest_row['avg_atr']
percentile = (np.sum(historical_atr < current_atr) / len(historical_atr)) * 100
# 根据市场波动率百分位选择ATR乘数
if percentile > 80: # 高波动市场
atr_multiplier = 1.5
elif percentile < 20: # 低波动市场
atr_multiplier = 2.5
else: # 正常波动市场
atr_multiplier = 2.0
# 根据交易对调整基础ATR值
pair_specific_atr = {
"BTC/USDT": latest_row['ATR_14'],
"ETH/USDT": latest_row['ATR_14'],
"OKB/USDT": latest_row['ATR_7'],
"TON/USDT": latest_row['ATR_7']
}
if pair in pair_specific_atr:
base_atr = pair_specific_atr[pair]
else:
base_atr = latest_row['ATR_14']
# 计算追踪止损价格
trailing_stop = current_rate - base_atr * atr_multiplier
# 添加额外条件:确保止损不低于入场价的一定比例
min_profit_ratio = 0.005 # 最低盈利0.5%
min_stop_price = trade.open_rate * (1 + min_profit_ratio)
final_stop_price = max(trailing_stop, min_stop_price)
return final_stop_price / current_rate - 1 # 返回相对百分比
return None
def leverage(self, pair: str, current_time: 'datetime', current_rate: float,

View File

@ -1,111 +1,111 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-04 10:49:39,348 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 10:49:39,557 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 10:49:40,987 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 10:49:40,989 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 10:49:40,989 - root - INFO - Logfile configured
2025-05-04 10:49:40,990 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 10:49:40,990 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 10:49:40,991 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 10:49:41,020 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 10:49:41,021 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 10:49:41,022 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 10:49:41,024 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 10:49:41,032 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 10:49:41,032 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 10:49:41,033 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:41,035 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 10:49:41,036 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 10:49:41,042 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 10:49:41,048 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 10:49:43,603 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 10:49:43,657 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 10:49:43,658 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 10:49:43,658 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 10:49:43,659 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 10:49:43,660 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
2025-05-04 11:40:32,235 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-04 11:40:32,439 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-04 11:40:33,890 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-04 11:40:33,893 - root - INFO - Logfile configured
2025-05-04 11:40:33,893 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-04 11:40:33,894 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-04 11:40:33,895 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250407-20250415 ...
2025-05-04 11:40:33,920 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-04 11:40:33,921 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250407-20250415
2025-05-04 11:40:33,922 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-04 11:40:33,923 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-04 11:40:33,929 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-04 11:40:33,929 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-04 11:40:33,930 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:33,932 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-04 11:40:33,932 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-04 11:40:33,933 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-04 11:40:33,938 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-04 11:40:33,944 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-04 11:40:36,494 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-04 11:40:36,548 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-04 11:40:36,549 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-04 11:40:36,549 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-04 11:40:36,550 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit':
'minutes'}.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 10:49:43,661 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 10:49:43,662 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 10:49:43,663 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 10:49:43,664 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
2025-05-04 11:40:36,551 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-04 11:40:36,552 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-04 11:40:36,553 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-04 11:40:36,554 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False,
'stoploss_on_exchange_interval': 60}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 10:49:43,665 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 10:49:43,666 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 10:49:43,667 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 10:49:43,668 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 10:49:43,669 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 10:49:43,670 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 10:49:43,673 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 10:49:43,679 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 10:49:43,680 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:43,681 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 10:49:43,823 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 10:49:43,824 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 10:49:43,825 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 10:49:45,413 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 10:49:45,619 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 10:49:45,619 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 10:49:45,620 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 10:49:45,621 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 10:49:45,622 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 10:49:45,627 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:49:45,629 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:49:45,629 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-04 11:40:36,555 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-04 11:40:36,556 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-04 11:40:36,557 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-04 11:40:36,558 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-04 11:40:36,559 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-04 11:40:36,560 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-04 11:40:36,563 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-04 11:40:36,569 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-04 11:40:36,570 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:36,570 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Loading data from 2025-01-06 21:30:00 up to 2025-04-15 00:00:00 (98 days).
2025-05-04 11:40:36,708 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-04 11:40:36,709 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-04 11:40:38,275 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-04 11:40:38,479 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-04 11:40:38,480 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-04 11:40:38,481 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT', 'TON/USDT']
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-04 11:40:38,482 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-04 11:40:38,483 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-04 11:40:38,489 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:40:38,491 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:40:38,491 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743984000_prediction.feather
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:45,875 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 10:49:46,073 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 10:49:46,074 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,746 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
2025-05-04 11:40:38,944 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-04 11:40:38,945 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2025-01-06 21:30:00 to 2025-04-15 00:00:00
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
dataframe = dataframe.fillna(method="ffill").fillna(0)
2025-05-04 10:49:52,079 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 10:49:52,080 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 10:49:52,209 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:49:52,210 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:49:52,264 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:49:52,312 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:49:52,313 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:40:45,045 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000
2025-05-04 11:40:45,046 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-04 11:40:45,176 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:40:45,176 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:40:45,233 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:40:45,285 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[99] validation_0-rmse:0.09103 validation_1-rmse:0.09003
2025-05-04 10:54:39,557 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (287.48 secs) --------------------
2025-05-04 10:54:39,775 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 10:54:39,776 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:54:39,838 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:54:39,925 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 10:54:39,926 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 10:54:39,927 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
2025-05-04 11:42:53,857 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (128.81 secs) --------------------
2025-05-04 11:42:54,083 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743984000/cb_okb_1743984000--s_close.html
2025-05-04 11:42:54,084 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:42:54,146 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:42:54,238 - freqtrade.freqai.freqai_interface - INFO - Training 1 timeranges
2025-05-04 11:42:54,239 - freqtrade.freqai.freqai_interface - INFO - Training TON/USDT, 2/2 pairs from 2025-01-07 00:00:00 to 2025-04-07 00:00:00, 1/1 trains
2025-05-04 11:42:54,239 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_ton_1743984000_prediction.feather
/freqtrade/templates/OKXRegressionStrategy.py:246: FutureWarning:
@ -115,28 +115,28 @@ DataFrame.fillna with 'method' is deprecated and will raise in a future version.
DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
2025-05-04 10:54:46,169 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 10:54:46,169 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 10:54:46,285 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 10:54:46,286 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 10:54:46,340 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 10:54:46,388 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
2025-05-04 11:43:00,429 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000
2025-05-04 11:43:00,429 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training TON/USDT --------------------
2025-05-04 11:43:00,548 - freqtrade.freqai.data_kitchen - INFO - TON/USDT: dropped 0 training points due to NaNs in populated dataset 43200.
2025-05-04 11:43:00,549 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-07 to 2025-04-06 --------------------
2025-05-04 11:43:00,606 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-04 11:43:00,657 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 181 features
2025-05-04 11:43:00,658 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34560 data points
[99] validation_0-rmse:0.12193 validation_1-rmse:0.12248
2025-05-04 10:59:22,550 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (276.38 secs) --------------------
2025-05-04 10:59:22,585 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 10:59:22,586 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 10:59:22,650 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 10:59:22,731 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 10:59:22,926 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_10-59-22.meta.json"
2025-05-04 11:46:04,560 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training TON/USDT (184.13 secs) --------------------
2025-05-04 11:46:04,595 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-TON_1743984000/cb_ton_1743984000--s_close.html
2025-05-04 11:46:04,596 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-04 11:46:04,661 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-04 11:46:04,744 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-07 00:00:00 up to 2025-04-15 00:00:00 (8 days).
2025-05-04 11:46:04,935 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-04_11-46-04.meta.json"
Result for strategy OKXRegressionStrategy
BACKTESTING REPORT
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OKB/USDT │ 6 │ 0.55 │ 0.659 │ 0.07 │ 0:28:00 │ 4 0 2 66.7 │
│ OKB/USDT │ 6 │ 0.6 │ 0.718 │ 0.07 │ 0:34:00 │ 4 0 2 66.7 │
│ TON/USDT │ 3 │ -0.1 │ -0.062 │ -0.01 │ 0:02:00 │ 1 0 2 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
@ -148,24 +148,24 @@ Result for strategy OKXRegressionStrategy
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ OTHER │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 3 │ 1.24 │ 0.744 │ 0.07 │ 0:49:00 │ 3 0 0 100 │
│ │ exit_signal │ 3 │ 1.34 │ 0.803 │ 0.08 │ 1:01:00 │ 3 0 0 100 │
│ │ trailing_stop_loss │ 6 │ -0.12 │ -0.147 │ -0.01 │ 0:04:00 │ 2 0 4 33.3 │
│ TOTAL │ │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │
│ TOTAL │ │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
@ -178,35 +178,35 @@ Result for strategy OKXRegressionStrategy
│ │ │
│ Total/Daily Avg Trades │ 9 / 1.12 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 1000.597 USDT │
│ Absolute profit │ 0.597 USDT │
│ Total profit % │ 0.06% │
│ CAGR % │ 2.76% │
│ Sortino │ 37.00
│ Sharpe │ 7.69
│ Calmar │ 890.73
│ SQN │ 1.01
│ Profit factor │ 2.49
│ Expectancy (Ratio) │ 0.07 (0.66) │
│ Final balance │ 1000.656 USDT │
│ Absolute profit │ 0.656 USDT │
│ Total profit % │ 0.07% │
│ CAGR % │ 3.04% │
│ Sortino │ 40.69
│ Sharpe │ 8.15
│ Calmar │ 979.41
│ SQN │ 1.07
│ Profit factor │ 2.64 │
│ Expectancy (Ratio) │ 0.07 (0.73) │
│ Avg. daily profit % │ 0.01% │
│ Avg. stake amount │ 20.003 USDT │
│ Total trade volume │ 361.233 USDT │
│ Total trade volume │ 361.294 USDT │
│ │ │
│ Best Pair │ OKB/USDT 0.07% │
│ Worst Pair │ TON/USDT -0.01% │
│ Best trade │ OKB/USDT 1.95% │
│ Best trade │ OKB/USDT 2.13% │
│ Worst trade │ OKB/USDT -0.71% │
│ Best day │ 0.332 USDT │
│ Worst day │ 0 USDT │
│ Days win/draw/lose │ 3 / 3 / 0 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Winners │ 0:39:00 │
│ Avg. Duration Loser │ 0:04:00 │
│ Max Consecutive Wins / Loss │ 2 / 2 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 999.84 USDT │
│ Max balance │ 1000.597 USDT │
│ Max balance │ 1000.656 USDT │
│ Max % of account underwater │ 0.02% │
│ Absolute Drawdown (Account) │ 0.02% │
│ Absolute Drawdown │ 0.16 USDT │
@ -222,5 +222,5 @@ Backtested 2025-04-07 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 2
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 9 │ 0.33 │ 0.597 │ 0.06 │ 0:19:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
│ OKXRegressionStrategy │ 9 │ 0.36 │ 0.656 │ 0.07 │ 0:23:00 │ 5 0 4 55.6 │ 0.16 USDT 0.02% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘