auto_trade_sys/docs/交易对筛选优化方案_2026-01-27.md
薇薇安 9fe028d704 a
2026-01-27 10:36:56 +08:00

5.4 KiB
Raw Permalink Blame History

交易对筛选优化方案2026-01-27

🔍 当前问题分析

问题描述

用户发现扫描到的交易对信号强度都是5-7质疑

  1. 是否按信号强度从高到低排序?
  2. 信号强度5-7是否合理

当前实现

market_scanner.py

  • 计算 signalScore简单的技术指标得分RSI、MACD、布林带等
  • signalScore 排序,取前 TOP_N_SYMBOLS当前是8个
  • 没有按 signal_strength 排序或过滤

strategy.py

  • 对扫描到的交易对,调用 _analyze_trade_signal 计算 signal_strength
  • 检查 signal_strength >= MIN_SIGNAL_STRENGTH当前是5
  • 如果信号强度不足,只生成推荐,不自动交易

问题根源

  1. 两个不同的概念

    • signalScore:简单的技术指标得分(用于排序)
    • signal_strength:复杂的信号强度计算(包括多周期共振、趋势确认等)
  2. 排序依据错误

    • 当前按 signalScore 排序,但实际交易判断用的是 signal_strength
    • 导致 signalScore 高的交易对,signal_strength 可能只有5-7
  3. 信号强度5-7是否合理

    • 当前 MIN_SIGNAL_STRENGTH = 5所以信号强度5-7是正常的
    • 但问题是应该优先选择信号强度更高的交易对8-10分

优化方案

方案1在扫描阶段预先计算signal_strength推荐

优点

  • 按真实的信号强度排序,优先选择高质量信号
  • 可以在扫描阶段就过滤掉低质量信号
  • 减少后续策略阶段的无效处理

缺点

  • 需要调用 _analyze_trade_signal,增加计算量
  • 但考虑到已经获取了所有技术指标,计算量增加有限

实现

  1. market_scanner.py_get_symbol_change 中,调用 _analyze_trade_signal 计算 signal_strength
  2. signal_strength 排序,而不是按 signalScore 排序
  3. 可选:在扫描阶段就过滤掉 signal_strength < MIN_SIGNAL_STRENGTH 的交易对

方案2保持现状但优化signalScore计算简单

优点

  • 不需要修改太多代码
  • 保持扫描阶段简单快速

缺点

  • signalScoresignal_strength 仍然不一致
  • 可能仍然会出现信号强度5-7的情况

实现

  1. 优化 signalScore 的计算,使其更接近 signal_strength
  2. 增加多周期共振的权重
  3. 增加趋势确认的权重

🎯 推荐方案方案1按signal_strength排序

实施步骤

  1. 在market_scanner.py中集成signal_strength计算

    • 需要访问 TradingStrategy_analyze_trade_signal 方法
    • 或者,将 _analyze_trade_signal 提取为独立函数
  2. 按signal_strength排序

    • 替换当前的 signalScore 排序逻辑
    • 优先选择 signal_strength 高的交易对
  3. 可选:在扫描阶段过滤

    • 过滤掉 signal_strength < MIN_SIGNAL_STRENGTH 的交易对
    • 但考虑到可能没有足够的交易对,建议只排序,不严格过滤

📊 预期效果

优化前

  • signalScore 排序取前8个
  • 信号强度5, 5, 5, 5, 6, 6, 7, 7可能的情况
  • 问题:信号强度普遍偏低

优化后

  • signal_strength 排序取前8个
  • 信号强度7, 7, 8, 8, 9, 9, 10, 10理想情况
  • 效果:优先选择高质量信号,提升胜率

⚠️ 注意事项

  1. 性能考虑

    • 计算 signal_strength 需要额外的计算量
    • 但考虑到已经获取了所有技术指标,计算量增加有限
    • 可以通过缓存优化
  2. 交易对数量

    • 如果严格过滤,可能导致交易对数量不足
    • 建议:只排序,不严格过滤(保留所有符合条件的交易对)
  3. 信号强度分布

    • 如果市场整体信号强度偏低可能仍然会出现5-7的情况
    • 这是正常的,说明当前市场条件不够理想

🔧 实施建议

阶段1按signal_strength排序立即实施

  1. market_scanner.py 中集成 signal_strength 计算
  2. signal_strength 排序,而不是按 signalScore 排序
  3. 保持 TOP_N_SYMBOLS = 8,但优先选择信号强度高的

阶段2可选优化后续考虑

  1. 在扫描阶段过滤掉 signal_strength < MIN_SIGNAL_STRENGTH 的交易对
  2. 如果过滤后交易对数量不足,降低 MIN_SIGNAL_STRENGTH 或增加 TOP_N_SYMBOLS

📝 代码修改点

1. market_scanner.py

需要修改

  • _get_symbol_change 方法:添加 signal_strength 计算
  • scan_market 方法:按 signal_strength 排序

需要访问

  • TradingStrategy._analyze_trade_signal 方法
  • 或者,将信号强度计算逻辑提取为独立函数

2. 可选:提取信号强度计算逻辑

建议

  • _analyze_trade_signal 中的信号强度计算逻辑提取为独立函数
  • market_scanner.pystrategy.py 中复用

总结

问题

  • 当前按 signalScore 排序,但实际交易判断用的是 signal_strength
  • 导致信号强度普遍偏低5-7

解决方案

  • 在扫描阶段预先计算 signal_strength
  • signal_strength 排序,优先选择高质量信号
  • 预期信号强度分布7-10分而不是5-7分

实施优先级

  • :按 signal_strength 排序(立即实施)
  • :在扫描阶段过滤低质量信号(可选)