时区混用问题

This commit is contained in:
zhangkun9038@dingtalk.com 2025-08-17 16:36:12 +08:00
parent febe57c744
commit 1a45a852a5

View File

@ -385,12 +385,30 @@ class FreqaiDataKitchen:
:param df: Dataframe containing all candles to run the entire backtest. Here
it is sliced down to just the present training period.
"""
# 创建数据副本并确保日期列时区一致性
df_copy = df.copy()
# 标准化日期列的时区
if 'date' in df_copy.columns:
if hasattr(df_copy['date'], 'dt'):
if df_copy['date'].dt.tz is not None:
df_copy['date'] = df_copy['date'].dt.tz_localize(None)
# 确保timerange的日期也是无时区的
start_dt = timerange.startdt
stop_dt = timerange.stopdt
if hasattr(start_dt, 'tz') and start_dt.tz is not None:
start_dt = start_dt.tz_localize(None)
if hasattr(stop_dt, 'tz') and stop_dt.tz is not None:
stop_dt = stop_dt.tz_localize(None)
if not self.live:
df = df.loc[(df["date"] >= timerange.startdt) & (df["date"] < timerange.stopdt), :]
df_copy = df_copy.loc[(df_copy["date"] >= start_dt) & (df_copy["date"] < stop_dt), :]
else:
df = df.loc[df["date"] >= timerange.startdt, :]
df_copy = df_copy.loc[df_copy["date"] >= start_dt, :]
return df
return df_copy
def find_features(self, dataframe: DataFrame) -> None:
"""
@ -449,8 +467,15 @@ class FreqaiDataKitchen:
cols = ["date"]
cols.extend(user_cols)
dataframe_backtest.reset_index(drop=True, inplace=True)
merged_df = pd.concat([dataframe_backtest[cols], append_df], axis=1)
# 确保日期列的时区一致性,避免时区混用错误
dataframe_backtest_copy = dataframe_backtest[cols].copy()
if 'date' in dataframe_backtest_copy.columns:
if hasattr(dataframe_backtest_copy['date'], 'dt'):
if dataframe_backtest_copy['date'].dt.tz is not None:
dataframe_backtest_copy['date'] = dataframe_backtest_copy['date'].dt.tz_localize(None)
dataframe_backtest_copy.reset_index(drop=True, inplace=True)
merged_df = pd.concat([dataframe_backtest_copy, append_df], axis=1)
return merged_df
def append_predictions(self, append_df: DataFrame) -> None: