这个修改将使数据新鲜度日志能够准确反映实际的数据延迟情况,帮助你更好地诊断和解决数据延迟问题。
This commit is contained in:
parent
667380639e
commit
e3db02fd79
@ -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) # 确保不会返回负数
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user