reindex and merge

This commit is contained in:
Ubuntu 2025-08-31 18:28:17 +08:00
parent 84d47da911
commit 7892332420

View File

@ -142,11 +142,13 @@ class FreqaiPrimer(IStrategy):
df_15m['macd_signal_15m'] = macd_15m['MACDs_12_26_9']
df_15m['macd_hist_15m'] = macd_15m['MACDh_12_26_9']
# 手动合并 15m 数据
df_15m = df_15m[['date', 'rsi_15m', 'ema_50_15m', 'ema_200_15m']]
df_15m = df_15m.rename(columns={'date': 'date_15m'})
dataframe = dataframe.merge(df_15m, how='left', left_on='date', right_on='date_15m')
dataframe = dataframe.fillna(method='ffill')
# 将 15m 数据重新索引到主时间框架 (3m)
df_15m = df_15m.set_index('date').reindex(dataframe['date']).reset_index()
df_15m = df_15m.rename(columns={'index': 'date'})
df_15m = df_15m[['date', 'rsi_15m', 'ema_50_15m', 'ema_200_15m']].fillna(method='ffill')
# 合并 15m 数据
dataframe = dataframe.merge(df_15m, how='left', on='date')
# 获取 1h 数据
df_1h = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='1h')
@ -166,11 +168,13 @@ 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']
# 手动合并 1h 数据
df_1h = df_1h[['date', 'rsi_1h', 'trend_1h', 'ema_50_1h', 'ema_200_1h']]
df_1h = df_1h.rename(columns={'date': 'date_1h'})
dataframe = dataframe.merge(df_1h, how='left', left_on='date', right_on='date_1h')
dataframe = dataframe.fillna(method='ffill')
# 将 1h 数据重新索引到主时间框架 (3m)
df_1h = df_1h.set_index('date').reindex(dataframe['date']).reset_index()
df_1h = df_1h.rename(columns={'index': 'date'})
df_1h = df_1h[['date', 'rsi_1h', 'trend_1h', 'ema_50_1h', 'ema_200_1h']].fillna(method='ffill')
# 合并 1h 数据
dataframe = dataframe.merge(df_1h, how='left', on='date')
# K线形态看涨吞没
dataframe['bullish_engulfing'] = (
@ -219,8 +223,8 @@ class FreqaiPrimer(IStrategy):
15m={'' if dataframe['trend_15m'].iloc[-1] == 1 else ''}, \
1h={'' if dataframe['trend_1h_ema'].iloc[-1] == 1 else ''}")
# 调试:打印指标值(最后 5 行)
print(f"Pair: {metadata['pair']}, Last 5 rows:")
# 调试:打印指标值(最后 5 行),验证时间对齐
print(f"Pair: {metadata['pair']}, Last 5 rows after reindexing:")
print(dataframe[['date', 'close', 'bb_lower_3m', 'rsi_3m', 'rsi_15m', 'rsi_1h', 'trend_1h',
'trend_3m', 'trend_15m', 'trend_1h_ema', 'market_score', 'market_state',
'bullish_engulfing', 'volume', 'volume_ma']].tail(5))