ML数据新鲜度问题+2
This commit is contained in:
parent
8e089b3461
commit
e22c6d8a32
@ -19,34 +19,24 @@
|
||||
"timeout": 20000
|
||||
},
|
||||
"pair_whitelist": [
|
||||
"AAVE/USDT",
|
||||
"ADA/USDT",
|
||||
"AVAX/USDT",
|
||||
"BCH/USDT",
|
||||
"BNB/USDT",
|
||||
"BTC/USDT",
|
||||
"CHZ/USDT",
|
||||
"DOGE/USDT",
|
||||
"ETC/USDT",
|
||||
"DOT/USDT",
|
||||
"ETH/USDT",
|
||||
"FIL/USDT",
|
||||
"ICP/USDT",
|
||||
"LINK/USDT",
|
||||
"LTC/USDT",
|
||||
"PENGU/USDT",
|
||||
"PEPE/USDT",
|
||||
"PUMP/USDT",
|
||||
"SHIB/USDT",
|
||||
"SNX/USDT",
|
||||
"SOL/USDT",
|
||||
"SUI/USDT",
|
||||
"TON/USDT",
|
||||
"TRB/USDT",
|
||||
"TRUMP/USDT",
|
||||
"TRX/USDT",
|
||||
"UNI/USDT",
|
||||
"WIF/USDT",
|
||||
"WLD/USDT",
|
||||
"XAUT/USDT",
|
||||
"XLM/USDT",
|
||||
"XRP/USDT"
|
||||
],
|
||||
|
||||
@ -19,42 +19,25 @@
|
||||
"timeout": 20000
|
||||
},
|
||||
"pair_whitelist": [
|
||||
"AAVE/USDT",
|
||||
"ADA/USDT",
|
||||
"AVAX/USDT",
|
||||
"BCH/USDT",
|
||||
"BNB/USDT",
|
||||
"BTC/USDT",
|
||||
"DOGE/USDT",
|
||||
"DOT/USDT",
|
||||
"ETH/USDT",
|
||||
"FIL/USDT",
|
||||
"IP/USDT",
|
||||
"KAITO/USDT",
|
||||
"LINK/USDT",
|
||||
"LTC/USDT",
|
||||
"MASK/USDT",
|
||||
"OKB/USDT",
|
||||
"PAXG/USDT",
|
||||
"PENGU/USDT",
|
||||
"PEPE/USDT",
|
||||
"PI/USDT",
|
||||
"PUMP/USDT",
|
||||
"SNX/USDT",
|
||||
"SOL/USDT",
|
||||
"STETH/USDT",
|
||||
"STRK/USDT",
|
||||
"SUI/USDT",
|
||||
"TON/USDT",
|
||||
"TRB/USDT",
|
||||
"TRUMP/USDT",
|
||||
"TRX/USDT",
|
||||
"UNI/USDT",
|
||||
"USDG/USDT",
|
||||
"WLD/USDT",
|
||||
"XAUT/USDT",
|
||||
"XLM/USDT",
|
||||
"XPL/USDT",
|
||||
"XRP/USDT"
|
||||
],
|
||||
"pair_blacklist": [
|
||||
|
||||
@ -1182,6 +1182,41 @@ class FreqaiPrimer(IStrategy):
|
||||
# 6. 市场状态
|
||||
market_state = str(last_row.get('market_state', 'unknown'))
|
||||
|
||||
# 7. 数据时间戳和延迟信息
|
||||
data_timestamp = last_row.get('date')
|
||||
data_age_str = 'N/A'
|
||||
if data_timestamp is not None:
|
||||
# 确保 data_timestamp 是 datetime 对象
|
||||
if not isinstance(data_timestamp, datetime):
|
||||
try:
|
||||
from pandas import Timestamp
|
||||
if isinstance(data_timestamp, Timestamp):
|
||||
data_timestamp = data_timestamp.to_pydatetime()
|
||||
except:
|
||||
pass
|
||||
|
||||
# 计算数据延迟
|
||||
if isinstance(data_timestamp, datetime):
|
||||
# 处理时区
|
||||
if data_timestamp.tzinfo is None and current_time.tzinfo is not None:
|
||||
import pytz
|
||||
data_timestamp = pytz.utc.localize(data_timestamp)
|
||||
elif data_timestamp.tzinfo is not None and current_time.tzinfo is None:
|
||||
import pytz
|
||||
current_time = pytz.utc.localize(current_time)
|
||||
|
||||
data_age_minutes = (current_time - data_timestamp).total_seconds() / 60
|
||||
data_age_str = f"{data_age_minutes:.1f}min"
|
||||
|
||||
# 根据延迟添加状态标识
|
||||
if data_age_minutes <= 10:
|
||||
freshness_icon = "✅"
|
||||
elif data_age_minutes <= 30:
|
||||
freshness_icon = "⚠️"
|
||||
else:
|
||||
freshness_icon = "❌"
|
||||
data_age_str = f"{freshness_icon} {data_age_str}"
|
||||
|
||||
# 输出诊断日志
|
||||
if entry_prob is not None:
|
||||
ml_prob_str = f"{entry_prob:.2f}"
|
||||
@ -1220,6 +1255,8 @@ class FreqaiPrimer(IStrategy):
|
||||
|
||||
self.strategy_log(
|
||||
f"[入场诊断] {pair} | "
|
||||
f"数据时间: {data_timestamp.strftime('%H:%M:%S') if isinstance(data_timestamp, datetime) else 'N/A'} | "
|
||||
f"延迟: {data_age_str} | "
|
||||
f"价格: {format_number(current_close)} | "
|
||||
f"vs 5K高点: {price_vs_recent_high:+.2%} | "
|
||||
f"vs EMA5: {price_vs_ema5:+.2%} | "
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user