From 8b32c1084a817dcdba815dd40a69933f1c039039 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 1 May 2026 00:14:55 +0200 Subject: [PATCH] fix: workaround freqtrade 2026.4 date column dtype regression Freqtrade 2026.4 (commit 2c5dc72) changed feather/parquet handlers to use .dt.as_unit("ms") instead of to_datetime(col, unit="ms", utc=True). This breaks when data files store dates as int64 epoch-ms, causing AttributeError in feature_engineering_standard. Use pd.to_datetime(col, utc=True) defensively to handle both int64 and datetime inputs. Ref: https://github.com/freqtrade/freqtrade/issues/13107 --- ReforceXY/user_data/strategies/RLAgentStrategy.py | 4 ++-- quickadapter/user_data/strategies/QuickAdapterV3.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ReforceXY/user_data/strategies/RLAgentStrategy.py b/ReforceXY/user_data/strategies/RLAgentStrategy.py index 769e84c..815e5a1 100644 --- a/ReforceXY/user_data/strategies/RLAgentStrategy.py +++ b/ReforceXY/user_data/strategies/RLAgentStrategy.py @@ -4,7 +4,7 @@ from functools import reduce from typing import Any, Final, Literal, Optional import numpy as np - +import pandas as pd # import talib.abstract as ta from freqtrade.persistence import Trade from freqtrade.strategy import IStrategy @@ -55,7 +55,7 @@ class RLAgentStrategy(IStrategy): def feature_engineering_standard( self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs ) -> DataFrame: - dates = dataframe.get("date") + dates = pd.to_datetime(dataframe["date"], utc=True) dataframe["%-day_of_week"] = (dates.dt.dayofweek + 1) / 7 dataframe["%-hour_of_day"] = (dates.dt.hour + 1) / 25 diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index c010530..2e5108d 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -16,18 +16,18 @@ from typing import ( ) import numpy as np +import pandas as pd import pandas_ta as pta import talib.abstract as ta from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date from freqtrade.persistence import Trade from freqtrade.strategy import AnnotationType, stoploss_from_absolute from freqtrade.strategy.interface import IStrategy +from LabelTransformer import COMBINED_AGGREGATIONS, get_label_column_config from pandas import DataFrame, Series, isna from scipy.stats import pearsonr, t from technical.pivots_points import pivots_points -from LabelTransformer import COMBINED_AGGREGATIONS, get_label_column_config - from Utils import ( DEFAULT_FIT_LIVE_PREDICTIONS_CANDLES, EXTREMA_COLUMN, @@ -724,7 +724,7 @@ class QuickAdapterV3(IStrategy): def feature_engineering_standard( self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs ) -> DataFrame: - dates = dataframe.get("date") + dates = pd.to_datetime(dataframe["date"], utc=True) dataframe["%-day_of_week"] = (dates.dt.dayofweek + 1) / 7 dataframe["%-hour_of_day"] = (dates.dt.hour + 1) / 25 -- 2.53.0