could not found model, 没有pkl文件问题解决

This commit is contained in:
zhangkun9038@dingtalk.com 2025-05-07 18:58:26 +08:00
parent b5d1743843
commit 9de70b4508
25 changed files with 369 additions and 9996 deletions

10
backtesting.sh Executable file
View File

@ -0,0 +1,10 @@
rm /home/ubuntu/freqtrade_old/user_data/models/test175 -fr | true
freqtrade backtesting \
--logfile user_data/logs/freqtrade.log \
--freqaimodel XGBoostRegressorMultiTarget \
--config config_examples/config_freqai.okx.json \
--strategy-path freqtrade/templates \
--strategy OKXRegressionStrategy \
--timerange 20250401-20250415 \
--fee 0.0008 \
--cache none

View File

@ -33,10 +33,6 @@
],
"pair_blacklist": []
},
"experimental": {
"use_sell_signal": true,
"ignore_roi_if_buy_signal": false
},
"telegram": {
"enabled": false,
"token": "",

View File

@ -0,0 +1,72 @@
{
"$schema": "https://schema.freqtrade.io/schema.json",
"max_open_trades": 3,
"stake_currency": "USDT",
"stake_amount": 0.05,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "USD",
"timeframe": "5m",
"dry_run": true,
"cancel_open_orders_on_exit": false,
"unfilledtimeout": {
"entry": 10,
"exit": 10,
"exit_timeout_count": 0,
"unit": "minutes"
},
"entry_pricing": {
"price_side": "same",
"use_order_book": true,
"order_book_top": 1,
"price_last_balance": 0.0,
"check_depth_of_market": {
"enabled": false,
"bids_to_ask_delta": 1
}
},
"exit_pricing": {
"price_side": "same",
"use_order_book": true,
"order_book_top": 1
},
"exchange": {
"name": "binance",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {},
"ccxt_async_config": {
},
"pair_whitelist": [
"ETH/USDT",
"XRP/USDT",
"BTC/USDT"
],
"pair_blacklist": [
"BNB/.*"
]
},
"pairlists": [
{"method": "StaticPairList"}
],
"telegram": {
"enabled": false,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id"
},
"api_server": {
"enabled": false,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "error",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "freqtrader",
"password": "SuperSecurePassword"
},
"bot_name": "freqtrade",
"initial_state": "running",
"force_entry_enable": false,
"internals": {
"process_throttle_secs": 5
}
}

View File

@ -13,6 +13,7 @@
"dry_run_wallet": 1000,
"cancel_open_orders_on_exit": true,
"stoploss": -0.05,
"use_exit_signal": true,
"unfilledtimeout": {
"entry": 5,
"exit": 15

View File

@ -0,0 +1,128 @@
{
"$schema": "https://schema.freqtrade.io/schema.json",
"trading_mode": "spot",
"margin_mode": "isolated",
"max_open_trades": 4,
"stake_currency": "USDT",
"stake_amount": 150,
"startup_candle_count": 30,
"tradable_balance_ratio": 1,
"fiat_display_currency": "USD",
"dry_run": true,
"identifier": "demo1",
"timeframe": "3m",
"dry_run_wallet": 1000,
"cancel_open_orders_on_exit": true,
"stoploss": -0.05,
"unfilledtimeout": {
"entry": 5,
"exit": 15
},
"exchange": {
"name": "okx",
"key": "eca767d4-fda5-4a1b-bb28-49ae18093307",
"secret": "8CA3628A556ED137977DB298D37BC7F3",
"enable_ws": false,
"ccxt_config": {
"enableRateLimit": true,
"rateLimit": 500,
"options": {
"defaultType": "spot"
}
},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 500,
"timeout": 20000
},
"pair_whitelist": [
"OKB/USDT"
],
"pair_blacklist": []
},
"freqai": {
"enabled": true,
"identifier": "test175",
"freqaimodel": "XGBoostRegressor",
"model_path": "/freqtrade/user_data/models",
"save_backtesting_prediction": true,
"save_backtest_models": true,
"backtest_period_days": 30,
"purge_old_models": true,
"load_trained_model": true,
"train_period_days": 90,
"backtest_period_days": 10,
"live_retrain_hours": 0,
"include_predictions_in_final_dataframe": true,
"data_kitchen": {
"fillna": "ffill",
"feature_parameters": {
"DI_threshold": 0.5,
"weight_factor": 0.9
}
},
"feature_parameters": {
"include_timeframes": ["5m", "15m", "1h"],
"include_corr_pairlist": ["BTC/USDT", "ETH/USDT"],
"label_period_candles": 12,
"include_shifted_candles": 3,
"indicator_periods_candles": [10, 20, 50],
"plot_feature_importances": 1,
"feature_selection": {
"method": "none"
}
},
"data_split_parameters": {
"test_size": 0.2,
"shuffle": false
},
"model_training_parameters": {
"n_estimators": 200,
"learning_rate": 0.05,
"max_depth": 6,
"subsample": 0.8,
"colsample_bytree": 0.8
},
},
"entry_pricing": {
"price_side": "same",
"use_order_book": true,
"order_book_top": 1,
"price_last_balance": 0.0,
"check_depth_of_market": {
"enabled": false,
"bids_to_ask_delta": 1
}
},
"exit_pricing": {
"price_side": "other",
"use_order_book": true,
"order_book_top": 1
},
"pairlists": [
{
"method": "StaticPairList"
}
],
"api_server": {
"enabled": true,
"listen_ip_address": "0.0.0.0",
"listen_port": 8080,
"verbosity": "error",
"enable_openapi": false,
"jwt_secret_key": "6a599ab046dbb419014807dffd7b8823bfa7e5df56b17d545485deb87331b4ca",
"ws_token": "6O5pBDiRigiZrmIsofaE2rkKMJtf9h8zVQ",
"CORS_origins": [],
"username": "freqAdmin",
"password": "admin"
},
"use_exit_signal": true,
"bot_name": "freqtrade",
"initial_state": "running",
"force_entry_enable": false,
"internals": {
"process_throttle_secs": 5,
"heartbeat_interval": 20,
"loglevel": "DEBUG"
}
}

View File

@ -67,9 +67,11 @@ services:
backtesting
--logfile /freqtrade/user_data/logs/freqtrade.log
--freqaimodel XGBoostRegressor
--config /freqtrade/config_examples/config_base_hyperopt.json
--config /freqtrade/config_examples/config_my_hyperopt.json
--strategy-path /freqtrade/templates
--strategy SharpeHyperOptStrategy
--strategy FreqaiExampleStrategy
--timerange 20250401-20250415
--export trades
--freqai-backtest
--fee 0.0008
--cache none

View File

@ -3,6 +3,7 @@ import numpy as np
from functools import reduce
import talib.abstract as ta
from pandas import DataFrame
from typing import Dict, List, Optional
from technical import qtpylib
from freqtrade.strategy import IStrategy, IntParameter, DecimalParameter
@ -31,6 +32,7 @@ class FreqaiExampleStrategy(IStrategy):
# FreqAI 配置
freqai_info = {
"model": "XGBoostRegressor", # 与config保持一致
"save_backtest_models": True,
"feature_parameters": {
"include_timeframes": ["3m", "15m", "1h"], # 与config一致
"include_corr_pairlist": ["BTC/USDT", "SOL/USDT"], # 添加相关交易对
@ -70,6 +72,17 @@ class FreqaiExampleStrategy(IStrategy):
"do_predict": {"do_predict": {"color": "brown"}},
},
}
def __init__(self, config: Dict):
super().__init__(config)
# 初始化特征缓存
self.feature_cache = {}
# 设置日志级别
logger.setLevel(logging.DEBUG)
# 输出模型路径用于调试
freqai_model_path = self.config.get("freqai", {}).get("model_path", "/freqtrade/user_data/models")
logger.info(f"FreqAI 模型路径:{freqai_model_path}")
def feature_engineering_expand_all(self, dataframe: DataFrame, period: int, metadata: dict, **kwargs) -> DataFrame:
# 保留关键的技术指标

View File

@ -0,0 +1,64 @@
from freqtrade.strategy import IStrategy, CategoricalParameter, DecimalParameter, IntParameter
import pandas as pd
import numpy as np
import talib.abstract as ta
class MyHyperoptStrategy(IStrategy):
INTERFACE_VERSION = 3
# Buy hyperspace params:
buy_params = {
"ema_short_period": 10,
"ema_long_period": 50,
}
# Sell hyperspace params:
sell_params = {
"rsi_high": 70,
}
ema_short_period = IntParameter(5, 20, default=10, space="buy", optimize=True)
ema_long_period = IntParameter(40, 100, default=50, space="buy", optimize=True)
rsi_high = IntParameter(60, 85, default=70, space="sell", optimize=True)
# Minimal ROI designed for the strategy
minimal_roi = {
"0": 0.1
}
# Optimal stoploss designed for the strategy
stoploss = -0.10
# Trailing stop
trailing_stop = False
def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
# Ensure only the 'close' column is passed to RSI
dataframe['rsi'] = ta.RSI(dataframe['close'], timeperiod=14)
dataframe['ema_short'] = dataframe['close'].ewm(span=self.ema_short_period.value, adjust=False).mean()
dataframe['ema_long'] = dataframe['close'].ewm(span=self.ema_long_period.value, adjust=False).mean()
return dataframe
def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
dataframe.loc[
(
(dataframe['ema_short'] > dataframe['ema_long']) &
(dataframe['rsi'] < 30)
),
'enter_long'
] = 1
return dataframe
def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
dataframe.loc[
(
(dataframe['ema_short'] < dataframe['ema_long']) &
(dataframe['rsi'] > self.rsi_high.value)
),
'exit_long'
] = 1
return dataframe

View File

@ -1,734 +1,25 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-06 04:23:11,765 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-06 04:23:11,971 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-06 04:23:13,393 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-06 04:23:13,395 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-06 04:23:13,395 - root - INFO - Logfile configured
2025-05-06 04:23:13,396 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-06 04:23:13,431 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-06 04:23:13,433 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-06 04:23:13,434 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-06 04:23:13,441 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-06 04:23:13,441 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-06 04:23:13,441 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:13,444 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-06 04:23:13,444 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-06 04:23:13,450 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-06 04:23:13,455 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-06 04:23:16,284 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-06 04:23:16,338 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-06 04:23:16,338 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - FreqAI 模型路径:/freqtrade/user_data/models
2025-05-06 04:23:16,339 - OKXRegressionStrategy - WARNING - ⚠️ 模型文件未找到,请确认是否训练完成
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - 🔍 正在尝试从 /freqtrade/user_data/models 加载模型
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-06 04:23:16,341 - 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-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-06 04:23:16,344 - 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-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-06 04:23:16,349 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:16,352 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-06 04:23:16,357 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-06 04:23:16,358 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:16,358 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-06 04:23:16,442 - freqtrade.optimize.backtesting - INFO - Loading data from 2024-12-31 21:30:00 up to 2025-04-15 00:00:00 (104 days).
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-06 04:23:18,018 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-06 04:23:18,222 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT']
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-06 04:23:18,226 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-06 04:23:18,230 - OKXRegressionStrategy - DEBUG - FreqAI 对象:<class 'XGBoostRegressor.XGBoostRegressor'>
2025-05-06 04:23:18,232 - freqtrade.freqai.freqai_interface - INFO - Training 2 timeranges
2025-05-06 04:23:18,234 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-01 00:00:00 to 2025-04-01 00:00:00, 1/2 trains
2025-05-06 04:23:18,234 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743465600_prediction.feather
2025-05-06 04:23:18,258 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:18,280 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:18,302 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:18,393 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:18,394 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,431 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,437 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,445 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,547 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,552 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,557 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,644 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,648 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,652 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:19,041 - OKXRegressionStrategy - DEBUG - 全局特征:['%-%-macd-10_10_OKB/USDT_3m', '%-%-macdsignal-10_10_OKB/USDT_3m', '%-%-bb_width-10_10_OKB/USDT_3m',
'%-%-volume_ma-10_10_OKB/USDT_3m', '%-%-macd-20_20_OKB/USDT_3m', '%-%-macdsignal-20_20_OKB/USDT_3m', '%-%-bb_width-20_20_OKB/USDT_3m', '%-%-volume_ma-20_20_OKB/USDT_3m', '%-%-macd-50_50_OKB/USDT_3m',
'%-%-macdsignal-50_50_OKB/USDT_3m', '%-%-bb_width-50_50_OKB/USDT_3m', '%-%-volume_ma-50_50_OKB/USDT_3m', '%-%-macd-10_10_shift-1_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_3m', '%-%-macd-20_20_shift-1_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_3m', '%-%-macd-50_50_shift-1_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_3m', '%-%-macd-10_10_shift-2_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_3m', '%-%-macd-20_20_shift-2_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_3m', '%-%-macd-50_50_shift-2_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_3m', '%-%-macd-10_10_shift-3_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_3m', '%-%-macd-20_20_shift-3_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_3m', '%-%-macd-50_50_shift-3_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_3m', '%-%-macd-10_10_OKB/USDT_5m', '%-%-macdsignal-10_10_OKB/USDT_5m', '%-%-bb_width-10_10_OKB/USDT_5m',
'%-%-volume_ma-10_10_OKB/USDT_5m', '%-%-macd-20_20_OKB/USDT_5m', '%-%-macdsignal-20_20_OKB/USDT_5m', '%-%-bb_width-20_20_OKB/USDT_5m', '%-%-volume_ma-20_20_OKB/USDT_5m', '%-%-macd-50_50_OKB/USDT_5m',
'%-%-macdsignal-50_50_OKB/USDT_5m', '%-%-bb_width-50_50_OKB/USDT_5m', '%-%-volume_ma-50_50_OKB/USDT_5m', '%-%-macd-10_10_shift-1_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_5m', '%-%-macd-20_20_shift-1_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_5m', '%-%-macd-50_50_shift-1_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_5m', '%-%-macd-10_10_shift-2_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_5m', '%-%-macd-20_20_shift-2_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_5m', '%-%-macd-50_50_shift-2_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_5m', '%-%-macd-10_10_shift-3_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_5m', '%-%-macd-20_20_shift-3_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_5m', '%-%-macd-50_50_shift-3_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_5m', '%-%-macd-10_10_OKB/USDT_15m', '%-%-macdsignal-10_10_OKB/USDT_15m', '%-%-bb_width-10_10_OKB/USDT_15m',
'%-%-volume_ma-10_10_OKB/USDT_15m', '%-%-macd-20_20_OKB/USDT_15m', '%-%-macdsignal-20_20_OKB/USDT_15m', '%-%-bb_width-20_20_OKB/USDT_15m', '%-%-volume_ma-20_20_OKB/USDT_15m',
'%-%-macd-50_50_OKB/USDT_15m', '%-%-macdsignal-50_50_OKB/USDT_15m', '%-%-bb_width-50_50_OKB/USDT_15m', '%-%-volume_ma-50_50_OKB/USDT_15m', '%-%-macd-10_10_shift-1_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-1_OKB/USDT_15m', '%-%-bb_width-10_10_shift-1_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_15m', '%-%-macd-20_20_shift-1_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-1_OKB/USDT_15m', '%-%-bb_width-20_20_shift-1_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_15m', '%-%-macd-50_50_shift-1_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-1_OKB/USDT_15m', '%-%-bb_width-50_50_shift-1_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_15m', '%-%-macd-10_10_shift-2_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-2_OKB/USDT_15m', '%-%-bb_width-10_10_shift-2_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_15m', '%-%-macd-20_20_shift-2_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-2_OKB/USDT_15m', '%-%-bb_width-20_20_shift-2_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_15m', '%-%-macd-50_50_shift-2_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-2_OKB/USDT_15m', '%-%-bb_width-50_50_shift-2_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_15m', '%-%-macd-10_10_shift-3_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-3_OKB/USDT_15m', '%-%-bb_width-10_10_shift-3_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_15m', '%-%-macd-20_20_shift-3_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-3_OKB/USDT_15m', '%-%-bb_width-20_20_shift-3_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_15m', '%-%-macd-50_50_shift-3_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-3_OKB/USDT_15m', '%-%-bb_width-50_50_shift-3_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_15m', '%-%-macd-10_10_OKB/USDT_1h', '%-%-macdsignal-10_10_OKB/USDT_1h',
'%-%-bb_width-10_10_OKB/USDT_1h', '%-%-volume_ma-10_10_OKB/USDT_1h', '%-%-macd-20_20_OKB/USDT_1h', '%-%-macdsignal-20_20_OKB/USDT_1h', '%-%-bb_width-20_20_OKB/USDT_1h',
'%-%-volume_ma-20_20_OKB/USDT_1h', '%-%-macd-50_50_OKB/USDT_1h', '%-%-macdsignal-50_50_OKB/USDT_1h', '%-%-bb_width-50_50_OKB/USDT_1h', '%-%-volume_ma-50_50_OKB/USDT_1h',
'%-%-macd-10_10_shift-1_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-1_OKB/USDT_1h', '%-%-bb_width-10_10_shift-1_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-1_OKB/USDT_1h',
'%-%-macd-20_20_shift-1_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-1_OKB/USDT_1h', '%-%-bb_width-20_20_shift-1_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-1_OKB/USDT_1h',
'%-%-macd-50_50_shift-1_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-1_OKB/USDT_1h', '%-%-bb_width-50_50_shift-1_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-1_OKB/USDT_1h',
'%-%-macd-10_10_shift-2_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-2_OKB/USDT_1h', '%-%-bb_width-10_10_shift-2_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-2_OKB/USDT_1h',
'%-%-macd-20_20_shift-2_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-2_OKB/USDT_1h', '%-%-bb_width-20_20_shift-2_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-2_OKB/USDT_1h',
'%-%-macd-50_50_shift-2_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-2_OKB/USDT_1h', '%-%-bb_width-50_50_shift-2_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-2_OKB/USDT_1h',
'%-%-macd-10_10_shift-3_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-3_OKB/USDT_1h', '%-%-bb_width-10_10_shift-3_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-3_OKB/USDT_1h',
'%-%-macd-20_20_shift-3_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-3_OKB/USDT_1h', '%-%-bb_width-20_20_shift-3_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-3_OKB/USDT_1h',
'%-%-macd-50_50_shift-3_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-3_OKB/USDT_1h', '%-%-bb_width-50_50_shift-3_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-3_OKB/USDT_1h']
2025-05-06 04:23:19,092 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:19,093 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,161 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:19,177 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:19,194 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,359 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,365 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,373 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,546 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:19,547 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,568 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,572 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,577 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,734 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:19,735 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,752 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,756 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,760 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,082 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:20,097 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:20,115 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:20,296 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:20,297 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,333 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,339 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,345 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,583 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:20,584 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,605 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,609 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,614 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,859 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:20,860 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,877 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,881 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,885 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:35,159 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600
2025-05-06 04:23:35,160 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:23:35,505 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 51 training points due to NaNs in populated dataset 43200.
2025-05-06 04:23:35,505 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-01 to 2025-03-31 --------------------
2025-05-06 04:23:35,677 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34519 data points
[0] validation_0-rmse:0.60502 validation_1-rmse:0.60246
[1] validation_0-rmse:0.58239 validation_1-rmse:0.57853
[2] validation_0-rmse:0.56150 validation_1-rmse:0.55600
[3] validation_0-rmse:0.54183 validation_1-rmse:0.53486
[4] validation_0-rmse:0.52357 validation_1-rmse:0.51489
[5] validation_0-rmse:0.50642 validation_1-rmse:0.49598
[6] validation_0-rmse:0.49044 validation_1-rmse:0.47832
[7] validation_0-rmse:0.47544 validation_1-rmse:0.46174
[8] validation_0-rmse:0.46173 validation_1-rmse:0.44610
[9] validation_0-rmse:0.44889 validation_1-rmse:0.43147
[10] validation_0-rmse:0.43666 validation_1-rmse:0.41779
[11] validation_0-rmse:0.42555 validation_1-rmse:0.40494
[12] validation_0-rmse:0.41488 validation_1-rmse:0.39269
[13] validation_0-rmse:0.40559 validation_1-rmse:0.38140
[14] validation_0-rmse:0.39705 validation_1-rmse:0.37079
[15] validation_0-rmse:0.38894 validation_1-rmse:0.36094
[16] validation_0-rmse:0.38120 validation_1-rmse:0.35168
[17] validation_0-rmse:0.37429 validation_1-rmse:0.34283
[18] validation_0-rmse:0.36774 validation_1-rmse:0.33441
[19] validation_0-rmse:0.36207 validation_1-rmse:0.32679
[20] validation_0-rmse:0.35671 validation_1-rmse:0.31954
[21] validation_0-rmse:0.35172 validation_1-rmse:0.31301
[22] validation_0-rmse:0.34692 validation_1-rmse:0.30662
[23] validation_0-rmse:0.34262 validation_1-rmse:0.30074
[24] validation_0-rmse:0.33870 validation_1-rmse:0.29535
[25] validation_0-rmse:0.33513 validation_1-rmse:0.29026
[26] validation_0-rmse:0.33205 validation_1-rmse:0.28544
[27] validation_0-rmse:0.32919 validation_1-rmse:0.28084
[28] validation_0-rmse:0.32645 validation_1-rmse:0.27689
[29] validation_0-rmse:0.32396 validation_1-rmse:0.27293
[30] validation_0-rmse:0.32177 validation_1-rmse:0.26930
[31] validation_0-rmse:0.31982 validation_1-rmse:0.26553
[32] validation_0-rmse:0.31804 validation_1-rmse:0.26227
[33] validation_0-rmse:0.31644 validation_1-rmse:0.25917
[34] validation_0-rmse:0.31502 validation_1-rmse:0.25626
[35] validation_0-rmse:0.31355 validation_1-rmse:0.25340
[36] validation_0-rmse:0.31243 validation_1-rmse:0.25060
[37] validation_0-rmse:0.31129 validation_1-rmse:0.24836
[38] validation_0-rmse:0.31046 validation_1-rmse:0.24605
[39] validation_0-rmse:0.30936 validation_1-rmse:0.24380
[40] validation_0-rmse:0.30855 validation_1-rmse:0.24174
[41] validation_0-rmse:0.30784 validation_1-rmse:0.23973
[42] validation_0-rmse:0.30711 validation_1-rmse:0.23770
[43] validation_0-rmse:0.30639 validation_1-rmse:0.23586
[44] validation_0-rmse:0.30584 validation_1-rmse:0.23432
[45] validation_0-rmse:0.30534 validation_1-rmse:0.23277
[46] validation_0-rmse:0.30464 validation_1-rmse:0.23120
[47] validation_0-rmse:0.30426 validation_1-rmse:0.22968
[48] validation_0-rmse:0.30381 validation_1-rmse:0.22810
[49] validation_0-rmse:0.30344 validation_1-rmse:0.22672
[50] validation_0-rmse:0.30321 validation_1-rmse:0.22529
[51] validation_0-rmse:0.30296 validation_1-rmse:0.22408
[52] validation_0-rmse:0.30273 validation_1-rmse:0.22289
[53] validation_0-rmse:0.30254 validation_1-rmse:0.22185
[54] validation_0-rmse:0.30229 validation_1-rmse:0.22096
[55] validation_0-rmse:0.30198 validation_1-rmse:0.21986
[56] validation_0-rmse:0.30199 validation_1-rmse:0.21878
[57] validation_0-rmse:0.30159 validation_1-rmse:0.21784
[58] validation_0-rmse:0.30128 validation_1-rmse:0.21672
[59] validation_0-rmse:0.30099 validation_1-rmse:0.21586
[60] validation_0-rmse:0.30092 validation_1-rmse:0.21505
[61] validation_0-rmse:0.30090 validation_1-rmse:0.21440
[62] validation_0-rmse:0.30081 validation_1-rmse:0.21340
[63] validation_0-rmse:0.30062 validation_1-rmse:0.21249
[64] validation_0-rmse:0.30055 validation_1-rmse:0.21159
[65] validation_0-rmse:0.30051 validation_1-rmse:0.21079
[66] validation_0-rmse:0.30051 validation_1-rmse:0.21004
[67] validation_0-rmse:0.30043 validation_1-rmse:0.20917
[68] validation_0-rmse:0.30052 validation_1-rmse:0.20848
[69] validation_0-rmse:0.30036 validation_1-rmse:0.20766
[70] validation_0-rmse:0.30033 validation_1-rmse:0.20669
[71] validation_0-rmse:0.30039 validation_1-rmse:0.20609
[72] validation_0-rmse:0.30026 validation_1-rmse:0.20547
[73] validation_0-rmse:0.30025 validation_1-rmse:0.20486
[74] validation_0-rmse:0.30015 validation_1-rmse:0.20425
[75] validation_0-rmse:0.30010 validation_1-rmse:0.20353
[76] validation_0-rmse:0.30023 validation_1-rmse:0.20262
[77] validation_0-rmse:0.30015 validation_1-rmse:0.20194
[78] validation_0-rmse:0.30013 validation_1-rmse:0.20138
[79] validation_0-rmse:0.30006 validation_1-rmse:0.20076
[80] validation_0-rmse:0.30002 validation_1-rmse:0.20001
[81] validation_0-rmse:0.30001 validation_1-rmse:0.19937
[82] validation_0-rmse:0.29996 validation_1-rmse:0.19888
[83] validation_0-rmse:0.29991 validation_1-rmse:0.19817
[84] validation_0-rmse:0.29983 validation_1-rmse:0.19749
[85] validation_0-rmse:0.29979 validation_1-rmse:0.19685
[86] validation_0-rmse:0.29980 validation_1-rmse:0.19612
[87] validation_0-rmse:0.29985 validation_1-rmse:0.19562
[88] validation_0-rmse:0.29993 validation_1-rmse:0.19485
[89] validation_0-rmse:0.29998 validation_1-rmse:0.19424
[90] validation_0-rmse:0.29997 validation_1-rmse:0.19374
[91] validation_0-rmse:0.29977 validation_1-rmse:0.19298
[92] validation_0-rmse:0.29989 validation_1-rmse:0.19240
[93] validation_0-rmse:0.29990 validation_1-rmse:0.19180
[94] validation_0-rmse:0.29989 validation_1-rmse:0.19107
[95] validation_0-rmse:0.29998 validation_1-rmse:0.19031
[96] validation_0-rmse:0.29995 validation_1-rmse:0.18978
[97] validation_0-rmse:0.29984 validation_1-rmse:0.18929
[98] validation_0-rmse:0.29987 validation_1-rmse:0.18874
[99] validation_0-rmse:0.29984 validation_1-rmse:0.18813
[100] validation_0-rmse:0.29991 validation_1-rmse:0.18752
[101] validation_0-rmse:0.30003 validation_1-rmse:0.18683
[102] validation_0-rmse:0.30012 validation_1-rmse:0.18609
[103] validation_0-rmse:0.30001 validation_1-rmse:0.18556
[104] validation_0-rmse:0.30015 validation_1-rmse:0.18482
[105] validation_0-rmse:0.30019 validation_1-rmse:0.18399
[106] validation_0-rmse:0.30019 validation_1-rmse:0.18324
[107] validation_0-rmse:0.30024 validation_1-rmse:0.18277
[108] validation_0-rmse:0.30022 validation_1-rmse:0.18211
[109] validation_0-rmse:0.30018 validation_1-rmse:0.18177
[110] validation_0-rmse:0.30011 validation_1-rmse:0.18115
[111] validation_0-rmse:0.30024 validation_1-rmse:0.18062
[112] validation_0-rmse:0.30024 validation_1-rmse:0.18016
[113] validation_0-rmse:0.30029 validation_1-rmse:0.17966
[114] validation_0-rmse:0.30025 validation_1-rmse:0.17926
[115] validation_0-rmse:0.30046 validation_1-rmse:0.17866
[116] validation_0-rmse:0.30054 validation_1-rmse:0.17797
[117] validation_0-rmse:0.30058 validation_1-rmse:0.17726
[118] validation_0-rmse:0.30056 validation_1-rmse:0.17664
[119] validation_0-rmse:0.30064 validation_1-rmse:0.17618
[120] validation_0-rmse:0.30061 validation_1-rmse:0.17575
[121] validation_0-rmse:0.30053 validation_1-rmse:0.17521
[122] validation_0-rmse:0.30056 validation_1-rmse:0.17463
[123] validation_0-rmse:0.30055 validation_1-rmse:0.17436
[124] validation_0-rmse:0.30062 validation_1-rmse:0.17371
[125] validation_0-rmse:0.30059 validation_1-rmse:0.17323
[126] validation_0-rmse:0.30047 validation_1-rmse:0.17279
[127] validation_0-rmse:0.30044 validation_1-rmse:0.17239
[128] validation_0-rmse:0.30048 validation_1-rmse:0.17173
[129] validation_0-rmse:0.30047 validation_1-rmse:0.17118
[130] validation_0-rmse:0.30047 validation_1-rmse:0.17057
[131] validation_0-rmse:0.30049 validation_1-rmse:0.17024
[132] validation_0-rmse:0.30055 validation_1-rmse:0.16960
[133] validation_0-rmse:0.30054 validation_1-rmse:0.16926
[134] validation_0-rmse:0.30056 validation_1-rmse:0.16871
[135] validation_0-rmse:0.30068 validation_1-rmse:0.16810
[136] validation_0-rmse:0.30076 validation_1-rmse:0.16755
[137] validation_0-rmse:0.30080 validation_1-rmse:0.16717
[138] validation_0-rmse:0.30082 validation_1-rmse:0.16668
[139] validation_0-rmse:0.30082 validation_1-rmse:0.16634
[140] validation_0-rmse:0.30080 validation_1-rmse:0.16603
[141] validation_0-rmse:0.30076 validation_1-rmse:0.16560
[142] validation_0-rmse:0.30080 validation_1-rmse:0.16524
[143] validation_0-rmse:0.30080 validation_1-rmse:0.16466
[144] validation_0-rmse:0.30079 validation_1-rmse:0.16414
[145] validation_0-rmse:0.30073 validation_1-rmse:0.16359
[146] validation_0-rmse:0.30073 validation_1-rmse:0.16302
[147] validation_0-rmse:0.30078 validation_1-rmse:0.16250
[148] validation_0-rmse:0.30080 validation_1-rmse:0.16206
[149] validation_0-rmse:0.30084 validation_1-rmse:0.16151
[150] validation_0-rmse:0.30084 validation_1-rmse:0.16111
[151] validation_0-rmse:0.30083 validation_1-rmse:0.16062
[152] validation_0-rmse:0.30091 validation_1-rmse:0.16025
[153] validation_0-rmse:0.30087 validation_1-rmse:0.15992
[154] validation_0-rmse:0.30088 validation_1-rmse:0.15955
[155] validation_0-rmse:0.30089 validation_1-rmse:0.15928
[156] validation_0-rmse:0.30093 validation_1-rmse:0.15884
[157] validation_0-rmse:0.30097 validation_1-rmse:0.15836
[158] validation_0-rmse:0.30109 validation_1-rmse:0.15789
[159] validation_0-rmse:0.30103 validation_1-rmse:0.15763
[160] validation_0-rmse:0.30099 validation_1-rmse:0.15731
[161] validation_0-rmse:0.30100 validation_1-rmse:0.15694
[162] validation_0-rmse:0.30105 validation_1-rmse:0.15647
[163] validation_0-rmse:0.30108 validation_1-rmse:0.15600
[164] validation_0-rmse:0.30111 validation_1-rmse:0.15558
[165] validation_0-rmse:0.30110 validation_1-rmse:0.15529
[166] validation_0-rmse:0.30111 validation_1-rmse:0.15486
[167] validation_0-rmse:0.30113 validation_1-rmse:0.15449
[168] validation_0-rmse:0.30116 validation_1-rmse:0.15413
[169] validation_0-rmse:0.30110 validation_1-rmse:0.15385
[170] validation_0-rmse:0.30106 validation_1-rmse:0.15331
[171] validation_0-rmse:0.30110 validation_1-rmse:0.15298
[172] validation_0-rmse:0.30120 validation_1-rmse:0.15253
[173] validation_0-rmse:0.30126 validation_1-rmse:0.15212
[174] validation_0-rmse:0.30127 validation_1-rmse:0.15180
[175] validation_0-rmse:0.30132 validation_1-rmse:0.15153
[176] validation_0-rmse:0.30133 validation_1-rmse:0.15122
[177] validation_0-rmse:0.30135 validation_1-rmse:0.15082
[178] validation_0-rmse:0.30133 validation_1-rmse:0.15050
[179] validation_0-rmse:0.30135 validation_1-rmse:0.15021
[180] validation_0-rmse:0.30134 validation_1-rmse:0.14986
[181] validation_0-rmse:0.30138 validation_1-rmse:0.14955
[182] validation_0-rmse:0.30136 validation_1-rmse:0.14933
[183] validation_0-rmse:0.30137 validation_1-rmse:0.14903
[184] validation_0-rmse:0.30143 validation_1-rmse:0.14858
[185] validation_0-rmse:0.30148 validation_1-rmse:0.14817
[186] validation_0-rmse:0.30146 validation_1-rmse:0.14778
[187] validation_0-rmse:0.30152 validation_1-rmse:0.14754
[188] validation_0-rmse:0.30149 validation_1-rmse:0.14722
[189] validation_0-rmse:0.30147 validation_1-rmse:0.14697
[190] validation_0-rmse:0.30153 validation_1-rmse:0.14672
[191] validation_0-rmse:0.30150 validation_1-rmse:0.14643
[192] validation_0-rmse:0.30154 validation_1-rmse:0.14610
[193] validation_0-rmse:0.30155 validation_1-rmse:0.14576
[194] validation_0-rmse:0.30157 validation_1-rmse:0.14545
[195] validation_0-rmse:0.30158 validation_1-rmse:0.14510
[196] validation_0-rmse:0.30164 validation_1-rmse:0.14472
[197] validation_0-rmse:0.30163 validation_1-rmse:0.14436
[198] validation_0-rmse:0.30157 validation_1-rmse:0.14409
[199] validation_0-rmse:0.30154 validation_1-rmse:0.14371
2025-05-06 04:26:29,861 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (174.70 secs) --------------------
2025-05-06 04:26:30,080 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600--s_close.html
2025-05-06 04:26:30,080 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:26:30,214 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:26:30,227 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-11 00:00:00 to 2025-04-11 00:00:00, 2/2 trains
2025-05-06 04:26:30,228 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1744329600_prediction.feather
2025-05-06 04:26:45,365 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600
2025-05-06 04:26:45,365 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:26:45,664 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 12 training points due to NaNs in populated dataset 43200.
2025-05-06 04:26:45,665 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-11 to 2025-04-10 --------------------
2025-05-06 04:26:45,833 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:26:45,973 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:26:45,974 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34550 data points
[0] validation_0-rmse:0.60465 validation_1-rmse:0.60316
[1] validation_0-rmse:0.58269 validation_1-rmse:0.57899
[2] validation_0-rmse:0.56203 validation_1-rmse:0.55619
[3] validation_0-rmse:0.54249 validation_1-rmse:0.53479
[4] validation_0-rmse:0.52416 validation_1-rmse:0.51443
[5] validation_0-rmse:0.50757 validation_1-rmse:0.49539
[6] validation_0-rmse:0.49180 validation_1-rmse:0.47736
[7] validation_0-rmse:0.47728 validation_1-rmse:0.46053
[8] validation_0-rmse:0.46376 validation_1-rmse:0.44471
[9] validation_0-rmse:0.45106 validation_1-rmse:0.42971
[10] validation_0-rmse:0.43910 validation_1-rmse:0.41562
[11] validation_0-rmse:0.42818 validation_1-rmse:0.40246
[12] validation_0-rmse:0.41784 validation_1-rmse:0.39003
[13] validation_0-rmse:0.40838 validation_1-rmse:0.37848
[14] validation_0-rmse:0.39980 validation_1-rmse:0.36760
[15] validation_0-rmse:0.39182 validation_1-rmse:0.35745
[16] validation_0-rmse:0.38460 validation_1-rmse:0.34799
[17] validation_0-rmse:0.37762 validation_1-rmse:0.33910
[18] validation_0-rmse:0.37155 validation_1-rmse:0.33062
[19] validation_0-rmse:0.36592 validation_1-rmse:0.32278
[20] validation_0-rmse:0.36081 validation_1-rmse:0.31539
[21] validation_0-rmse:0.35594 validation_1-rmse:0.30873
[22] validation_0-rmse:0.35183 validation_1-rmse:0.30236
[23] validation_0-rmse:0.34758 validation_1-rmse:0.29638
[24] validation_0-rmse:0.34376 validation_1-rmse:0.29099
[25] validation_0-rmse:0.34028 validation_1-rmse:0.28554
[26] validation_0-rmse:0.33701 validation_1-rmse:0.28063
[27] validation_0-rmse:0.33401 validation_1-rmse:0.27600
[28] validation_0-rmse:0.33171 validation_1-rmse:0.27152
[29] validation_0-rmse:0.32912 validation_1-rmse:0.26762
[30] validation_0-rmse:0.32699 validation_1-rmse:0.26389
[31] validation_0-rmse:0.32488 validation_1-rmse:0.26037
[32] validation_0-rmse:0.32312 validation_1-rmse:0.25690
[33] validation_0-rmse:0.32166 validation_1-rmse:0.25370
[34] validation_0-rmse:0.32004 validation_1-rmse:0.25103
[35] validation_0-rmse:0.31858 validation_1-rmse:0.24799
[36] validation_0-rmse:0.31737 validation_1-rmse:0.24524
[37] validation_0-rmse:0.31629 validation_1-rmse:0.24237
[38] validation_0-rmse:0.31527 validation_1-rmse:0.23986
[39] validation_0-rmse:0.31436 validation_1-rmse:0.23741
[40] validation_0-rmse:0.31349 validation_1-rmse:0.23551
[41] validation_0-rmse:0.31271 validation_1-rmse:0.23357
[42] validation_0-rmse:0.31211 validation_1-rmse:0.23136
[43] validation_0-rmse:0.31125 validation_1-rmse:0.22927
[44] validation_0-rmse:0.31077 validation_1-rmse:0.22743
[45] validation_0-rmse:0.31016 validation_1-rmse:0.22563
[46] validation_0-rmse:0.30968 validation_1-rmse:0.22403
[47] validation_0-rmse:0.30933 validation_1-rmse:0.22243
[48] validation_0-rmse:0.30908 validation_1-rmse:0.22087
[49] validation_0-rmse:0.30864 validation_1-rmse:0.21933
[50] validation_0-rmse:0.30828 validation_1-rmse:0.21811
[51] validation_0-rmse:0.30815 validation_1-rmse:0.21676
[52] validation_0-rmse:0.30790 validation_1-rmse:0.21529
[53] validation_0-rmse:0.30744 validation_1-rmse:0.21412
[54] validation_0-rmse:0.30730 validation_1-rmse:0.21303
[55] validation_0-rmse:0.30701 validation_1-rmse:0.21187
[56] validation_0-rmse:0.30667 validation_1-rmse:0.21096
[57] validation_0-rmse:0.30639 validation_1-rmse:0.20981
[58] validation_0-rmse:0.30629 validation_1-rmse:0.20873
[59] validation_0-rmse:0.30583 validation_1-rmse:0.20774
[60] validation_0-rmse:0.30563 validation_1-rmse:0.20673
[61] validation_0-rmse:0.30556 validation_1-rmse:0.20583
[62] validation_0-rmse:0.30535 validation_1-rmse:0.20489
[63] validation_0-rmse:0.30507 validation_1-rmse:0.20393
[64] validation_0-rmse:0.30501 validation_1-rmse:0.20306
[65] validation_0-rmse:0.30480 validation_1-rmse:0.20218
[66] validation_0-rmse:0.30457 validation_1-rmse:0.20118
[67] validation_0-rmse:0.30460 validation_1-rmse:0.20040
[68] validation_0-rmse:0.30449 validation_1-rmse:0.19968
[69] validation_0-rmse:0.30455 validation_1-rmse:0.19891
[70] validation_0-rmse:0.30454 validation_1-rmse:0.19808
[71] validation_0-rmse:0.30438 validation_1-rmse:0.19722
[72] validation_0-rmse:0.30428 validation_1-rmse:0.19643
[73] validation_0-rmse:0.30425 validation_1-rmse:0.19555
[74] validation_0-rmse:0.30421 validation_1-rmse:0.19473
[75] validation_0-rmse:0.30403 validation_1-rmse:0.19396
[76] validation_0-rmse:0.30405 validation_1-rmse:0.19307
[77] validation_0-rmse:0.30415 validation_1-rmse:0.19234
[78] validation_0-rmse:0.30421 validation_1-rmse:0.19161
[79] validation_0-rmse:0.30418 validation_1-rmse:0.19098
[80] validation_0-rmse:0.30412 validation_1-rmse:0.19036
[81] validation_0-rmse:0.30416 validation_1-rmse:0.18973
[82] validation_0-rmse:0.30414 validation_1-rmse:0.18904
[83] validation_0-rmse:0.30416 validation_1-rmse:0.18831
[84] validation_0-rmse:0.30425 validation_1-rmse:0.18757
[85] validation_0-rmse:0.30426 validation_1-rmse:0.18690
[86] validation_0-rmse:0.30431 validation_1-rmse:0.18612
[87] validation_0-rmse:0.30435 validation_1-rmse:0.18559
[88] validation_0-rmse:0.30432 validation_1-rmse:0.18501
[89] validation_0-rmse:0.30422 validation_1-rmse:0.18460
[90] validation_0-rmse:0.30420 validation_1-rmse:0.18411
[91] validation_0-rmse:0.30425 validation_1-rmse:0.18361
[92] validation_0-rmse:0.30425 validation_1-rmse:0.18298
[93] validation_0-rmse:0.30445 validation_1-rmse:0.18243
[94] validation_0-rmse:0.30441 validation_1-rmse:0.18190
[95] validation_0-rmse:0.30455 validation_1-rmse:0.18137
[96] validation_0-rmse:0.30453 validation_1-rmse:0.18099
[97] validation_0-rmse:0.30450 validation_1-rmse:0.18035
[98] validation_0-rmse:0.30454 validation_1-rmse:0.17980
[99] validation_0-rmse:0.30462 validation_1-rmse:0.17903
[100] validation_0-rmse:0.30460 validation_1-rmse:0.17856
[101] validation_0-rmse:0.30456 validation_1-rmse:0.17794
[102] validation_0-rmse:0.30448 validation_1-rmse:0.17744
[103] validation_0-rmse:0.30450 validation_1-rmse:0.17674
[104] validation_0-rmse:0.30463 validation_1-rmse:0.17608
[105] validation_0-rmse:0.30462 validation_1-rmse:0.17549
[106] validation_0-rmse:0.30473 validation_1-rmse:0.17493
[107] validation_0-rmse:0.30482 validation_1-rmse:0.17431
[108] validation_0-rmse:0.30487 validation_1-rmse:0.17375
[109] validation_0-rmse:0.30492 validation_1-rmse:0.17325
[110] validation_0-rmse:0.30497 validation_1-rmse:0.17272
[111] validation_0-rmse:0.30501 validation_1-rmse:0.17226
[112] validation_0-rmse:0.30490 validation_1-rmse:0.17173
[113] validation_0-rmse:0.30499 validation_1-rmse:0.17130
[114] validation_0-rmse:0.30502 validation_1-rmse:0.17064
[115] validation_0-rmse:0.30514 validation_1-rmse:0.17022
[116] validation_0-rmse:0.30513 validation_1-rmse:0.16984
[117] validation_0-rmse:0.30510 validation_1-rmse:0.16938
[118] validation_0-rmse:0.30504 validation_1-rmse:0.16869
[119] validation_0-rmse:0.30506 validation_1-rmse:0.16808
[120] validation_0-rmse:0.30503 validation_1-rmse:0.16762
[121] validation_0-rmse:0.30519 validation_1-rmse:0.16711
[122] validation_0-rmse:0.30521 validation_1-rmse:0.16662
[123] validation_0-rmse:0.30529 validation_1-rmse:0.16602
[124] validation_0-rmse:0.30535 validation_1-rmse:0.16569
[125] validation_0-rmse:0.30539 validation_1-rmse:0.16511
[126] validation_0-rmse:0.30549 validation_1-rmse:0.16465
[127] validation_0-rmse:0.30558 validation_1-rmse:0.16417
[128] validation_0-rmse:0.30564 validation_1-rmse:0.16368
[129] validation_0-rmse:0.30565 validation_1-rmse:0.16327
[130] validation_0-rmse:0.30571 validation_1-rmse:0.16281
[131] validation_0-rmse:0.30570 validation_1-rmse:0.16237
[132] validation_0-rmse:0.30577 validation_1-rmse:0.16185
[133] validation_0-rmse:0.30579 validation_1-rmse:0.16154
[134] validation_0-rmse:0.30577 validation_1-rmse:0.16112
[135] validation_0-rmse:0.30581 validation_1-rmse:0.16063
[136] validation_0-rmse:0.30594 validation_1-rmse:0.16008
[137] validation_0-rmse:0.30596 validation_1-rmse:0.15963
[138] validation_0-rmse:0.30606 validation_1-rmse:0.15921
[139] validation_0-rmse:0.30607 validation_1-rmse:0.15876
[140] validation_0-rmse:0.30612 validation_1-rmse:0.15846
[141] validation_0-rmse:0.30608 validation_1-rmse:0.15811
[142] validation_0-rmse:0.30613 validation_1-rmse:0.15762
[143] validation_0-rmse:0.30618 validation_1-rmse:0.15707
[144] validation_0-rmse:0.30617 validation_1-rmse:0.15664
[145] validation_0-rmse:0.30630 validation_1-rmse:0.15629
[146] validation_0-rmse:0.30636 validation_1-rmse:0.15593
[147] validation_0-rmse:0.30630 validation_1-rmse:0.15546
[148] validation_0-rmse:0.30633 validation_1-rmse:0.15500
[149] validation_0-rmse:0.30630 validation_1-rmse:0.15450
[150] validation_0-rmse:0.30633 validation_1-rmse:0.15420
[151] validation_0-rmse:0.30633 validation_1-rmse:0.15383
[152] validation_0-rmse:0.30645 validation_1-rmse:0.15336
[153] validation_0-rmse:0.30648 validation_1-rmse:0.15297
[154] validation_0-rmse:0.30652 validation_1-rmse:0.15255
[155] validation_0-rmse:0.30657 validation_1-rmse:0.15229
[156] validation_0-rmse:0.30654 validation_1-rmse:0.15201
[157] validation_0-rmse:0.30662 validation_1-rmse:0.15166
[158] validation_0-rmse:0.30664 validation_1-rmse:0.15137
[159] validation_0-rmse:0.30665 validation_1-rmse:0.15103
[160] validation_0-rmse:0.30672 validation_1-rmse:0.15061
[161] validation_0-rmse:0.30677 validation_1-rmse:0.15018
[162] validation_0-rmse:0.30685 validation_1-rmse:0.14985
[163] validation_0-rmse:0.30675 validation_1-rmse:0.14952
[164] validation_0-rmse:0.30679 validation_1-rmse:0.14922
[165] validation_0-rmse:0.30677 validation_1-rmse:0.14879
[166] validation_0-rmse:0.30678 validation_1-rmse:0.14838
[167] validation_0-rmse:0.30680 validation_1-rmse:0.14795
[168] validation_0-rmse:0.30684 validation_1-rmse:0.14769
[169] validation_0-rmse:0.30685 validation_1-rmse:0.14739
[170] validation_0-rmse:0.30685 validation_1-rmse:0.14692
[171] validation_0-rmse:0.30684 validation_1-rmse:0.14668
[172] validation_0-rmse:0.30684 validation_1-rmse:0.14629
[173] validation_0-rmse:0.30684 validation_1-rmse:0.14601
[174] validation_0-rmse:0.30682 validation_1-rmse:0.14557
[175] validation_0-rmse:0.30677 validation_1-rmse:0.14529
[176] validation_0-rmse:0.30679 validation_1-rmse:0.14490
[177] validation_0-rmse:0.30680 validation_1-rmse:0.14464
[178] validation_0-rmse:0.30682 validation_1-rmse:0.14420
[179] validation_0-rmse:0.30681 validation_1-rmse:0.14388
[180] validation_0-rmse:0.30680 validation_1-rmse:0.14357
[181] validation_0-rmse:0.30679 validation_1-rmse:0.14322
[182] validation_0-rmse:0.30689 validation_1-rmse:0.14300
[183] validation_0-rmse:0.30686 validation_1-rmse:0.14271
[184] validation_0-rmse:0.30688 validation_1-rmse:0.14246
[185] validation_0-rmse:0.30687 validation_1-rmse:0.14221
[186] validation_0-rmse:0.30686 validation_1-rmse:0.14182
[187] validation_0-rmse:0.30687 validation_1-rmse:0.14145
[188] validation_0-rmse:0.30692 validation_1-rmse:0.14122
[189] validation_0-rmse:0.30696 validation_1-rmse:0.14102
[190] validation_0-rmse:0.30695 validation_1-rmse:0.14080
[191] validation_0-rmse:0.30696 validation_1-rmse:0.14046
[192] validation_0-rmse:0.30694 validation_1-rmse:0.14013
[193] validation_0-rmse:0.30697 validation_1-rmse:0.13983
[194] validation_0-rmse:0.30694 validation_1-rmse:0.13950
[195] validation_0-rmse:0.30693 validation_1-rmse:0.13925
[196] validation_0-rmse:0.30697 validation_1-rmse:0.13895
[197] validation_0-rmse:0.30693 validation_1-rmse:0.13869
[198] validation_0-rmse:0.30701 validation_1-rmse:0.13827
[199] validation_0-rmse:0.30706 validation_1-rmse:0.13800
2025-05-06 04:29:40,827 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (175.46 secs) --------------------
2025-05-06 04:29:40,863 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600--s_close.html
2025-05-06 04:29:40,863 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:29:40,955 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:29:41,148 - OKXRegressionStrategy - WARNING - ⚠️ 缺失目标列:['&-buy_rsi_pred'],尝试重新生成
2025-05-06 04:29:41,149 - OKXRegressionStrategy - WARNING - ⚠️ 缺失预测列:['pred_upper', 'pred_lower'],尝试回退默认值
2025-05-06 04:29:41,150 - OKXRegressionStrategy - DEBUG - 预测统计:均值=0.0000, 方差=0.0000
2025-05-06 04:29:41,151 - OKXRegressionStrategy - WARNING - ⚠️ pred_upper 列全为 NaN可能模型未加载成功
2025-05-06 04:29:41,151 - OKXRegressionStrategy - DEBUG - 生成的列:['date', 'open', 'high', 'low', 'close', 'volume', 'rsi_10_10_OKB/USDT_3m', 'rsi_20_20_OKB/USDT_3m', 'rsi_50_50_OKB/USDT_3m',
'rsi_10_10_OKB/USDT_5m', 'rsi_20_20_OKB/USDT_5m', 'rsi_50_50_OKB/USDT_5m', 'rsi_10_10_OKB/USDT_15m', 'rsi_20_20_OKB/USDT_15m', 'rsi_50_50_OKB/USDT_15m', 'rsi_10_10_OKB/USDT_1h',
'rsi_20_20_OKB/USDT_1h', 'rsi_50_50_OKB/USDT_1h', 'rsi_10_10_BTC/USDT_3m', 'rsi_20_20_BTC/USDT_3m', 'rsi_50_50_BTC/USDT_3m', 'rsi_10_10_BTC/USDT_5m', 'rsi_20_20_BTC/USDT_5m', 'rsi_50_50_BTC/USDT_5m',
'rsi_10_10_BTC/USDT_15m', 'rsi_20_20_BTC/USDT_15m', 'rsi_50_50_BTC/USDT_15m', 'rsi_10_10_BTC/USDT_1h', 'rsi_20_20_BTC/USDT_1h', 'rsi_50_50_BTC/USDT_1h', 'rsi_10_10_ETH/USDT_3m',
'rsi_20_20_ETH/USDT_3m', 'rsi_50_50_ETH/USDT_3m', 'rsi_10_10_ETH/USDT_5m', 'rsi_20_20_ETH/USDT_5m', 'rsi_50_50_ETH/USDT_5m', 'rsi_10_10_ETH/USDT_15m', 'rsi_20_20_ETH/USDT_15m',
'rsi_50_50_ETH/USDT_15m', 'rsi_10_10_ETH/USDT_1h', 'rsi_20_20_ETH/USDT_1h', 'rsi_50_50_ETH/USDT_1h', '&-s_close', '&-s_close_mean', '&-s_close_std', '&-roi_0', '&-roi_0_mean', '&-roi_0_std',
'&-roi_15', '&-roi_15_mean', '&-roi_15_std', '&-roi_30', '&-roi_30_mean', '&-roi_30_std', '&-roi_0_pred', '&-roi_0_pred_mean', '&-roi_0_pred_std', '&-stoploss_pred', '&-stoploss_pred_mean',
'&-stoploss_pred_std', 'do_predict', 'pred_upper', 'pred_lower']
2025-05-06 04:29:41,152 - OKXRegressionStrategy - DEBUG - populate_indicators 完成
2025-05-06 04:29:41,156 - OKXRegressionStrategy - DEBUG - ✅ 预测列已就绪:
2025-05-06 04:29:41,159 - OKXRegressionStrategy - DEBUG - &-s_close pred_upper pred_lower
0 0.0 NaN NaN
1 0.0 NaN NaN
2 0.0 NaN NaN
3 0.0 NaN NaN
4 0.0 NaN NaN
2025-05-06 04:29:41,170 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-01 00:00:00 up to 2025-04-15 00:00:00 (14 days).
2025-05-06 04:29:41,177 - OKXRegressionStrategy - DEBUG - 生成 67.0 个做多信号
2025-05-06 04:29:41,370 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-06_04-29-41.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 │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │
└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
ENTER TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ │ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
│ Backtesting from │ 2025-04-01 00:00:00 │
│ Backtesting to │ 2025-04-15 00:00:00 │
│ Trading Mode │ Spot │
│ Max open trades │ 1 │
│ │ │
│ Total/Daily Avg Trades │ 20 / 1.43 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 998.293 USDT │
│ Absolute profit │ -1.707 USDT │
│ Total profit % │ -0.17% │
│ CAGR % │ -4.36% │
│ Sortino │ -25.57 │
│ Sharpe │ -13.69 │
│ Calmar │ -114.78 │
│ SQN │ -2.19 │
│ Profit factor │ 0.32 │
│ Expectancy (Ratio) │ -0.09 (-0.41) │
│ Avg. daily profit % │ -0.01% │
│ Avg. stake amount │ 19.976 USDT │
│ Total trade volume │ 798.613 USDT │
│ │ │
│ Best Pair │ OKB/USDT -0.17% │
│ Worst Pair │ OKB/USDT -0.17% │
│ Best trade │ OKB/USDT 1.00% │
│ Worst trade │ OKB/USDT -2.36% │
│ Best day │ 0.147 USDT │
│ Worst day │ -0.949 USDT │
│ Days win/draw/lose │ 3 / 1 / 4 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Loser │ 0:12:00 │
│ Max Consecutive Wins / Loss │ 3 / 6 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 997.97 USDT │
│ Max balance │ 999.693 USDT │
│ Max % of account underwater │ 0.20% │
│ Absolute Drawdown (Account) │ 0.20% │
│ Absolute Drawdown │ 2.03 USDT │
│ Drawdown high │ -0.307 USDT │
│ Drawdown low │ -2.03 USDT │
│ Drawdown Start │ 2025-04-06 17:45:00 │
│ Drawdown End │ 2025-04-10 15:42:00 │
│ Market change │ 8.93% │
└─────────────────────────────┴─────────────────────┘
Backtested 2025-04-01 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 1
STRATEGY SUMMARY
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │ 2.03 USDT 0.20% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘
Creating freqtrade_old_freqtrade_run ...
Creating freqtrade_old_freqtrade_run ... done
2025-05-07 10:51:57,668 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-07 10:51:57,890 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-07 10:51:59,365 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_my_hyperopt.json ...
2025-05-07 10:51:59,367 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-07 10:51:59,368 - root - INFO - Logfile configured
2025-05-07 10:51:59,368 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-07 10:51:59,370 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-07 10:51:59,395 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Parameter --export detected: trades ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --freqai-backtest-live-models detected ...
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-07 10:51:59,399 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-07 10:51:59,405 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-07 10:51:59,405 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-07 10:51:59,406 - freqtrade - ERROR - Configuration error: Using timerange parameter is not supported with --freqai-backtest-live-models parameter.
Please make sure to review the documentation at https://www.freqtrade.io/en/stable.
1

View File

@ -1,338 +1,25 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-06 04:23:11,765 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-06 04:23:11,971 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-06 04:23:13,393 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-06 04:23:13,395 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-06 04:23:13,395 - root - INFO - Logfile configured
2025-05-06 04:23:13,396 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-06 04:23:13,431 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-06 04:23:13,433 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-06 04:23:13,434 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-06 04:23:13,441 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-06 04:23:13,441 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-06 04:23:13,441 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:13,444 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-06 04:23:13,444 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-06 04:23:13,450 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-06 04:23:13,455 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-06 04:23:16,284 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-06 04:23:16,338 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-06 04:23:16,338 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - FreqAI 模型路径:/freqtrade/user_data/models
2025-05-06 04:23:16,339 - OKXRegressionStrategy - WARNING - ⚠️ 模型文件未找到,请确认是否训练完成
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - 🔍 正在尝试从 /freqtrade/user_data/models 加载模型
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-06 04:23:16,341 - 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-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-06 04:23:16,344 - 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-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-06 04:23:16,349 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:16,352 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-06 04:23:16,357 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-06 04:23:16,358 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:16,358 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-06 04:23:16,442 - freqtrade.optimize.backtesting - INFO - Loading data from 2024-12-31 21:30:00 up to 2025-04-15 00:00:00 (104 days).
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-06 04:23:18,018 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-06 04:23:18,222 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT']
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-06 04:23:18,226 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-06 04:23:18,230 - OKXRegressionStrategy - DEBUG - FreqAI 对象:<class 'XGBoostRegressor.XGBoostRegressor'>
2025-05-06 04:23:18,232 - freqtrade.freqai.freqai_interface - INFO - Training 2 timeranges
2025-05-06 04:23:18,234 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-01 00:00:00 to 2025-04-01 00:00:00, 1/2 trains
2025-05-06 04:23:18,234 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743465600_prediction.feather
2025-05-06 04:23:18,258 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:18,280 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:18,302 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:18,393 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:18,394 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,431 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,437 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,445 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,547 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,552 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,557 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,644 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,648 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,652 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:19,041 - OKXRegressionStrategy - DEBUG - 全局特征:['%-%-macd-10_10_OKB/USDT_3m', '%-%-macdsignal-10_10_OKB/USDT_3m', '%-%-bb_width-10_10_OKB/USDT_3m',
'%-%-volume_ma-10_10_OKB/USDT_3m', '%-%-macd-20_20_OKB/USDT_3m', '%-%-macdsignal-20_20_OKB/USDT_3m', '%-%-bb_width-20_20_OKB/USDT_3m', '%-%-volume_ma-20_20_OKB/USDT_3m', '%-%-macd-50_50_OKB/USDT_3m',
'%-%-macdsignal-50_50_OKB/USDT_3m', '%-%-bb_width-50_50_OKB/USDT_3m', '%-%-volume_ma-50_50_OKB/USDT_3m', '%-%-macd-10_10_shift-1_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_3m', '%-%-macd-20_20_shift-1_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_3m', '%-%-macd-50_50_shift-1_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_3m', '%-%-macd-10_10_shift-2_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_3m', '%-%-macd-20_20_shift-2_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_3m', '%-%-macd-50_50_shift-2_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_3m', '%-%-macd-10_10_shift-3_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_3m', '%-%-macd-20_20_shift-3_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_3m', '%-%-macd-50_50_shift-3_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_3m', '%-%-macd-10_10_OKB/USDT_5m', '%-%-macdsignal-10_10_OKB/USDT_5m', '%-%-bb_width-10_10_OKB/USDT_5m',
'%-%-volume_ma-10_10_OKB/USDT_5m', '%-%-macd-20_20_OKB/USDT_5m', '%-%-macdsignal-20_20_OKB/USDT_5m', '%-%-bb_width-20_20_OKB/USDT_5m', '%-%-volume_ma-20_20_OKB/USDT_5m', '%-%-macd-50_50_OKB/USDT_5m',
'%-%-macdsignal-50_50_OKB/USDT_5m', '%-%-bb_width-50_50_OKB/USDT_5m', '%-%-volume_ma-50_50_OKB/USDT_5m', '%-%-macd-10_10_shift-1_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_5m', '%-%-macd-20_20_shift-1_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_5m', '%-%-macd-50_50_shift-1_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_5m', '%-%-macd-10_10_shift-2_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_5m', '%-%-macd-20_20_shift-2_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_5m', '%-%-macd-50_50_shift-2_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_5m', '%-%-macd-10_10_shift-3_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_5m', '%-%-macd-20_20_shift-3_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_5m', '%-%-macd-50_50_shift-3_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_5m', '%-%-macd-10_10_OKB/USDT_15m', '%-%-macdsignal-10_10_OKB/USDT_15m', '%-%-bb_width-10_10_OKB/USDT_15m',
'%-%-volume_ma-10_10_OKB/USDT_15m', '%-%-macd-20_20_OKB/USDT_15m', '%-%-macdsignal-20_20_OKB/USDT_15m', '%-%-bb_width-20_20_OKB/USDT_15m', '%-%-volume_ma-20_20_OKB/USDT_15m',
'%-%-macd-50_50_OKB/USDT_15m', '%-%-macdsignal-50_50_OKB/USDT_15m', '%-%-bb_width-50_50_OKB/USDT_15m', '%-%-volume_ma-50_50_OKB/USDT_15m', '%-%-macd-10_10_shift-1_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-1_OKB/USDT_15m', '%-%-bb_width-10_10_shift-1_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_15m', '%-%-macd-20_20_shift-1_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-1_OKB/USDT_15m', '%-%-bb_width-20_20_shift-1_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_15m', '%-%-macd-50_50_shift-1_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-1_OKB/USDT_15m', '%-%-bb_width-50_50_shift-1_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_15m', '%-%-macd-10_10_shift-2_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-2_OKB/USDT_15m', '%-%-bb_width-10_10_shift-2_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_15m', '%-%-macd-20_20_shift-2_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-2_OKB/USDT_15m', '%-%-bb_width-20_20_shift-2_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_15m', '%-%-macd-50_50_shift-2_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-2_OKB/USDT_15m', '%-%-bb_width-50_50_shift-2_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_15m', '%-%-macd-10_10_shift-3_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-3_OKB/USDT_15m', '%-%-bb_width-10_10_shift-3_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_15m', '%-%-macd-20_20_shift-3_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-3_OKB/USDT_15m', '%-%-bb_width-20_20_shift-3_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_15m', '%-%-macd-50_50_shift-3_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-3_OKB/USDT_15m', '%-%-bb_width-50_50_shift-3_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_15m', '%-%-macd-10_10_OKB/USDT_1h', '%-%-macdsignal-10_10_OKB/USDT_1h',
'%-%-bb_width-10_10_OKB/USDT_1h', '%-%-volume_ma-10_10_OKB/USDT_1h', '%-%-macd-20_20_OKB/USDT_1h', '%-%-macdsignal-20_20_OKB/USDT_1h', '%-%-bb_width-20_20_OKB/USDT_1h',
'%-%-volume_ma-20_20_OKB/USDT_1h', '%-%-macd-50_50_OKB/USDT_1h', '%-%-macdsignal-50_50_OKB/USDT_1h', '%-%-bb_width-50_50_OKB/USDT_1h', '%-%-volume_ma-50_50_OKB/USDT_1h',
'%-%-macd-10_10_shift-1_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-1_OKB/USDT_1h', '%-%-bb_width-10_10_shift-1_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-1_OKB/USDT_1h',
'%-%-macd-20_20_shift-1_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-1_OKB/USDT_1h', '%-%-bb_width-20_20_shift-1_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-1_OKB/USDT_1h',
'%-%-macd-50_50_shift-1_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-1_OKB/USDT_1h', '%-%-bb_width-50_50_shift-1_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-1_OKB/USDT_1h',
'%-%-macd-10_10_shift-2_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-2_OKB/USDT_1h', '%-%-bb_width-10_10_shift-2_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-2_OKB/USDT_1h',
'%-%-macd-20_20_shift-2_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-2_OKB/USDT_1h', '%-%-bb_width-20_20_shift-2_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-2_OKB/USDT_1h',
'%-%-macd-50_50_shift-2_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-2_OKB/USDT_1h', '%-%-bb_width-50_50_shift-2_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-2_OKB/USDT_1h',
'%-%-macd-10_10_shift-3_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-3_OKB/USDT_1h', '%-%-bb_width-10_10_shift-3_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-3_OKB/USDT_1h',
'%-%-macd-20_20_shift-3_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-3_OKB/USDT_1h', '%-%-bb_width-20_20_shift-3_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-3_OKB/USDT_1h',
'%-%-macd-50_50_shift-3_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-3_OKB/USDT_1h', '%-%-bb_width-50_50_shift-3_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-3_OKB/USDT_1h']
2025-05-06 04:23:19,092 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:19,093 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,161 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:19,177 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:19,194 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,359 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,365 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,373 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,546 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:19,547 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,568 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,572 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,577 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,734 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:19,735 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,752 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,756 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,760 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,082 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:20,097 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:20,115 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:20,296 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:20,297 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,333 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,339 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,345 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,583 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:20,584 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,605 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,609 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,614 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,859 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:20,860 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,877 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,881 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,885 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:35,159 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600
2025-05-06 04:23:35,160 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:23:35,505 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 51 training points due to NaNs in populated dataset 43200.
2025-05-06 04:23:35,505 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-01 to 2025-03-31 --------------------
2025-05-06 04:23:35,677 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34519 data points
[99] validation_0-rmse:0.29984 validation_1-rmse:0.18813
[199] validation_0-rmse:0.30154 validation_1-rmse:0.14371
2025-05-06 04:26:29,861 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (174.70 secs) --------------------
2025-05-06 04:26:30,080 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600--s_close.html
2025-05-06 04:26:30,080 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:26:30,214 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:26:30,227 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-11 00:00:00 to 2025-04-11 00:00:00, 2/2 trains
2025-05-06 04:26:30,228 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1744329600_prediction.feather
2025-05-06 04:26:45,365 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600
2025-05-06 04:26:45,365 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:26:45,664 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 12 training points due to NaNs in populated dataset 43200.
2025-05-06 04:26:45,665 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-11 to 2025-04-10 --------------------
2025-05-06 04:26:45,833 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:26:45,973 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:26:45,974 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34550 data points
[99] validation_0-rmse:0.30462 validation_1-rmse:0.17903
[199] validation_0-rmse:0.30706 validation_1-rmse:0.13800
2025-05-06 04:29:40,827 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (175.46 secs) --------------------
2025-05-06 04:29:40,863 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600--s_close.html
2025-05-06 04:29:40,863 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:29:40,955 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:29:41,148 - OKXRegressionStrategy - WARNING - ⚠️ 缺失目标列:['&-buy_rsi_pred'],尝试重新生成
2025-05-06 04:29:41,149 - OKXRegressionStrategy - WARNING - ⚠️ 缺失预测列:['pred_upper', 'pred_lower'],尝试回退默认值
2025-05-06 04:29:41,150 - OKXRegressionStrategy - DEBUG - 预测统计:均值=0.0000, 方差=0.0000
2025-05-06 04:29:41,151 - OKXRegressionStrategy - WARNING - ⚠️ pred_upper 列全为 NaN可能模型未加载成功
2025-05-06 04:29:41,151 - OKXRegressionStrategy - DEBUG - 生成的列:['date', 'open', 'high', 'low', 'close', 'volume', 'rsi_10_10_OKB/USDT_3m', 'rsi_20_20_OKB/USDT_3m', 'rsi_50_50_OKB/USDT_3m',
'rsi_10_10_OKB/USDT_5m', 'rsi_20_20_OKB/USDT_5m', 'rsi_50_50_OKB/USDT_5m', 'rsi_10_10_OKB/USDT_15m', 'rsi_20_20_OKB/USDT_15m', 'rsi_50_50_OKB/USDT_15m', 'rsi_10_10_OKB/USDT_1h',
'rsi_20_20_OKB/USDT_1h', 'rsi_50_50_OKB/USDT_1h', 'rsi_10_10_BTC/USDT_3m', 'rsi_20_20_BTC/USDT_3m', 'rsi_50_50_BTC/USDT_3m', 'rsi_10_10_BTC/USDT_5m', 'rsi_20_20_BTC/USDT_5m', 'rsi_50_50_BTC/USDT_5m',
'rsi_10_10_BTC/USDT_15m', 'rsi_20_20_BTC/USDT_15m', 'rsi_50_50_BTC/USDT_15m', 'rsi_10_10_BTC/USDT_1h', 'rsi_20_20_BTC/USDT_1h', 'rsi_50_50_BTC/USDT_1h', 'rsi_10_10_ETH/USDT_3m',
'rsi_20_20_ETH/USDT_3m', 'rsi_50_50_ETH/USDT_3m', 'rsi_10_10_ETH/USDT_5m', 'rsi_20_20_ETH/USDT_5m', 'rsi_50_50_ETH/USDT_5m', 'rsi_10_10_ETH/USDT_15m', 'rsi_20_20_ETH/USDT_15m',
'rsi_50_50_ETH/USDT_15m', 'rsi_10_10_ETH/USDT_1h', 'rsi_20_20_ETH/USDT_1h', 'rsi_50_50_ETH/USDT_1h', '&-s_close', '&-s_close_mean', '&-s_close_std', '&-roi_0', '&-roi_0_mean', '&-roi_0_std',
'&-roi_15', '&-roi_15_mean', '&-roi_15_std', '&-roi_30', '&-roi_30_mean', '&-roi_30_std', '&-roi_0_pred', '&-roi_0_pred_mean', '&-roi_0_pred_std', '&-stoploss_pred', '&-stoploss_pred_mean',
'&-stoploss_pred_std', 'do_predict', 'pred_upper', 'pred_lower']
2025-05-06 04:29:41,152 - OKXRegressionStrategy - DEBUG - populate_indicators 完成
2025-05-06 04:29:41,156 - OKXRegressionStrategy - DEBUG - ✅ 预测列已就绪:
2025-05-06 04:29:41,159 - OKXRegressionStrategy - DEBUG - &-s_close pred_upper pred_lower
0 0.0 NaN NaN
1 0.0 NaN NaN
2 0.0 NaN NaN
3 0.0 NaN NaN
4 0.0 NaN NaN
2025-05-06 04:29:41,170 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-01 00:00:00 up to 2025-04-15 00:00:00 (14 days).
2025-05-06 04:29:41,177 - OKXRegressionStrategy - DEBUG - 生成 67.0 个做多信号
2025-05-06 04:29:41,370 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-06_04-29-41.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 │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │
└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
ENTER TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ │ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
│ Backtesting from │ 2025-04-01 00:00:00 │
│ Backtesting to │ 2025-04-15 00:00:00 │
│ Trading Mode │ Spot │
│ Max open trades │ 1 │
│ │ │
│ Total/Daily Avg Trades │ 20 / 1.43 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 998.293 USDT │
│ Absolute profit │ -1.707 USDT │
│ Total profit % │ -0.17% │
│ CAGR % │ -4.36% │
│ Sortino │ -25.57 │
│ Sharpe │ -13.69 │
│ Calmar │ -114.78 │
│ SQN │ -2.19 │
│ Profit factor │ 0.32 │
│ Expectancy (Ratio) │ -0.09 (-0.41) │
│ Avg. daily profit % │ -0.01% │
│ Avg. stake amount │ 19.976 USDT │
│ Total trade volume │ 798.613 USDT │
│ │ │
│ Best Pair │ OKB/USDT -0.17% │
│ Worst Pair │ OKB/USDT -0.17% │
│ Best trade │ OKB/USDT 1.00% │
│ Worst trade │ OKB/USDT -2.36% │
│ Best day │ 0.147 USDT │
│ Worst day │ -0.949 USDT │
│ Days win/draw/lose │ 3 / 1 / 4 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Loser │ 0:12:00 │
│ Max Consecutive Wins / Loss │ 3 / 6 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 997.97 USDT │
│ Max balance │ 999.693 USDT │
│ Max % of account underwater │ 0.20% │
│ Absolute Drawdown (Account) │ 0.20% │
│ Absolute Drawdown │ 2.03 USDT │
│ Drawdown high │ -0.307 USDT │
│ Drawdown low │ -2.03 USDT │
│ Drawdown Start │ 2025-04-06 17:45:00 │
│ Drawdown End │ 2025-04-10 15:42:00 │
│ Market change │ 8.93% │
└─────────────────────────────┴─────────────────────┘
Backtested 2025-04-01 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 1
STRATEGY SUMMARY
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │ 2.03 USDT 0.20% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘
Creating freqtrade_old_freqtrade_run ...
Creating freqtrade_old_freqtrade_run ... done
2025-05-07 10:51:57,668 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-07 10:51:57,890 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-07 10:51:59,365 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_my_hyperopt.json ...
2025-05-07 10:51:59,367 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-07 10:51:59,368 - root - INFO - Logfile configured
2025-05-07 10:51:59,368 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-07 10:51:59,370 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-07 10:51:59,395 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Parameter --export detected: trades ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --freqai-backtest-live-models detected ...
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-07 10:51:59,399 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-07 10:51:59,405 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-07 10:51:59,405 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-07 10:51:59,406 - freqtrade - ERROR - Configuration error: Using timerange parameter is not supported with --freqai-backtest-live-models parameter.
Please make sure to review the documentation at https://www.freqtrade.io/en/stable.
1

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"OKXRegressionStrategy":{"run_id":"cf1ed9733307582cc3881ffdddf1e9a8578b7e29","backtest_start_time":1746505396,"timeframe":"3m","timeframe_detail":null,"backtest_start_ts":1743465600,"backtest_end_ts":1744675200}}

