2.6 KiB
2.6 KiB
根据提供的日志、策略代码和配置文件,我将从以下几个方面进行排查分析:
🔍 一、FreqAI 是否正常训练与预测
✅ 日志中的关键信息
- 模型初始化成功:
freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True - 特征工程完成:
OKXRegressionStrategy - DEBUG - 目标初始化完成。DataFrame 形状:(43250, 475) - 模型训练完成:
BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (219.77 secs) --------------------
📌 分析结论
✅ FreqAI 模型确实完成了训练,并尝试进行了预测。
❗ 二、预测列未正确加载导致信号缺失
⚠️ 日志中发现的问题
OKXRegressionStrategy - WARNING - ⚠️ 缺少以下预测列:['pred_upper', 'pred_lower']
这说明在 populate_indicators 中尝试访问的 pred_upper, pred_lower 列不存在。
📄 策略代码片段(问题所在)
required_pred_cols = ['&-s_close', 'pred_upper', 'pred_lower']
missing_pred_cols = [col for col in required_pred_cols if col not in dataframe.columns]
if not missing_pred_cols:
logger.debug("✅ 预测列已就绪:")
logger.debug(dataframe[['&-s_close', 'pred_upper', 'pred_lower']].head().to_string())
else:
logger.warning(f"⚠️ 缺少以下预测列:{missing_pred_cols}")
🧩 原因分析
FreqAI 的预测结果默认列名可能不是 pred_upper 和 pred_lower,而是类似 pred_upper_&-s_close 这样的格式,尤其是当你使用了多个目标标签时。
🛠️ 解决方案:更新列名匹配逻辑
✅ 修改建议
将 pred_upper 和 pred_lower 替换为完整的列名模式,例如:
'pred_upper_&-s_close'
'pred_lower_&-s_close'
🔁 SEARCH/REPLACE 块如下:
Filepath: freqtrade/templates/OKXRegressionStrategy.py Replace lines: 331-332
required_pred_cols = ['&-s_close', 'pred_upper_&-s_close', 'pred_lower_&-s_close']
missing_pred_cols = [col for col in required_pred_cols if col not in dataframe.columns]
Filepath: freqtrade/templates/OKXRegressionStrategy.py Replace lines: 338-338
logger.warning(f"⚠️ 缺少以下预测列:{missing_pred_cols} | 当前可用列:{list(dataframe.columns)}")
📈 三、交易信号生成是否依赖预测值?
📉 日志显示没有生成有效信号
OKXRegressionStrategy - DEBUG - 生成 0 个做多信号