diff --git a/freqtrade/templates/FreqaiExampleStrategy.py b/freqtrade/templates/FreqaiExampleStrategy.py index febb4a1..910a5a3 100644 --- a/freqtrade/templates/FreqaiExampleStrategy.py +++ b/freqtrade/templates/FreqaiExampleStrategy.py @@ -100,6 +100,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 信号列缺失,无法生成买入信号")