# 交易对筛选优化完成总结(2026-01-27) ## 🎯 优化目标 **按真实的信号强度(signal_strength)排序,优先选择高质量信号(8-10分),而不是简单的signalScore(5-7分)** --- ## ✅ 已完成的优化 ### 1. 在扫描阶段计算signal_strength **修改位置**:`trading_system/market_scanner.py:380-449` **优化内容**: - 在 `_get_symbol_change` 方法中,添加真实的 `signal_strength` 计算 - 使用与 `strategy.py` 相同的逻辑,确保排序依据与交易判断一致 - 包括:MACD金叉/死叉、EMA均线系统、价格与EMA20关系、4H趋势确认 **计算逻辑**: ```python # 策略权重配置(与strategy.py保持一致) TREND_SIGNAL_WEIGHTS = { 'macd_cross': 5, # MACD金叉/死叉 'ema_cross': 4, # EMA20上穿/下穿EMA50 'price_above_ema20': 3, # 价格在EMA20之上/下 '4h_trend_confirmation': 2, # 4H趋势确认 } ``` --- ### 2. 按signal_strength排序 **修改位置**:`trading_system/market_scanner.py:152-161` **优化前**: ```python sorted_results = sorted( filtered_results, key=lambda x: ( x.get('signalScore', 0) * 10, # 信号得分权重更高 abs(x['changePercent']) # 其次考虑涨跌幅 ), reverse=True ) ``` **优化后**: ```python sorted_results = sorted( filtered_results, key=lambda x: ( x.get('signal_strength', 0) * 100, # 信号强度权重最高(乘以100确保优先级) x.get('signalScore', 0) * 10, # 其次考虑信号得分(兼容性) abs(x['changePercent']) # 最后考虑涨跌幅 ), reverse=True ) ``` --- ### 3. 更新日志显示 **修改位置**:`trading_system/market_scanner.py:197-208` **优化内容**: - 日志中显示真实的 `signal_strength`,而不是 `signalScore` - 方便用户查看信号强度分布 --- ## 📊 预期效果 ### 优化前 - 按 `signalScore` 排序(简单的技术指标得分) - 信号强度:5, 5, 5, 5, 6, 6, 7, 7(可能的情况) - 问题:信号强度普遍偏低,与交易判断不一致 ### 优化后 - 按 `signal_strength` 排序(真实的信号强度,包括多周期共振) - 信号强度:7, 7, 8, 8, 9, 9, 10, 10(理想情况) - 效果:优先选择高质量信号,提升胜率 --- ## 🔍 信号强度5-7是否合理? ### 当前情况 - `MIN_SIGNAL_STRENGTH = 5`,所以信号强度5-7是正常的 - 但问题是:应该优先选择信号强度更高的交易对(8-10分) ### 优化后 - 按 `signal_strength` 排序,优先选择8-10分的交易对 - 如果市场整体信号强度偏低,仍然会出现5-7的情况,但这是正常的 - 说明当前市场条件不够理想,系统会优先选择相对较好的信号 --- ## ⚠️ 注意事项 1. **性能考虑**: - 计算 `signal_strength` 需要额外的计算量 - 但考虑到已经获取了所有技术指标,计算量增加有限 - 可以通过缓存优化(技术指标已经缓存) 2. **信号强度分布**: - 如果市场整体信号强度偏低,可能仍然会出现5-7的情况 - 这是正常的,说明当前市场条件不够理想 - 系统会优先选择相对较好的信号(即使只有5-7分) 3. **排序依据**: - 现在按 `signal_strength` 排序,确保排序依据与交易判断一致 - 优先选择高质量信号,提升胜率 --- ## ✅ 总结 **优化内容**: - ✅ 在扫描阶段计算真实的 `signal_strength` - ✅ 按 `signal_strength` 排序,而不是按 `signalScore` 排序 - ✅ 更新日志显示,显示真实的信号强度 **预期效果**: - ✅ 优先选择信号强度高的交易对(8-10分) - ✅ 提升胜率(信号强度高的交易对胜率更高) - ✅ 排序依据与交易判断一致 **信号强度5-7是否合理**: - ✅ 如果市场整体信号强度偏低,5-7是正常的 - ✅ 优化后,系统会优先选择相对较好的信号(即使只有5-7分) - ✅ 如果市场条件好,应该能看到8-10分的信号 --- ## 📝 后续优化建议 1. **监控信号强度分布**: - 定期检查信号强度分布,确认优化效果 - 如果长期都是5-7分,可能需要调整信号强度计算逻辑 2. **动态调整TOP_N_SYMBOLS**: - 如果高质量信号(8-10分)较少,可以降低 `TOP_N_SYMBOLS` - 如果高质量信号较多,可以增加 `TOP_N_SYMBOLS` 3. **信号强度阈值**: - 如果长期都是5-7分,可以考虑提高 `MIN_SIGNAL_STRENGTH` 到6或7 - 但需要确保有足够的交易对