This commit is contained in:
薇薇安 2026-02-15 10:09:50 +08:00
parent a1b54d658f
commit 965c1651cd
2 changed files with 9 additions and 3 deletions

View File

@ -213,6 +213,7 @@ DEFAULT_TRADING_CONFIG = {
'ATR_MULTIPLIER_MIN': 0.5, # 动态ATR倍数最小值 'ATR_MULTIPLIER_MIN': 0.5, # 动态ATR倍数最小值
'ATR_MULTIPLIER_MAX': 0.5, # 动态ATR倍数最大值 'ATR_MULTIPLIER_MAX': 0.5, # 动态ATR倍数最大值
'SCAN_INTERVAL': 900, # 扫描间隔15分钟900秒快速验证模式提高扫描频率以增加交易机会 'SCAN_INTERVAL': 900, # 扫描间隔15分钟900秒快速验证模式提高扫描频率以增加交易机会
'SCAN_SYMBOL_ANALYSIS_TIMEOUT_SEC': 18, # 单个交易对「详细分析」超时(秒),超时则跳过该交易对;网络慢可调大(如 25
'KLINE_INTERVAL': '1h', 'KLINE_INTERVAL': '1h',
'PRIMARY_INTERVAL': '4h', # 主周期4小时过滤噪音 'PRIMARY_INTERVAL': '4h', # 主周期4小时过滤噪音
'CONFIRM_INTERVAL': '1d', # 确认周期日线,看大趋势 'CONFIRM_INTERVAL': '1d', # 确认周期日线,看大趋势

View File

@ -116,16 +116,21 @@ class MarketScanner:
# - 由于中间数据K线、技术指标已经缓存实际API请求会大大减少 # - 由于中间数据K线、技术指标已经缓存实际API请求会大大减少
semaphore = asyncio.Semaphore(3) # 最多5个并发请求单用户建议5多用户建议3 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 def get_symbol_change_with_limit(symbol):
async with semaphore: async with semaphore:
try: try:
# 添加超时控制,确保单个交易对的分析不会无限期阻塞
return await asyncio.wait_for( return await asyncio.wait_for(
self._get_symbol_change(symbol, all_tickers.get(symbol)), self._get_symbol_change(symbol, all_tickers.get(symbol)),
timeout=10.0 # 单个交易对分析超时10秒 timeout=analysis_timeout
) )
except asyncio.TimeoutError: except asyncio.TimeoutError:
logger.warning(f"{symbol} 分析超时(10秒),跳过") logger.warning(f"{symbol} 分析超时({analysis_timeout:.0f}秒),跳过")
return None return None
except Exception as e: except Exception as e:
logger.debug(f"{symbol} 分析出错: {e}") logger.debug(f"{symbol} 分析出错: {e}")