From 965c1651cd5036ac5010de732168d9616738b83a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Sun, 15 Feb 2026 10:09:50 +0800 Subject: [PATCH] 1 --- trading_system/config.py | 1 + trading_system/market_scanner.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/trading_system/config.py b/trading_system/config.py index de933dd..0717817 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -213,6 +213,7 @@ DEFAULT_TRADING_CONFIG = { 'ATR_MULTIPLIER_MIN': 0.5, # 动态ATR倍数最小值 'ATR_MULTIPLIER_MAX': 0.5, # 动态ATR倍数最大值 'SCAN_INTERVAL': 900, # 扫描间隔15分钟(900秒),快速验证模式:提高扫描频率以增加交易机会 + 'SCAN_SYMBOL_ANALYSIS_TIMEOUT_SEC': 18, # 单个交易对「详细分析」超时(秒),超时则跳过该交易对;网络慢可调大(如 25) 'KLINE_INTERVAL': '1h', 'PRIMARY_INTERVAL': '4h', # 主周期4小时,过滤噪音 'CONFIRM_INTERVAL': '1d', # 确认周期日线,看大趋势 diff --git a/trading_system/market_scanner.py b/trading_system/market_scanner.py index 35ee3fd..d19edce 100644 --- a/trading_system/market_scanner.py +++ b/trading_system/market_scanner.py @@ -116,16 +116,21 @@ class MarketScanner: # - 由于中间数据(K线、技术指标)已经缓存,实际API请求会大大减少 semaphore = asyncio.Semaphore(3) # 最多5个并发请求(单用户建议5,多用户建议3) + analysis_timeout = float(cfg.get('SCAN_SYMBOL_ANALYSIS_TIMEOUT_SEC', 18) or 18) + if analysis_timeout < 5: + analysis_timeout = 5.0 + elif analysis_timeout > 60: + analysis_timeout = 60.0 + async def get_symbol_change_with_limit(symbol): async with semaphore: try: - # 添加超时控制,确保单个交易对的分析不会无限期阻塞 return await asyncio.wait_for( self._get_symbol_change(symbol, all_tickers.get(symbol)), - timeout=10.0 # 单个交易对分析超时10秒 + timeout=analysis_timeout ) except asyncio.TimeoutError: - logger.warning(f"{symbol} 分析超时(10秒),跳过") + logger.warning(f"{symbol} 分析超时({analysis_timeout:.0f}秒),跳过") return None except Exception as e: logger.debug(f"{symbol} 分析出错: {e}")