diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index 4f07dd94..99bf5962 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -87,8 +87,8 @@ class FreqaiPrimer(IStrategy): def calculate_data_freshness(self, data_timestamp: datetime, pair: str, dataframe: DataFrame) -> float: """ - 计算数据新鲜度(与交易所最新数据比较) - :param data_timestamp: 数据时间戳 + 计算数据新鲜度(与当前时间比较,因为dataframe本身可能已过时) + :param data_timestamp: 数据时间戳(来自dataframe的最新时间) :param pair: 交易对 :param dataframe: 数据框 :return: 数据延迟时间(分钟) @@ -99,18 +99,10 @@ class FreqaiPrimer(IStrategy): data_timestamp = data_timestamp.replace(tzinfo=timezone.utc) data_timestamp_utc8 = data_timestamp.astimezone(UTC_PLUS_8).replace(tzinfo=None) - # 获取交易所的最新数据时间 - exchange_latest_candle, exchange_latest_date = self.get_latest_candle(pair, self.timeframe, dataframe) - - if exchange_latest_date: - # 转换为UTC+8时间进行比较 - if exchange_latest_date.tzinfo is None: - exchange_latest_date = exchange_latest_date.replace(tzinfo=timezone.utc) - exchange_latest_utc8 = exchange_latest_date.astimezone(UTC_PLUS_8).replace(tzinfo=None) - freshness_minutes = (exchange_latest_utc8 - data_timestamp_utc8).total_seconds() / 60 - else: - # 如果无法获取交易所最新时间,使用保守估计(3分钟延迟) - freshness_minutes = 3.0 + # 使用当前系统时间作为基准,因为dataframe本身可能已过时 + # 这样可以检测到Freqtrade内部缓存机制导致的数据延迟 + current_time = datetime.now(UTC_PLUS_8).replace(tzinfo=None) + freshness_minutes = (current_time - data_timestamp_utc8).total_seconds() / 60 return max(0.0, freshness_minutes) # 确保不会返回负数