根据提供的日志、策略代码和配置文件,我将从以下几个方面进行排查分析: --- ## 🔍 一、FreqAI 是否正常训练与预测 ### ✅ 日志中的关键信息 - **模型初始化成功**: ```log freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True ``` - **特征工程完成**: ```log OKXRegressionStrategy - DEBUG - 目标初始化完成。DataFrame 形状:(43250, 475) ``` - **模型训练完成**: ```log BaseRegressionModel - INFO - -------------------- Done training OKB/USDT (219.77 secs) -------------------- ``` ### 📌 分析结论 ✅ FreqAI 模型确实完成了训练,并尝试进行了预测。 --- ## ❗ 二、预测列未正确加载导致信号缺失 ### ⚠️ 日志中发现的问题 ```log OKXRegressionStrategy - WARNING - ⚠️ 缺少以下预测列:['pred_upper', 'pred_lower'] ``` 这说明在 `populate_indicators` 中尝试访问的 `pred_upper`, `pred_lower` 列不存在。 ### 📄 策略代码片段(问题所在) ```python 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` 替换为完整的列名模式,例如: ```python 'pred_upper_&-s_close' 'pred_lower_&-s_close' ``` ### 🔁 SEARCH/REPLACE 块如下: Filepath: freqtrade/templates/OKXRegressionStrategy.py Replace lines: 331-332 ```python 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 ```python logger.warning(f"⚠️ 缺少以下预测列:{missing_pred_cols} | 当前可用列:{list(dataframe.columns)}") ``` --- ## 📈 三、交易信号生成是否依赖预测值? ### 📉 日志显示没有生成有效信号 ```log OKXRegressionStrategy - DEBUG - 生成 0 个做多信号 ``` ### 🧾 策略代码片段(问题所在)