View File

@ -1,709 +0,0 @@
import logging
from freqtrade.strategy import IStrategy
from pandas import DataFrame
import pandas as pd
import numpy as np
import talib as ta
import datetime
from typing import Dict, List, Optional
from sklearn.metrics import mean_squared_error
from freqtrade.strategy import CategoricalParameter, DecimalParameter
from xgboost import XGBRegressor
import ccxt
logger = logging.getLogger(__name__)
class OKXRegressionStrategy(IStrategy):
"""
Freqtrade AI 策略使用回归模型进行 OKX 数据上的仅做多交易
- 数据通过 CCXT OKX 交易所获取
- 使用 XGBoost 回归模型预测价格变化
- 仅生成做多买入信号不做空
- 适配 Freqtrade 2025.3继承 IStrategy
"""
# 指标所需的最大启动蜡烛数
startup_candle_count: int = 20
# 策略元数据(建议通过 config.json 配置)
trailing_stop = True
trailing_stop_positive = 0.01
max_open_trades = 3
stake_amount = 'dynamic'
atr_period = CategoricalParameter([7, 14, 21], default=14, space='buy')
atr_multiplier = DecimalParameter(1.0, 3.0, default=2.0, space='sell')
# FreqAI 配置
freqai_config = {
"enabled": True,
"identifier": "okx_regression_v1",
"model_training_parameters": {
"n_estimators": 100,
"learning_rate": 0.05,
"max_depth": 6
},
"feature_parameters": {
"include_timeframes": ["5m", "15m", "1h"],
"include_corr_pairlist": ["BTC/USDT", "ETH/USDT"],
"label_period_candles": 12,
"include_shifted_candles": 2, # 添加历史偏移特征
"principal_component_analysis": True # 启用 PCA
},
"data_split_parameters": {
"test_size": 0.2,
"random_state": 42,
"shuffle": False
},
"train_period_days": 90,
"backtest_period_days": 30,
"purge_old_models": True # 清理旧模型
}
def __init__(self, config: Dict):
super().__init__(config)
# 初始化特征缓存
self.feature_cache = {}
# 设置日志级别
logger.setLevel(logging.DEBUG)
# 输出模型路径用于调试
freqai_model_path = self.config.get("freqai", {}).get("model_path", "/freqtrade/user_data/models")
logger.info(f"FreqAI 模型路径:{freqai_model_path}")
# 新增模型加载状态日志
model_identifier = self.freqai_config.get("identifier", "default")
model_file = f"{freqai_model_path}/{model_identifier}/cb_okb_*.pkl"
import os
if any(os.path.exists(f.replace('*', '1743465600')) for f in [model_file]):
logger.info("✅ 模型文件存在,准备加载")
else:
logger.warning("⚠️ 模型文件未找到,请确认是否训练完成")
logger.info(f"🔍 正在尝试从 {freqai_model_path} 加载模型")
def feature_engineering_expand_all(self, dataframe: DataFrame, period: int, metadata: Dict, **kwargs) -> DataFrame:
"""
为每个时间框架和相关交易对生成特征
"""
cache_key = f"{metadata.get('pair', 'unknown')}_{period}"
if cache_key in self.feature_cache:
logger.debug(f"使用缓存特征:{cache_key}")
return self.feature_cache[cache_key].copy()
# RSI
dataframe[f"rsi_{period}"] = ta.RSI(dataframe["close"], timeperiod=period)
# MACD
macd, macdsignal, _ = ta.MACD(dataframe["close"], fastperiod=12, slowperiod=26, signalperiod=9)
dataframe[f"%-%-macd-{period}"] = macd
dataframe[f"%-%-macdsignal-{period}"] = macdsignal
# 布林带宽度
upper, middle, lower = ta.BBANDS(dataframe["close"], timeperiod=period)
dataframe[f"%-%-bb_width-{period}"] = (upper - lower) / middle
# 成交量均线
dataframe[f"%-%-volume_ma-{period}"] = ta.SMA(dataframe["volume"], timeperiod=period)
# 仅为 BTC/USDT 和 ETH/USDT 生成 order_book_imbalance
#
pair = metadata.get('pair', 'unknown')
# 注释掉订单簿相关代码
# if pair in ["BTC/USDT", "ETH/USDT"]:
# try:
# order_book = self.fetch_okx_order_book(pair)
# dataframe[f"%-%-order_book_imbalance"] = (
# order_book["bids"] - order_book["asks"]
# ) / (order_book["bids"] + order_book["asks"] + 1e-10)
# except Exception as e:
# logger.warning(f"Failed to fetch order book for {pair}: {str(e)}")
# dataframe[f"%-%-order_book_imbalance"] = 0.0
# 数据清洗
dataframe = dataframe.replace([np.inf, -np.inf], np.nan)
dataframe = dataframe.ffill().fillna(0)
# 缓存特征副本,避免引用污染
self.feature_cache[cache_key] = dataframe.copy()
logger.debug(f"周期 {period} 特征:{list(dataframe.filter(like='%-%-').columns)}")
return dataframe
def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
添加基础时间框架的全局特征
"""
# 确保索引是 DatetimeIndex
if not isinstance(dataframe.index, pd.DatetimeIndex):
dataframe = dataframe.set_index(pd.DatetimeIndex(dataframe.index))
# 价格变化率
dataframe["%-price_change"] = dataframe["close"].pct_change()
# 时间特征:小时
dataframe["%-hour_of_day"] = dataframe.index.hour / 24.0
# 数据清洗
dataframe = dataframe.replace([np.inf, -np.inf], np.nan)
dataframe = dataframe.ffill().fillna(0)
logger.debug(f"全局特征:{list(dataframe.filter(like='%-%-').columns)}")
return dataframe
def set_freqai_targets(self, dataframe: DataFrame, metadata: Dict, **kwargs) -> DataFrame:
"""
设置回归模型的目标变量为不同币对设置动态止损和ROI阈值
输入dataframeK线数据close, high, lowmetadata交易对信息configFreqAI配置
输出更新后的dataframe包含目标标签
"""
# 等待模型加载完成
import time
while not hasattr(self, "freqai") or self.freqai is None:
time.sleep(1)
# 获取配置参数
label_period = self.freqai_config["feature_parameters"]["label_period_candles"] # 标签预测周期如5分钟K线的N根
pair = metadata["pair"] # 当前交易对如DOGE/USDT
# 计算未来价格变化率(现有逻辑)
dataframe["&-s_close"] = (dataframe["close"].shift(-label_period) - dataframe["close"]) / dataframe["close"]
# 计算不同时间窗口的ROI现有逻辑
for minutes in [0, 15, 30]:
candles = int(minutes / 5) # 假设5分钟K线
if candles > 0:
dataframe[f"&-roi_{minutes}"] = (dataframe["close"].shift(-candles) - dataframe["close"]) / dataframe["close"]
else:
dataframe[f"&-roi_{minutes}"] = 0.0
# 计算市场状态指标ADX14周期与label_period_candles对齐
dataframe["adx"] = ta.ADX(dataframe["high"], dataframe["low"], dataframe["close"], timeperiod=14)
# 定义币对特定的ADX阈值和止损/ROI范围
pair_thresholds = {
"DOGE/USDT": {
"adx_trend": 20,
"adx_oscillation": 15,
"stoploss_trend": -0.08,
"stoploss_oscillation": -0.04,
"stoploss_mid": -0.06,
"roi_trend": 0.06,
"roi_oscillation": 0.025,
"roi_mid": 0.04
},
"BTC/USDT": {
"adx_trend": 25,
"adx_oscillation": 20,
"stoploss_trend": -0.03,
"stoploss_oscillation": -0.015,
"stoploss_mid": -0.02,
"roi_trend": 0.03,
"roi_oscillation": 0.015,
"roi_mid": 0.02
},
"SOL/USDT": {
"adx_trend": 22,
"adx_oscillation": 18,
"stoploss_trend": -0.06,
"stoploss_oscillation": -0.03,
"stoploss_mid": -0.045,
"roi_trend": 0.045,
"roi_oscillation": 0.02,
"roi_mid": 0.03
},
"XRP/USDT": {
"adx_trend": 22,
"adx_oscillation": 18,
"stoploss_trend": -0.06,
"stoploss_oscillation": -0.03,
"stoploss_mid": -0.045,
"roi_trend": 0.045,
"roi_oscillation": 0.02,
"roi_mid": 0.03
},
"OKB/USDT": {
"adx_trend": 18,
"adx_oscillation": 12,
"stoploss_trend": -0.10,
"stoploss_oscillation": -0.06,
"stoploss_mid": -0.08,
"roi_trend": 0.07,
"roi_oscillation": 0.04,
"roi_mid": 0.05
}
}
# 设置回归目标
label_period = self.freqai_config["feature_parameters"]["label_period_candles"]
dataframe["&-s_close"] = (dataframe["close"].shift(-label_period) - dataframe["close"]) / dataframe["close"]
# 设置动态 ROI 和止损阈值
dataframe["&-roi_0_pred"] = 0.03 # 默认值,防止空值
dataframe["&-stoploss_pred"] = -0.05
for index, row in dataframe.iterrows():
thresholds = pair_thresholds.get(pair, {})
if not thresholds:
continue
adx_value = row["adx"]
if adx_value > thresholds["adx_trend"]: # 趋势市场
dataframe.at[index, "&-stoploss_pred"] = thresholds["stoploss_trend"] # 宽松止损
elif adx_value < thresholds["adx_oscillation"]: # 震荡市场
dataframe.at[index, "&-stoploss_pred"] = thresholds["stoploss_oscillation"] # 严格止损
else:
# 中性市场:使用中间值
dataframe.at[index, "&-stoploss_pred"] = thresholds["stoploss_mid"]
for index, row in dataframe.iterrows():
thresholds = pair_thresholds.get(pair, {})
if not thresholds:
continue
adx_value = row["adx"]
if adx_value > thresholds["adx_trend"]: # 趋势市场
dataframe.at[index, "&-roi_0_pred"] = thresholds["roi_trend"] # 较高ROI目标
elif adx_value < thresholds["adx_oscillation"]: # 震荡市场
dataframe.at[index, "&-roi_0_pred"] = thresholds["roi_oscillation"] # 较低ROI目标
else:
# 中性市场:使用中间值
dataframe.at[index, "&-roi_0_pred"] = thresholds["roi_mid"]
return dataframe
def populate_indicators(self, dataframe: DataFrame, metadata: Dict) -> DataFrame:
"""
使用 FreqAI 生成指标和预测
"""
try:
logger.debug(f"FreqAI 对象:{type(self.freqai)}")
dataframe = self.freqai.start(dataframe, metadata, self)
# 强制刷新缓存,避免旧数据干扰
if hasattr(self, 'feature_cache'):
self.feature_cache.clear()
# 验证数据完整性
if dataframe["close"].isna().any() or dataframe["volume"].isna().any():
logger.warning("检测到 OKX 数据缺失,使用前向填充")
dataframe = dataframe.ffill().fillna(0)
# 检查所有目标列是否都存在
required_targets = ["&-s_close", "&-roi_0", "&-buy_rsi_pred", "&-stoploss_pred", "&-roi_0_pred"]
missing_targets = [col for col in required_targets if col not in dataframe.columns]
if missing_targets:
logger.warning(f"⚠️ 缺失目标列:{missing_targets},尝试重新生成")
# 检查预测列
required_preds = ['pred_upper', 'pred_lower']
missing_preds = [col for col in required_preds if col not in dataframe.columns]
if missing_preds:
logger.warning(f"⚠️ 缺失预测列:{missing_preds},尝试回退默认值")
for col in missing_preds:
dataframe[col] = np.nan
# 预测统计
if "&-s_close" in dataframe.columns:
logger.debug(f"预测统计:均值={dataframe['&-s_close'].mean():.4f}, 方差={dataframe['&-s_close'].var():.4f}")
if dataframe["pred_upper"].isna().all():
logger.warning("⚠️ pred_upper 列全为 NaN可能模型未加载成功")
logger.debug(f"生成的列:{list(dataframe.columns)}")
except Exception as e:
logger.error(f"FreqAI start 失败:{str(e)}")
raise
finally:
logger.debug("populate_indicators 完成")
# 确保返回 DataFrame防止 None
if dataframe is None:
dataframe = DataFrame()
# 添加 ATR 指标
dataframe['ATR_{}'.format(self.atr_period.value)] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=self.atr_period.value)
# 添加 RSI 和布林带指标
dataframe['rsi'] = ta.RSI(dataframe['close'], timeperiod=14)
upper, middle, lower = ta.BBANDS(dataframe['close'], timeperiod=20, nbdevup=2, nbdevdn=2)
dataframe['bb_upper'] = upper
dataframe['bb_middle'] = middle
dataframe['bb_lower'] = lower
# 添加高时间框架趋势1小时均线
dataframe_1h = None
if self.config['timeframe'] != '1h':
dataframe_1h = self.dp.get_analyzed_dataframe(metadata['pair'], '1h')[0]
if dataframe_1h is not None and not dataframe_1h.empty and 'close' in dataframe_1h.columns:
dataframe['trend_1h'] = dataframe_1h['close'].rolling(window=20).mean()
else:
dataframe['trend_1h'] = dataframe['close'].rolling(window=20).mean()
else:
dataframe['trend_1h'] = dataframe['close'].rolling(window=20).mean()
# 强制检查预测列是否存在,若不存在则填充 NaN 并记录警告
required_pred_cols = ['pred_upper', 'pred_lower', '&-s_close', '&-roi_0_pred']
missing_pred_cols = [col for col in required_pred_cols if col not in dataframe.columns]
if missing_pred_cols:
logger.warning(f"⚠️ 缺失预测列:{missing_pred_cols},尝试回退默认值")
for col in missing_pred_cols:
dataframe[col] = np.nan
else:
logger.debug("✅ 预测列已就绪:")
logger.debug(dataframe[['&-s_close', 'pred_upper', 'pred_lower']].head().to_string())
return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: Dict) -> DataFrame:
"""
基于模型预测和 RSI 生成做多信号
"""
# 确保必要列存在
required_cols = ['rsi', 'volume', '&-s_close', '&-roi_0_pred']
for col in required_cols:
if col not in dataframe.columns:
dataframe[col] = np.nan
# 只在预测值有效时生成信号
valid_prediction = (~dataframe['&-s_close'].isna()) & (dataframe['&-s_close'] > 0.005) & (dataframe['&-s_close'].abs() > 0.001)
# 结合 RSI 和模型预测生成信号
dataframe.loc[
(dataframe["rsi"] < 30) &
(dataframe["volume"] > 0) &
valid_prediction,
"enter_long"
] = 1
# 设置 entry_price 列,用于止损逻辑
dataframe['entry_price'] = dataframe['open'].where(dataframe['enter_long'] == 1).ffill()
logger.debug(f"生成 {dataframe['enter_long'].sum()} 个做多信号")
return dataframe
def _dynamic_stop_loss(self, dataframe: DataFrame, metadata: dict, atr_col: str = 'ATR_14', multiplier: float = 2.0) -> DataFrame:
"""
封装动态止损逻辑基于入场价和ATR计算止损线
:param dataframe: 原始DataFrame
:param metadata: 策略元数据
:param atr_col: 使用的ATR列名
:param multiplier: ATR乘数
:return: 更新后的DataFrame
"""
# 获取交易对信息
pair = metadata.get('pair', 'unknown')
# 设置默认的止损倍数
stop_loss_multiplier = 2.0
# 根据交易对调整止损倍数示例BTC/USDT 更稳定,止损倍数较低)
if pair == "BTC/USDT":
stop_loss_multiplier = 1.5
elif pair == "DOGE/USDT":
stop_loss_multiplier = 2.5
elif pair == "SOL/USDT":
stop_loss_multiplier = 2.0
elif pair == "XRP/USDT":
stop_loss_multiplier = 2.0
# 计算止损线
dataframe['entry_price'] = dataframe['open'].where(dataframe['enter_long'] == 1).ffill()
dataframe['stop_loss_line'] = dataframe['entry_price'] - dataframe[atr_col] * stop_loss_multiplier
# 应用止损逻辑OKB/USDT 使用更平滑的退出)
if metadata.get('pair') == 'OKB/USDT':
# 对 OKB 添加缓冲区,避免频繁触发
buffer_ratio = 0.005 # 0.5% 缓冲
buffered_stop_loss = dataframe['stop_loss_line'] * (1 - buffer_ratio)
dataframe.loc[
(dataframe['close'] < buffered_stop_loss),
'exit_long'
] = 1
else:
dataframe.loc[
(dataframe['close'] < dataframe['stop_loss_line']),
'exit_long'
] = 1
return dataframe
def _dynamic_take_profit(self, dataframe: DataFrame, metadata: dict, atr_col: str = 'ATR_14', multiplier: float = 2.0) -> DataFrame:
"""
封装动态止盈逻辑基于入场价ATR ADX 调整止盈线
:param dataframe: 原始DataFrame
:param metadata: 策略元数据
:param atr_col: 使用的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
elif pair == "DOGE/USDT":
take_profit_multiplier = 1.5
elif pair == "SOL/USDT":
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] * adjusted_multiplier
# 应用止盈逻辑
dataframe.loc[
(dataframe['close'] > dataframe['take_profit_line']),
'exit_long'
] = 1
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: Dict) -> DataFrame:
# 确保 ATR 列存在
if 'ATR_14' not in dataframe.columns:
dataframe['ATR_14'] = 0.0
# 应用动态止损和止盈逻辑
dataframe = self._dynamic_stop_loss(dataframe, metadata)
dataframe = self._dynamic_take_profit(dataframe, metadata)
return dataframe
def custom_stake_amount(self, pair: str, current_time: 'datetime', current_rate: float,
proposed_stake: float, min_stake: float, max_stake: float,
entry_tag: Optional[str], **kwargs) -> float:
"""
动态下注每笔交易占账户余额 2%
"""
balance = self.wallets.get_available_stake_amount()
stake = balance * 0.02
return min(max(stake, min_stake), max_stake)
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值
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_14'], # 使用更长周期 ATR 减少波动影响
"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,
proposed_leverage: float, max_leverage: float, side: str,
**kwargs) -> float:
"""
禁用杠杆仅做多
"""
return 1.0
def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float,
time_in_force: str, current_time: 'datetime', **kwargs) -> bool:
"""
验证交易进入检查 OKX 数据新鲜度
"""
if not self.check_data_freshness(pair, current_time):
logger.warning(f"{pair} 的 OKX 数据过期,跳过交易")
return False
return True
def check_data_freshness(self, pair: str, current_time: 'datetime') -> bool:
"""
简化版数据新鲜度检查不依赖外部 API
"""
# 假设数据总是新鲜的(用于测试)
return True
def fit(self, data_dictionary: Dict, metadata: Dict, **kwargs) -> None:
"""
训练回归模型并记录性能
"""
try:
# 初始化模型
if not hasattr(self, 'model') or self.model is None:
model_params = self.freqai_config["model_training_parameters"]
self.model = XGBRegressor(**model_params)
logger.debug("初始化新的 XGBoost 回归模型")
# 调用 FreqAI 训练
self.freqai.fit(data_dictionary, metadata, **kwargs)
# 记录训练集性能
train_data = data_dictionary["train_features"]
train_labels = data_dictionary["train_labels"]
train_predictions = self.model.predict(train_data)
train_mse = mean_squared_error(train_labels, train_predictions)
logger.info(f"训练集 MSE{train_mse:.6f}")
# 记录测试集性能(如果可用)
if "test_features" in data_dictionary:
test_data = data_dictionary["test_features"]
test_labels = data_dictionary["test_labels"]
test_predictions = self.model.predict(test_data)
test_mse = mean_squared_error(test_labels, test_predictions)
logger.info(f"测试集 MSE{test_mse:.6f}")
# 特征重要性
if hasattr(self.model, 'feature_importances_'):
importance = self.model.feature_importances_
logger.debug(f"特征重要性:{dict(zip(train_data.columns, importance))}")
except Exception as e:
logger.error(f"FreqAI fit 失败:{str(e)}")
raise
raise RuntimeError("模型训练失败,请检查数据完整性或重新训练模型")
def _callback_stop_loss(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
动态回调止损逻辑基于ATR调整回撤阈值并结合RSI和布林带过滤信号
"""
pair = metadata.get('pair', 'unknown')
# 设置默认参数
atr_col = 'ATR_14'
rolling_high_period = 20
rsi_overbought = 70
# 设置不同币种的回调乘数
callback_multipliers = {
"BTC/USDT": 1.5,
"ETH/USDT": 2.0,
"OKB/USDT": 1.3,
"TON/USDT": 2.0,
}
callback_multiplier = callback_multipliers.get(pair, 2.0)
# 确保ATR列存在
if atr_col not in dataframe.columns:
dataframe[atr_col] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=14)
# 计算动态回调百分比基于ATR
dataframe['callback_threshold'] = dataframe[atr_col] * callback_multiplier
# 计算ATR
if 'ATR_14' not in dataframe.columns:
dataframe['ATR_14'] = ta.ATR(dataframe['high'], dataframe['low'], dataframe['close'], timeperiod=14)
# 计算最近高点
dataframe['rolling_high'] = dataframe['close'].rolling(window=20).max()
# 计算回调阈值
dataframe['take_profit_line'] = dataframe['entry_price'] + dataframe['ATR_14'] * callback_multiplier
# 应用止盈逻辑
dataframe.loc[
(dataframe['close'] > dataframe['take_profit_line']),
'exit_long'
] = 1
# 计算当前价格相对于最近高点的回撤比例使用ATR标准化
dataframe['callback_ratio'] = (dataframe['close'] - dataframe['rolling_high']) / dataframe['rolling_high']
dataframe['callback_condition_atr'] = (dataframe['close'] - dataframe['rolling_high']) <= -dataframe['callback_threshold']
# 获取RSI和布林带信息
dataframe['in_overbought'] = dataframe['rsi'] > rsi_overbought
dataframe['below_bb_upper'] = dataframe['close'] < dataframe['bb_upper']
# 获取高时间框架趋势1小时均线
dataframe['trend_up'] = dataframe['close'] > dataframe['trend_1h']
dataframe['trend_down'] = dataframe['close'] < dataframe['trend_1h']
# 综合回调止损条件
callback_condition = (
dataframe['callback_condition_atr'] &
((dataframe['in_overbought'] | (~dataframe['below_bb_upper']))) &
dataframe['trend_down']
)
# 应用回调止损逻辑
dataframe.loc[callback_condition, 'exit_long'] = 1
return dataframe

View File

@ -1 +0,0 @@
{"$schema":"https://schema.freqtrade.io/schema.json","trading_mode":"spot","margin_mode":"isolated","max_open_trades":4,"stake_currency":"USDT","stake_amount":150,"startup_candle_count":30,"tradable_balance_ratio":1,"fiat_display_currency":"USD","dry_run":true,"timeframe":"3m","dry_run_wallet":1000,"cancel_open_orders_on_exit":true,"stoploss":-0.05,"unfilledtimeout":{"entry":5,"exit":15},"exchange":{"name":"okx","key":"REDACTED","secret":"REDACTED","enable_ws":false,"ccxt_config":{"enableRateLimit":true,"rateLimit":500,"options":{"defaultType":"spot"}},"ccxt_async_config":{"enableRateLimit":true,"rateLimit":500,"timeout":20000},"pair_whitelist":["OKB/USDT"],"pair_blacklist":[]},"entry_pricing":{"price_side":"same","use_order_book":true,"order_book_top":1,"price_last_balance":0.0,"check_depth_of_market":{"enabled":false,"bids_to_ask_delta":1}},"exit_pricing":{"price_side":"other","use_order_book":true,"order_book_top":1},"pairlists":[{"method":"StaticPairList"}],"freqai":{"enabled":true,"identifier":"test175","freqaimodel":"XGBoostRegressor","model_path":"/freqtrade/user_data/models","save_backtesting_prediction":true,"purge_old_models":true,"load_trained_model":true,"train_period_days":90,"backtest_period_days":10,"live_retrain_hours":0,"include_predictions_in_final_dataframe":true,"data_kitchen":{"fillna":"ffill","feature_parameters":{"DI_threshold":0.5,"weight_factor":0.9}},"feature_parameters":{"include_timeframes":["5m","15m","1h"],"include_corr_pairlist":["BTC/USDT","ETH/USDT"],"label_period_candles":12,"include_shifted_candles":3,"indicator_periods_candles":[10,20,50],"plot_feature_importances":1,"feature_selection":{"method":"none"}},"data_split_parameters":{"test_size":0.2,"shuffle":false,"random_state":42},"model_training_parameters":{"n_estimators":200,"learning_rate":0.05,"max_depth":6,"subsample":0.8,"colsample_bytree":0.8,"reg_alpha":0.1,"reg_lambda":1.0}},"api_server":{"enabled":true,"listen_ip_address":"0.0.0.0","listen_port":8080,"verbosity":"error","enable_openapi":false,"jwt_secret_key":"6a599ab046dbb419014807dffd7b8823bfa7e5df56b17d545485deb87331b4ca","ws_token":"6O5pBDiRigiZrmIsofaE2rkKMJtf9h8zVQ","CORS_origins":[],"username":"freqAdmin","password":"REDACTED"},"bot_name":"freqtrade","initial_state":"running","force_entry_enable":false,"internals":{"process_throttle_secs":5,"heartbeat_interval":20,"loglevel":"DEBUG"},"config_files":["/freqtrade/config_examples/config_freqai.okx.json"]}

View File

@ -1,338 +1,25 @@
Creating freqtrade_freqtrade_run ...
Creating freqtrade_freqtrade_run ... done
2025-05-06 04:23:11,765 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-06 04:23:11,971 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-06 04:23:13,393 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_freqai.okx.json ...
2025-05-06 04:23:13,395 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-06 04:23:13,395 - root - INFO - Logfile configured
2025-05-06 04:23:13,396 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-06 04:23:13,396 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-06 04:23:13,397 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-06 04:23:13,431 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-06 04:23:13,432 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-06 04:23:13,433 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-06 04:23:13,434 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-06 04:23:13,441 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-06 04:23:13,441 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-06 04:23:13,441 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:13,444 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
2025-05-06 04:23:13,444 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Using CCXT 4.4.77
2025-05-06 04:23:13,445 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}}
2025-05-06 04:23:13,450 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 500, 'options': {'defaultType': 'spot'}, 'timeout': 20000}
2025-05-06 04:23:13,455 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
2025-05-06 04:23:16,284 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Okx'...
2025-05-06 04:23:16,338 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy OKXRegressionStrategy from '/freqtrade/templates/OKXRegressionStrategy.py'...
2025-05-06 04:23:16,338 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - FreqAI 模型路径:/freqtrade/user_data/models
2025-05-06 04:23:16,339 - OKXRegressionStrategy - WARNING - ⚠️ 模型文件未找到,请确认是否训练完成
2025-05-06 04:23:16,339 - OKXRegressionStrategy - INFO - 🔍 正在尝试从 /freqtrade/user_data/models 加载模型
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 3m.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stoploss' with value in config file: -0.05.
2025-05-06 04:23:16,340 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: 150.
2025-05-06 04:23:16,341 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'startup_candle_count' with value in config file: 30.
2025-05-06 04:23:16,341 - 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-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'max_open_trades' with value in config file: 4.
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {}
2025-05-06 04:23:16,342 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 3m
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: True
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive: 0.01
2025-05-06 04:23:16,343 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False
2025-05-06 04:23:16,344 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True
2025-05-06 04:23:16,344 - 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-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2025-05-06 04:23:16,345 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 150
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 30
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 5, 'exit': 15, 'exit_timeout_count': 0, 'unit': 'minutes'}
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2025-05-06 04:23:16,346 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2025-05-06 04:23:16,347 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2025-05-06 04:23:16,348 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_open_trades: 4
2025-05-06 04:23:16,349 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2025-05-06 04:23:16,352 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/freqtrade/freqtrade/plugins/pairlist/StaticPairList.py'...
2025-05-06 04:23:16,357 - freqtrade.optimize.backtesting - INFO - Using fee 0.0800% from config.
2025-05-06 04:23:16,358 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:16,358 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 43250 ...
2025-05-06 04:23:16,442 - freqtrade.optimize.backtesting - INFO - Loading data from 2024-12-31 21:30:00 up to 2025-04-15 00:00:00 (104 days).
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Dataload complete. Calculating indicators
2025-05-06 04:23:16,443 - freqtrade.optimize.backtesting - INFO - Running backtesting for Strategy OKXRegressionStrategy
2025-05-06 04:23:18,018 - matplotlib.font_manager - INFO - generated new fontManager
2025-05-06 04:23:18,222 - freqtrade.resolvers.iresolver - INFO - Using resolved freqaimodel XGBoostRegressor from '/freqtrade/freqtrade/freqai/prediction_models/XGBoostRegressor.py'...
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing datadrawer, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.data_drawer - INFO - Could not find existing historic_predictions, starting from scratch
2025-05-06 04:23:18,223 - freqtrade.freqai.freqai_interface - INFO - Set fresh train queue from whitelist. Queue: ['OKB/USDT']
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - No params for buy found, using default values.
2025-05-06 04:23:18,224 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_period = 14
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - No params for sell found, using default values.
2025-05-06 04:23:18,225 - freqtrade.strategy.hyper - INFO - Strategy Parameter(default): atr_multiplier = 2.0
2025-05-06 04:23:18,226 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2025-05-06 04:23:18,230 - OKXRegressionStrategy - DEBUG - FreqAI 对象:<class 'XGBoostRegressor.XGBoostRegressor'>
2025-05-06 04:23:18,232 - freqtrade.freqai.freqai_interface - INFO - Training 2 timeranges
2025-05-06 04:23:18,234 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-01 00:00:00 to 2025-04-01 00:00:00, 1/2 trains
2025-05-06 04:23:18,234 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1743465600_prediction.feather
2025-05-06 04:23:18,258 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:18,280 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:18,302 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:18,393 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:18,394 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,431 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,437 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,445 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:18,526 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,547 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,552 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,557 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:18,628 - freqtrade.data.dataprovider - INFO - Loading data for OKB/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:18,644 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_10
2025-05-06 04:23:18,648 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_20
2025-05-06 04:23:18,652 - OKXRegressionStrategy - DEBUG - 使用缓存特征OKB/USDT_50
2025-05-06 04:23:19,041 - OKXRegressionStrategy - DEBUG - 全局特征:['%-%-macd-10_10_OKB/USDT_3m', '%-%-macdsignal-10_10_OKB/USDT_3m', '%-%-bb_width-10_10_OKB/USDT_3m',
'%-%-volume_ma-10_10_OKB/USDT_3m', '%-%-macd-20_20_OKB/USDT_3m', '%-%-macdsignal-20_20_OKB/USDT_3m', '%-%-bb_width-20_20_OKB/USDT_3m', '%-%-volume_ma-20_20_OKB/USDT_3m', '%-%-macd-50_50_OKB/USDT_3m',
'%-%-macdsignal-50_50_OKB/USDT_3m', '%-%-bb_width-50_50_OKB/USDT_3m', '%-%-volume_ma-50_50_OKB/USDT_3m', '%-%-macd-10_10_shift-1_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_3m', '%-%-macd-20_20_shift-1_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_3m', '%-%-macd-50_50_shift-1_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_3m', '%-%-macd-10_10_shift-2_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_3m', '%-%-macd-20_20_shift-2_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_3m', '%-%-macd-50_50_shift-2_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_3m', '%-%-macd-10_10_shift-3_OKB/USDT_3m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_3m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_3m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_3m', '%-%-macd-20_20_shift-3_OKB/USDT_3m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_3m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_3m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_3m', '%-%-macd-50_50_shift-3_OKB/USDT_3m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_3m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_3m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_3m', '%-%-macd-10_10_OKB/USDT_5m', '%-%-macdsignal-10_10_OKB/USDT_5m', '%-%-bb_width-10_10_OKB/USDT_5m',
'%-%-volume_ma-10_10_OKB/USDT_5m', '%-%-macd-20_20_OKB/USDT_5m', '%-%-macdsignal-20_20_OKB/USDT_5m', '%-%-bb_width-20_20_OKB/USDT_5m', '%-%-volume_ma-20_20_OKB/USDT_5m', '%-%-macd-50_50_OKB/USDT_5m',
'%-%-macdsignal-50_50_OKB/USDT_5m', '%-%-bb_width-50_50_OKB/USDT_5m', '%-%-volume_ma-50_50_OKB/USDT_5m', '%-%-macd-10_10_shift-1_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-1_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-1_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_5m', '%-%-macd-20_20_shift-1_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-1_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-1_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_5m', '%-%-macd-50_50_shift-1_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-1_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-1_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_5m', '%-%-macd-10_10_shift-2_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-2_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-2_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_5m', '%-%-macd-20_20_shift-2_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-2_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-2_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_5m', '%-%-macd-50_50_shift-2_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-2_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-2_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_5m', '%-%-macd-10_10_shift-3_OKB/USDT_5m', '%-%-macdsignal-10_10_shift-3_OKB/USDT_5m',
'%-%-bb_width-10_10_shift-3_OKB/USDT_5m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_5m', '%-%-macd-20_20_shift-3_OKB/USDT_5m', '%-%-macdsignal-20_20_shift-3_OKB/USDT_5m',
'%-%-bb_width-20_20_shift-3_OKB/USDT_5m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_5m', '%-%-macd-50_50_shift-3_OKB/USDT_5m', '%-%-macdsignal-50_50_shift-3_OKB/USDT_5m',
'%-%-bb_width-50_50_shift-3_OKB/USDT_5m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_5m', '%-%-macd-10_10_OKB/USDT_15m', '%-%-macdsignal-10_10_OKB/USDT_15m', '%-%-bb_width-10_10_OKB/USDT_15m',
'%-%-volume_ma-10_10_OKB/USDT_15m', '%-%-macd-20_20_OKB/USDT_15m', '%-%-macdsignal-20_20_OKB/USDT_15m', '%-%-bb_width-20_20_OKB/USDT_15m', '%-%-volume_ma-20_20_OKB/USDT_15m',
'%-%-macd-50_50_OKB/USDT_15m', '%-%-macdsignal-50_50_OKB/USDT_15m', '%-%-bb_width-50_50_OKB/USDT_15m', '%-%-volume_ma-50_50_OKB/USDT_15m', '%-%-macd-10_10_shift-1_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-1_OKB/USDT_15m', '%-%-bb_width-10_10_shift-1_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-1_OKB/USDT_15m', '%-%-macd-20_20_shift-1_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-1_OKB/USDT_15m', '%-%-bb_width-20_20_shift-1_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-1_OKB/USDT_15m', '%-%-macd-50_50_shift-1_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-1_OKB/USDT_15m', '%-%-bb_width-50_50_shift-1_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-1_OKB/USDT_15m', '%-%-macd-10_10_shift-2_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-2_OKB/USDT_15m', '%-%-bb_width-10_10_shift-2_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-2_OKB/USDT_15m', '%-%-macd-20_20_shift-2_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-2_OKB/USDT_15m', '%-%-bb_width-20_20_shift-2_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-2_OKB/USDT_15m', '%-%-macd-50_50_shift-2_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-2_OKB/USDT_15m', '%-%-bb_width-50_50_shift-2_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-2_OKB/USDT_15m', '%-%-macd-10_10_shift-3_OKB/USDT_15m',
'%-%-macdsignal-10_10_shift-3_OKB/USDT_15m', '%-%-bb_width-10_10_shift-3_OKB/USDT_15m', '%-%-volume_ma-10_10_shift-3_OKB/USDT_15m', '%-%-macd-20_20_shift-3_OKB/USDT_15m',
'%-%-macdsignal-20_20_shift-3_OKB/USDT_15m', '%-%-bb_width-20_20_shift-3_OKB/USDT_15m', '%-%-volume_ma-20_20_shift-3_OKB/USDT_15m', '%-%-macd-50_50_shift-3_OKB/USDT_15m',
'%-%-macdsignal-50_50_shift-3_OKB/USDT_15m', '%-%-bb_width-50_50_shift-3_OKB/USDT_15m', '%-%-volume_ma-50_50_shift-3_OKB/USDT_15m', '%-%-macd-10_10_OKB/USDT_1h', '%-%-macdsignal-10_10_OKB/USDT_1h',
'%-%-bb_width-10_10_OKB/USDT_1h', '%-%-volume_ma-10_10_OKB/USDT_1h', '%-%-macd-20_20_OKB/USDT_1h', '%-%-macdsignal-20_20_OKB/USDT_1h', '%-%-bb_width-20_20_OKB/USDT_1h',
'%-%-volume_ma-20_20_OKB/USDT_1h', '%-%-macd-50_50_OKB/USDT_1h', '%-%-macdsignal-50_50_OKB/USDT_1h', '%-%-bb_width-50_50_OKB/USDT_1h', '%-%-volume_ma-50_50_OKB/USDT_1h',
'%-%-macd-10_10_shift-1_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-1_OKB/USDT_1h', '%-%-bb_width-10_10_shift-1_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-1_OKB/USDT_1h',
'%-%-macd-20_20_shift-1_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-1_OKB/USDT_1h', '%-%-bb_width-20_20_shift-1_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-1_OKB/USDT_1h',
'%-%-macd-50_50_shift-1_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-1_OKB/USDT_1h', '%-%-bb_width-50_50_shift-1_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-1_OKB/USDT_1h',
'%-%-macd-10_10_shift-2_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-2_OKB/USDT_1h', '%-%-bb_width-10_10_shift-2_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-2_OKB/USDT_1h',
'%-%-macd-20_20_shift-2_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-2_OKB/USDT_1h', '%-%-bb_width-20_20_shift-2_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-2_OKB/USDT_1h',
'%-%-macd-50_50_shift-2_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-2_OKB/USDT_1h', '%-%-bb_width-50_50_shift-2_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-2_OKB/USDT_1h',
'%-%-macd-10_10_shift-3_OKB/USDT_1h', '%-%-macdsignal-10_10_shift-3_OKB/USDT_1h', '%-%-bb_width-10_10_shift-3_OKB/USDT_1h', '%-%-volume_ma-10_10_shift-3_OKB/USDT_1h',
'%-%-macd-20_20_shift-3_OKB/USDT_1h', '%-%-macdsignal-20_20_shift-3_OKB/USDT_1h', '%-%-bb_width-20_20_shift-3_OKB/USDT_1h', '%-%-volume_ma-20_20_shift-3_OKB/USDT_1h',
'%-%-macd-50_50_shift-3_OKB/USDT_1h', '%-%-macdsignal-50_50_shift-3_OKB/USDT_1h', '%-%-bb_width-50_50_shift-3_OKB/USDT_1h', '%-%-volume_ma-50_50_shift-3_OKB/USDT_1h']
2025-05-06 04:23:19,092 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:19,093 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,161 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:19,177 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:19,194 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:19,320 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,359 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,365 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,373 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,546 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:19,547 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,568 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,572 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,577 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:19,734 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:19,735 - freqtrade.data.dataprovider - INFO - Loading data for BTC/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:19,752 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_10
2025-05-06 04:23:19,756 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_20
2025-05-06 04:23:19,760 - OKXRegressionStrategy - DEBUG - 使用缓存特征BTC/USDT_50
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 3m to 43250
2025-05-06 04:23:20,021 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 3m from 2024-12-31 21:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,082 - OKXRegressionStrategy - DEBUG - 周期 10 特征:['%-%-macd-10', '%-%-macdsignal-10', '%-%-bb_width-10', '%-%-volume_ma-10']
2025-05-06 04:23:20,097 - OKXRegressionStrategy - DEBUG - 周期 20 特征:['%-%-macd-20', '%-%-macdsignal-20', '%-%-bb_width-20', '%-%-volume_ma-20']
2025-05-06 04:23:20,115 - OKXRegressionStrategy - DEBUG - 周期 50 特征:['%-%-macd-50', '%-%-macdsignal-50', '%-%-bb_width-50', '%-%-volume_ma-50']
2025-05-06 04:23:20,296 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 5m to 25970
2025-05-06 04:23:20,297 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 5m from 2024-12-31 19:50:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,333 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,339 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,345 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,583 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 15m to 8690
2025-05-06 04:23:20,584 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 15m from 2024-12-31 11:30:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,605 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,609 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,614 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:20,859 - freqtrade.data.dataprovider - INFO - Increasing startup_candle_count for freqai on 1h to 2210
2025-05-06 04:23:20,860 - freqtrade.data.dataprovider - INFO - Loading data for ETH/USDT 1h from 2024-12-29 22:00:00 to 2025-04-15 00:00:00
2025-05-06 04:23:20,877 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_10
2025-05-06 04:23:20,881 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_20
2025-05-06 04:23:20,885 - OKXRegressionStrategy - DEBUG - 使用缓存特征ETH/USDT_50
2025-05-06 04:23:35,159 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600
2025-05-06 04:23:35,160 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:23:35,505 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 51 training points due to NaNs in populated dataset 43200.
2025-05-06 04:23:35,505 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-01 to 2025-03-31 --------------------
2025-05-06 04:23:35,677 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:23:35,817 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34519 data points
[99] validation_0-rmse:0.29984 validation_1-rmse:0.18813
[199] validation_0-rmse:0.30154 validation_1-rmse:0.14371
2025-05-06 04:26:29,861 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (174.70 secs) --------------------
2025-05-06 04:26:30,080 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1743465600/cb_okb_1743465600--s_close.html
2025-05-06 04:26:30,080 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:26:30,214 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:26:30,227 - freqtrade.freqai.freqai_interface - INFO - Training OKB/USDT, 1/1 pairs from 2025-01-11 00:00:00 to 2025-04-11 00:00:00, 2/2 trains
2025-05-06 04:26:30,228 - freqtrade.freqai.data_kitchen - INFO - Could not find backtesting prediction file at
/freqtrade/user_data/models/test175/backtesting_predictions/cb_okb_1744329600_prediction.feather
2025-05-06 04:26:45,365 - freqtrade.freqai.freqai_interface - INFO - Could not find model at /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600
2025-05-06 04:26:45,365 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Starting training OKB/USDT --------------------
2025-05-06 04:26:45,664 - freqtrade.freqai.data_kitchen - INFO - OKB/USDT: dropped 12 training points due to NaNs in populated dataset 43200.
2025-05-06 04:26:45,665 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Training on data from 2025-01-11 to 2025-04-10 --------------------
2025-05-06 04:26:45,833 - datasieve.pipeline - INFO - VarianceThreshold will remove 1 features from the dataset.on transform. ['%-hour_of_day']
2025-05-06 04:26:45,973 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 577 features
2025-05-06 04:26:45,974 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - Training model on 34550 data points
[99] validation_0-rmse:0.30462 validation_1-rmse:0.17903
[199] validation_0-rmse:0.30706 validation_1-rmse:0.13800
2025-05-06 04:29:40,827 - freqtrade.freqai.base_models.BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (175.46 secs) --------------------
2025-05-06 04:29:40,863 - freqtrade.plot.plotting - INFO - Stored plot as /freqtrade/user_data/models/test175/sub-train-OKB_1744329600/cb_okb_1744329600--s_close.html
2025-05-06 04:29:40,863 - freqtrade.freqai.freqai_interface - INFO - Saving metadata to disk.
2025-05-06 04:29:40,955 - datasieve.pipeline - WARNING - Could not find step di in pipeline, returning None
2025-05-06 04:29:41,148 - OKXRegressionStrategy - WARNING - ⚠️ 缺失目标列:['&-buy_rsi_pred'],尝试重新生成
2025-05-06 04:29:41,149 - OKXRegressionStrategy - WARNING - ⚠️ 缺失预测列:['pred_upper', 'pred_lower'],尝试回退默认值
2025-05-06 04:29:41,150 - OKXRegressionStrategy - DEBUG - 预测统计:均值=0.0000, 方差=0.0000
2025-05-06 04:29:41,151 - OKXRegressionStrategy - WARNING - ⚠️ pred_upper 列全为 NaN可能模型未加载成功
2025-05-06 04:29:41,151 - OKXRegressionStrategy - DEBUG - 生成的列:['date', 'open', 'high', 'low', 'close', 'volume', 'rsi_10_10_OKB/USDT_3m', 'rsi_20_20_OKB/USDT_3m', 'rsi_50_50_OKB/USDT_3m',
'rsi_10_10_OKB/USDT_5m', 'rsi_20_20_OKB/USDT_5m', 'rsi_50_50_OKB/USDT_5m', 'rsi_10_10_OKB/USDT_15m', 'rsi_20_20_OKB/USDT_15m', 'rsi_50_50_OKB/USDT_15m', 'rsi_10_10_OKB/USDT_1h',
'rsi_20_20_OKB/USDT_1h', 'rsi_50_50_OKB/USDT_1h', 'rsi_10_10_BTC/USDT_3m', 'rsi_20_20_BTC/USDT_3m', 'rsi_50_50_BTC/USDT_3m', 'rsi_10_10_BTC/USDT_5m', 'rsi_20_20_BTC/USDT_5m', 'rsi_50_50_BTC/USDT_5m',
'rsi_10_10_BTC/USDT_15m', 'rsi_20_20_BTC/USDT_15m', 'rsi_50_50_BTC/USDT_15m', 'rsi_10_10_BTC/USDT_1h', 'rsi_20_20_BTC/USDT_1h', 'rsi_50_50_BTC/USDT_1h', 'rsi_10_10_ETH/USDT_3m',
'rsi_20_20_ETH/USDT_3m', 'rsi_50_50_ETH/USDT_3m', 'rsi_10_10_ETH/USDT_5m', 'rsi_20_20_ETH/USDT_5m', 'rsi_50_50_ETH/USDT_5m', 'rsi_10_10_ETH/USDT_15m', 'rsi_20_20_ETH/USDT_15m',
'rsi_50_50_ETH/USDT_15m', 'rsi_10_10_ETH/USDT_1h', 'rsi_20_20_ETH/USDT_1h', 'rsi_50_50_ETH/USDT_1h', '&-s_close', '&-s_close_mean', '&-s_close_std', '&-roi_0', '&-roi_0_mean', '&-roi_0_std',
'&-roi_15', '&-roi_15_mean', '&-roi_15_std', '&-roi_30', '&-roi_30_mean', '&-roi_30_std', '&-roi_0_pred', '&-roi_0_pred_mean', '&-roi_0_pred_std', '&-stoploss_pred', '&-stoploss_pred_mean',
'&-stoploss_pred_std', 'do_predict', 'pred_upper', 'pred_lower']
2025-05-06 04:29:41,152 - OKXRegressionStrategy - DEBUG - populate_indicators 完成
2025-05-06 04:29:41,156 - OKXRegressionStrategy - DEBUG - ✅ 预测列已就绪:
2025-05-06 04:29:41,159 - OKXRegressionStrategy - DEBUG - &-s_close pred_upper pred_lower
0 0.0 NaN NaN
1 0.0 NaN NaN
2 0.0 NaN NaN
3 0.0 NaN NaN
4 0.0 NaN NaN
2025-05-06 04:29:41,170 - freqtrade.optimize.backtesting - INFO - Backtesting with data from 2025-04-01 00:00:00 up to 2025-04-15 00:00:00 (14 days).
2025-05-06 04:29:41,177 - OKXRegressionStrategy - DEBUG - 生成 67.0 个做多信号
2025-05-06 04:29:41,370 - freqtrade.misc - INFO - dumping json to "/freqtrade/user_data/backtest_results/backtest-result-2025-05-06_04-29-41.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 │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
LEFT OPEN TRADES REPORT
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │
└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
ENTER TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ OTHER │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
MIXED TAG STATS
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ exit_signal │ 10 │ -0.19 │ -0.390 │ -0.04 │ 0:32:00 │ 6 0 4 60.0 │
│ │ trailing_stop_loss │ 10 │ -0.66 │ -1.318 │ -0.13 │ 0:07:00 │ 2 0 8 20.0 │
│ TOTAL │ │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │
└───────────┴────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
SUMMARY METRICS
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
│ Backtesting from │ 2025-04-01 00:00:00 │
│ Backtesting to │ 2025-04-15 00:00:00 │
│ Trading Mode │ Spot │
│ Max open trades │ 1 │
│ │ │
│ Total/Daily Avg Trades │ 20 / 1.43 │
│ Starting balance │ 1000 USDT │
│ Final balance │ 998.293 USDT │
│ Absolute profit │ -1.707 USDT │
│ Total profit % │ -0.17% │
│ CAGR % │ -4.36% │
│ Sortino │ -25.57 │
│ Sharpe │ -13.69 │
│ Calmar │ -114.78 │
│ SQN │ -2.19 │
│ Profit factor │ 0.32 │
│ Expectancy (Ratio) │ -0.09 (-0.41) │
│ Avg. daily profit % │ -0.01% │
│ Avg. stake amount │ 19.976 USDT │
│ Total trade volume │ 798.613 USDT │
│ │ │
│ Best Pair │ OKB/USDT -0.17% │
│ Worst Pair │ OKB/USDT -0.17% │
│ Best trade │ OKB/USDT 1.00% │
│ Worst trade │ OKB/USDT -2.36% │
│ Best day │ 0.147 USDT │
│ Worst day │ -0.949 USDT │
│ Days win/draw/lose │ 3 / 1 / 4 │
│ Avg. Duration Winners │ 0:32:00 │
│ Avg. Duration Loser │ 0:12:00 │
│ Max Consecutive Wins / Loss │ 3 / 6 │
│ Rejected Entry signals │ 0 │
│ Entry/Exit Timeouts │ 0 / 0 │
│ │ │
│ Min balance │ 997.97 USDT │
│ Max balance │ 999.693 USDT │
│ Max % of account underwater │ 0.20% │
│ Absolute Drawdown (Account) │ 0.20% │
│ Absolute Drawdown │ 2.03 USDT │
│ Drawdown high │ -0.307 USDT │
│ Drawdown low │ -2.03 USDT │
│ Drawdown Start │ 2025-04-06 17:45:00 │
│ Drawdown End │ 2025-04-10 15:42:00 │
│ Market change │ 8.93% │
└─────────────────────────────┴─────────────────────┘
Backtested 2025-04-01 00:00:00 -> 2025-04-15 00:00:00 | Max open trades : 1
STRATEGY SUMMARY
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ OKXRegressionStrategy │ 20 │ -0.43 │ -1.707 │ -0.17 │ 0:20:00 │ 8 0 12 40.0 │ 2.03 USDT 0.20% │
└───────────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴──────────────────┘
Creating freqtrade_old_freqtrade_run ...
Creating freqtrade_old_freqtrade_run ... done
2025-05-07 10:51:57,668 - freqtrade - INFO - freqtrade docker-2025.4-dev-23e4943b
2025-05-07 10:51:57,890 - numexpr.utils - INFO - NumExpr defaulting to 12 threads.
2025-05-07 10:51:59,365 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/config_examples/config_my_hyperopt.json ...
2025-05-07 10:51:59,367 - freqtrade.loggers - INFO - Enabling colorized output.
2025-05-07 10:51:59,368 - root - INFO - Logfile configured
2025-05-07 10:51:59,368 - freqtrade.loggers - INFO - Verbosity set to 0
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /freqtrade/templates
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 4 ...
2025-05-07 10:51:59,369 - freqtrade.configuration.configuration - INFO - Parameter --fee detected, setting fee to: 0.0008 ...
2025-05-07 10:51:59,370 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20250401-20250415 ...
2025-05-07 10:51:59,395 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/okx ...
2025-05-07 10:51:59,396 - freqtrade.configuration.configuration - INFO - Parameter --export detected: trades ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --cache=none detected ...
2025-05-07 10:51:59,397 - freqtrade.configuration.configuration - INFO - Parameter --freqai-backtest-live-models detected ...
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20250401-20250415
2025-05-07 10:51:59,398 - freqtrade.configuration.configuration - INFO - Using freqaimodel class name: XGBoostRegressor
2025-05-07 10:51:59,399 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
2025-05-07 10:51:59,405 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
2025-05-07 10:51:59,405 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2025-05-07 10:51:59,406 - freqtrade - ERROR - Configuration error: Using timerange parameter is not supported with --freqai-backtest-live-models parameter.
Please make sure to review the documentation at https://www.freqtrade.io/en/stable.
1

View File

@ -1,80 +0,0 @@
{
"freqai": {
"enabled": true,
"identifier": "test175",
"freqaimodel": "XGBoostRegressor",
"model_path": "/freqtrade/user_data/models",
"save_backtesting_prediction": true,
"purge_old_models": true,
"load_trained_model": true,
"train_period_days": 90,
"backtest_period_days": 10,
"live_retrain_hours": 0,
"include_predictions_in_final_dataframe": true,
"data_kitchen": {
"fillna": "ffill",
"feature_parameters": {
"DI_threshold": 0.5,
"weight_factor": 0.9
}
},
"feature_parameters": {
"include_timeframes": [
"3m",
"5m",
"15m",
"1h"
],
"include_corr_pairlist": [
"BTC/USDT",
"ETH/USDT"
],
"label_period_candles": 12,
"include_shifted_candles": 3,
"indicator_periods_candles": [
10,
20,
50
],
"plot_feature_importances": 1,
"feature_selection": {
"method": "none"
},
"DI_threshold": 0,
"weight_factor": 0,
"principal_component_analysis": false,
"use_SVM_to_remove_outliers": false,
"shuffle_after_split": false,
"buffer_train_data_candles": 0
},
"data_split_parameters": {
"test_size": 0.2,
"shuffle": false,
"random_state": 42
},
"model_training_parameters": {
"n_estimators": 200,
"learning_rate": 0.05,
"max_depth": 6,
"subsample": 0.8,
"colsample_bytree": 0.8,
"reg_alpha": 0.1,
"reg_lambda": 1.0
},
"write_metrics_to_disk": false,
"conv_width": 1,
"expiration_hours": 0,
"save_backtest_models": false,
"activate_tensorboard": true,
"wait_for_training_iteration_on_reload": true,
"continual_learning": false,
"keras": false
},
"timeframe": "3m",
"stake_amount": 150,
"stake_currency": "USDT",
"max_open_trades": 4,
"pairs": [
"OKB/USDT"
]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,3 @@
user_data/models/test175/
├── backtesting_predictions
│   ├── cb_okb_1743465600_prediction.feather
│   └── cb_okb_1744329600_prediction.feather
├── run_params.json
├── sub-train-OKB_1743465600
│   ├── cb_okb_1743465600--s_close.html
│   ├── cb_okb_1743465600_metadata.json
│   └── tensorboard
│   └── events.out.tfevents.1746505415.249ec82ae279.1.0
└── sub-train-OKB_1744329600
├── cb_okb_1744329600--s_close.html
├── cb_okb_1744329600_metadata.json
└── tensorboard
└── events.out.tfevents.1746505605.249ec82ae279.1.1
user_data/models/test175/ [error opening dir]
6 directories, 9 files
0 directories, 0 files