diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index fce11d3e..764fa7c8 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -184,6 +184,9 @@ class FreqaiPrimer(IStrategy): df_1h['macd_signal_1h'] = macd_1h['MACDs_12_26_9'] df_1h['macd_hist_1h'] = macd_1h['MACDh_12_26_9'] + # 验证 MACD 列是否正确生成 + logger.info(f"[{metadata['pair']}] 1小时 MACD 列: {list(macd_1h.columns)}") + # 新增 StochRSI 指标 stochrsi_1h = ta.stochrsi(df_1h['close'], length=14, rsi_length=14) df_1h['stochrsi_k_1h'] = stochrsi_1h['STOCHRSIk_14_14_3_3'] @@ -195,12 +198,23 @@ class FreqaiPrimer(IStrategy): df_1h = df_1h[['date', 'rsi_1h', 'trend_1h', 'ema_50_1h', 'ema_200_1h', 'bb_lower_1h', 'bb_upper_1h', 'stochrsi_k_1h', 'stochrsi_d_1h']].fillna(method='ffill') # 确保所有需要的列都被合并 - df_1h = df_1h[['date', 'rsi_1h', 'trend_1h', 'ema_50_1h', 'ema_200_1h', - 'bb_lower_1h', 'bb_upper_1h', 'stochrsi_k_1h', 'stochrsi_d_1h', - 'macd_1h', 'macd_signal_1h']] # 确保包含 macd_1h 和 macd_signal_1h + required_columns = ['date', 'rsi_1h', 'trend_1h', 'ema_50_1h', 'ema_200_1h', + 'bb_lower_1h', 'bb_upper_1h', 'stochrsi_k_1h', 'stochrsi_d_1h', + 'macd_1h', 'macd_signal_1h'] + + # 验证所需列是否存在 + missing_columns = [col for col in required_columns if col not in df_1h.columns] + if missing_columns: + logger.error(f"[{metadata['pair']}] 缺少以下列: {missing_columns}") + raise KeyError(f"缺少以下列: {missing_columns}") + + df_1h = df_1h[required_columns] # 确保包含 macd_1h 和 macd_signal_1h # 合并 1h 数据 dataframe = dataframe.merge(df_1h, how='left', on='date').fillna(method='ffill') + + # 验证合并后的列 + logger.info(f"[{metadata['pair']}] 合并后的数据框列名: {list(dataframe.columns)}") # K线形态:看涨吞没 dataframe['bullish_engulfing'] = (