From 66b094c711aed0bda961cb97bdab05bd013ea30e Mon Sep 17 00:00:00 2001 From: dev-worker Date: Mon, 2 Mar 2026 17:41:23 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=B0=E6=8D=AE=E6=96=B0=E9=B2=9C?= =?UTF-8?q?=E5=BA=A6=E7=86=94=E6=96=AD=E8=87=AA=E5=8A=A8=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=20+=20=E9=98=88=E5=80=BC10=E2=86=9230=E7=A7=92(=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E5=90=AF=E5=8A=A8=E5=9B=9E=E7=81=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/risk_guard.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/risk_guard.py b/backend/risk_guard.py index e582431..22cdb95 100644 --- a/backend/risk_guard.py +++ b/backend/risk_guard.py @@ -67,7 +67,7 @@ HOLD_TIMEOUT_GRACE_MIN = 10 # 红灯后10分钟人工窗口 HOLD_TIMEOUT_AUTO_CLOSE_MIN = HOLD_TIMEOUT_RED_MIN + HOLD_TIMEOUT_GRACE_MIN # 70分钟 # 数据新鲜度 -MARKET_DATA_STALE_SEC = 10 +MARKET_DATA_STALE_SEC = 30 # 30秒(允许signal_engine启动回灌) ACCOUNT_UPDATE_STALE_SEC = 20 CHECK_INTERVAL = 5 # 风控检查间隔(秒) @@ -451,6 +451,19 @@ def check_auto_resume(): risk_state.circuit_break_reason = None write_risk_state() + # 数据新鲜度恢复(熔断原因含"数据异常"且当前数据已恢复新鲜) + if (risk_state.circuit_break_reason + and "数据异常" in risk_state.circuit_break_reason + and "人工" not in risk_state.circuit_break_reason): + # 检查数据是否已恢复 + api_gap = now - risk_state.last_api_success + if api_gap < 10: + logger.info("✅ 数据新鲜度恢复,自动恢复交易") + risk_state.status = "normal" + risk_state.block_new_entries = False + risk_state.circuit_break_reason = None + write_risk_state() + # ============ 前端紧急指令处理 ============