feat: 信号新鲜度保护 — 超过2秒弃仓
- execute_entry最前面检查signal_age = now - signal_ts - >2000ms直接return None,不开仓 - 写warn级别event到live_events(含age_ms和score) - 正常NOTIFY链路<100ms,超2秒说明有异常
This commit is contained in:
parent
d7788d3766
commit
22d06efafe
@ -263,7 +263,17 @@ async def execute_entry(session: aiohttp.ClientSession, signal: dict, db_conn):
|
|||||||
|
|
||||||
t_signal = signal_ts # 信号时间戳(ms)
|
t_signal = signal_ts # 信号时间戳(ms)
|
||||||
|
|
||||||
# 0. 检查风控状态(读risk_guard写的状态文件)
|
# 0. 信号新鲜度检查(超过2秒弃仓)
|
||||||
|
SIGNAL_MAX_AGE_MS = 2000
|
||||||
|
signal_age_ms = time.time() * 1000 - t_signal
|
||||||
|
if signal_age_ms > SIGNAL_MAX_AGE_MS:
|
||||||
|
logger.warning(f"[{symbol}] ❌ 信号过期: {signal_age_ms:.0f}ms > {SIGNAL_MAX_AGE_MS}ms,弃仓")
|
||||||
|
_log_event(db_conn, "warn", "trade",
|
||||||
|
f"信号过期弃仓 {direction} {symbol} | age={signal_age_ms:.0f}ms | score={score}",
|
||||||
|
symbol, {"signal_age_ms": round(signal_age_ms), "score": score})
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 0.5 检查风控状态(读risk_guard写的状态文件)
|
||||||
try:
|
try:
|
||||||
with open("/tmp/risk_guard_state.json") as f:
|
with open("/tmp/risk_guard_state.json") as f:
|
||||||
risk_state = json.load(f)
|
risk_state = json.load(f)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user