From 072adaaa4bd1cbc68f19c46edf216e03c108898a Mon Sep 17 00:00:00 2001 From: silencesdg Date: Thu, 21 May 2026 20:35:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20EA=E8=87=AA=E5=8A=A8=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E5=B8=82=E5=9C=BA=E5=85=B3=E9=97=AD=E5=B9=B6=E9=80=80=E5=87=BA?= =?UTF-8?q?=EF=BC=88trade=5Fallowed=3Dfalse=E6=8C=81=E7=BB=AD5=E5=88=86?= =?UTF-8?q?=E9=92=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- execution/realtime_trader.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/execution/realtime_trader.py b/execution/realtime_trader.py index 22508be..df7d5d2 100644 --- a/execution/realtime_trader.py +++ b/execution/realtime_trader.py @@ -17,6 +17,7 @@ class RealtimeTrader: self.risk_controller = None self.weight_manager = None self._cycle_count = 0 + self._market_closed_cycles = 0 # 连续检测到市场关闭的周期数 def _initialize(self): if not self.data_provider.initialize(): @@ -64,7 +65,23 @@ class RealtimeTrader: # ★ 热加载配置:cron 优化器改完 config.py 后自动生效 config.reload() - + + # ★ 检测市场关闭:连续 5 分钟 trade_allowed=false → 自动退出 + try: + acct = self.data_provider.get_account_info() + if acct and not acct.get('trade_allowed', True): + self._market_closed_cycles += 1 + if self._market_closed_cycles == 1: + logger.warning("⚠️ 市场已关闭,等待确认...") + if self._market_closed_cycles >= 60: # 5分钟@5s间隔 + logger.info("🔒 市场关闭已确认,自动退出") + self.stop() + return + else: + self._market_closed_cycles = 0 + except Exception: + pass # API 偶发失败不误判 + self.risk_controller.sync_state() current_price = self.data_provider.get_current_price(config.SYMBOL)