fix issue

This commit is contained in:
zhangkun9038@dingtalk.com 2025-08-30 13:39:16 +08:00
parent 516813f427
commit 5ea63b154c

View File

@ -247,15 +247,34 @@ class FreqaiPrimer(IStrategy):
df_15m = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='15m')
# 确保df_15m中包含rsi_15m列如果没有则计算
if 'rsi_15m' not in df_15m.columns:
# 使用pandas_ta计算14期RSI
try:
import pandas_ta as ta
rsi_series = ta.rsi(df_15m['close'], length=14)
df_15m['rsi_15m'] = rsi_series
if 'rsi_15m' not in df_15m.columns:
# 使用pandas_ta计算14期RSI
rsi_series = ta.rsi(df_15m['close'], length=14)
df_15m['rsi_15m'] = rsi_series
except Exception as e:
# 如果计算失败,创建一个默认值列
logger.warning(f"[{metadata['pair']}] 计算15m RSI时出错: {e}")
df_15m['rsi_15m'] = 50 # 设置默认值为中性
df_15m = df_15m.rename(columns={'date': 'date_15m'})
merged_data = dataframe.merge(df_15m[['date_15m', 'rsi_15m']], how='left', left_on='date', right_on='date_15m')
merged_data = merged_data.fillna(method='ffill')
# 重命名date列并保留必要的列
df_15m = df_15m[['date', 'rsi_15m']].rename(columns={'date': 'date_15m'})
# 合并数据
merged_data = dataframe.copy()
# 创建合并列
merged_data['rsi_15m'] = 50 # 设置默认值
# 尝试合并数据
try:
# 使用更简单的方式直接将df_15m的rsi_15m列映射到dataframe
# 创建一个日期到rsi的映射字典
date_rsi_map = df_15m.set_index('date_15m')['rsi_15m'].to_dict()
# 使用映射填充rsi_15m列
merged_data['rsi_15m'] = merged_data['date'].map(date_rsi_map).ffill().bfill()
except Exception as e:
logger.warning(f"[{metadata['pair']}] 合并15m数据时出错: {e}")
# 趋势反转信号15m RSI超买
trend_reversal = merged_data['rsi_15m'] > 75