From e7443dddf3f6f0a844436fdaffaa55d58e10acef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Thu, 12 Feb 2026 16:57:58 +0800 Subject: [PATCH] 1 --- trading_system/market_scanner.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/trading_system/market_scanner.py b/trading_system/market_scanner.py index 05957ce..5281912 100644 --- a/trading_system/market_scanner.py +++ b/trading_system/market_scanner.py @@ -58,8 +58,12 @@ class MarketScanner: logger.warning("未获取到交易对") return [] - # 根据配置限制扫描的交易对数量 + # 根据配置限制扫描的交易对数量(确保为整数,避免 DB/JSON 返回 float 导致 slice 报错) max_scan_symbols = cfg.get('MAX_SCAN_SYMBOLS', 500) + try: + max_scan_symbols = int(max_scan_symbols) if max_scan_symbols is not None else 500 + except (TypeError, ValueError): + max_scan_symbols = 500 if max_scan_symbols > 0 and max_scan_symbols < len(all_symbols): symbols = all_symbols[:max_scan_symbols] logger.info(f"限制扫描数量: {len(symbols)}/{len(all_symbols)} 个交易对(配置: MAX_SCAN_SYMBOLS={max_scan_symbols})") @@ -164,6 +168,11 @@ class MarketScanner: # 智能补单:返回 TOP_N + 额外候选数,当前 TOP_N 中部分因冷却等被跳过时,策略仍会尝试后续交易对,避免无单可下 top_n_val = cfg.get('TOP_N_SYMBOLS', config.TRADING_CONFIG['TOP_N_SYMBOLS']) extra = cfg.get('SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT', config.TRADING_CONFIG.get('SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT', 8)) + try: + top_n_val = int(top_n_val) if top_n_val is not None else 20 + extra = int(extra) if extra is not None else 8 + except (TypeError, ValueError): + top_n_val, extra = 20, 8 take_count = min(len(sorted_results), top_n_val + extra) top_n = sorted_results[:take_count]