From 4b2fd054b5ca55ca9b5ac8cf0984e9056327ecdd Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Mon, 28 Apr 2025 17:54:40 +0800 Subject: [PATCH] stable1 4 --- freqtrade/templates/FreqaiExampleStrategy.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/freqtrade/templates/FreqaiExampleStrategy.py b/freqtrade/templates/FreqaiExampleStrategy.py index 133151b..2a5534a 100644 --- a/freqtrade/templates/FreqaiExampleStrategy.py +++ b/freqtrade/templates/FreqaiExampleStrategy.py @@ -85,6 +85,21 @@ class FreqaiExampleStrategy(IStrategy): dataframe["macd"] = np.nan dataframe["macdsignal"] = np.nan + # 检查并填充 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 信号列缺失,无法生成买入信号")