From 4f1527ea41cc5d9ba5e39b63c541141223b186bd Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Mon, 28 Apr 2025 17:23:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=89=E4=BA=A4=E6=98=93=E4=BA=86,=E9=99=AA?= =?UTF-8?q?=E7=9A=84=E4=B8=8D=E5=A4=9A=20up3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/FreqaiExampleStrategy.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/freqtrade/templates/FreqaiExampleStrategy.py b/freqtrade/templates/FreqaiExampleStrategy.py index 910a5a3..7de8880 100644 --- a/freqtrade/templates/FreqaiExampleStrategy.py +++ b/freqtrade/templates/FreqaiExampleStrategy.py @@ -115,6 +115,21 @@ class FreqaiExampleStrategy(IStrategy): logger.error(f"重新计算 MACD 列时出错:{str(e)}") raise ValueError("DataFrame 缺少必要的 MACD 列且无法重新计算。") + # 检查并填充 NaN 值 + if "macd" in dataframe.columns and "macdsignal" in dataframe.columns: + dataframe["macd"] = dataframe["macd"].fillna(method='ffill').fillna(0) + dataframe["macdsignal"] = dataframe["macdsignal"].fillna(method='ffill').fillna(0) + else: + logger.error("MACD 或 MACD 信号列缺失,无法生成买入信号。尝试重新计算 MACD 列。") + try: + macd = ta.MACD(dataframe, fastperiod=12, slowperiod=26, signalperiod=9) + dataframe["macd"] = macd["macd"].fillna(method='ffill').fillna(0) + dataframe["macdsignal"] = macd["macdsignal"].fillna(method='ffill').fillna(0) + logger.info("MACD 列已成功重新计算。") + except Exception as e: + logger.error(f"重新计算 MACD 列时出错:{str(e)}") + raise ValueError("DataFrame 缺少必要的 MACD 列且无法重新计算。") + # 检查 MACD 列是否存在 if "macd" not in dataframe.columns or "macdsignal" not in dataframe.columns: logger.error("MACD 或 MACD 信号列缺失,无法生成买入信号")