4.8 KiB
4.8 KiB
市场扫描优化分析
🔍 当前情况
扫描流程
- 获取所有USDT永续合约交易对:544个
- 限制扫描数量:150个(
MAX_SCAN_SYMBOLS=150) - 初步筛选:28个(通过最小涨跌幅和成交量过滤)
- 最终选择:5个(
TOP_N_SYMBOLS=5)
问题分析
问题1:扫描150个,只取5个,是否合理?
当前逻辑:
- 扫描前150个交易对(按币安返回顺序,可能不是按市值排序)
- 初步筛选后,28个需要详细分析
- 最终只选择5个(按信号得分和涨跌幅排序)
问题:
-
可能错过好机会:
- 如果前150个中没有包含某些优质山寨币,会错过
- 如果信号得分排序不准确,可能错过更好的机会
-
TOP_N_SYMBOLS=5 可能太少:
- 山寨币策略配置:
MAX_OPEN_POSITIONS=4(最多4个持仓) - 如果只选择5个,可能不够
- 建议:
TOP_N_SYMBOLS应该 >=MAX_OPEN_POSITIONS * 1.5(至少6-8个)
- 山寨币策略配置:
问题2:是否需要跳过主流币?
当前逻辑:
- 没有过滤主流币(BTC、ETH、BNB等)
- 如果主流币出现在前150个中,会被扫描和分析
问题:
-
山寨币策略不应该交易主流币:
- 主流币波动小,不符合山寨币高盈亏比策略
- 主流币流动性太好,价格冲击小,但也不容易有大波动
-
主流币可能占用扫描名额:
- 如果BTC、ETH出现在前150个中,会占用扫描和分析资源
- 但最终可能因为信号强度不足而不交易
✅ 优化方案
方案1:过滤主流币(推荐)
实现:在扫描前过滤掉主流币
主流币列表:
MAJOR_COINS = {'BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'DOTUSDT', 'AVAXUSDT', 'MATICUSDT'}
优点:
- 专注于山寨币,符合策略定位
- 节省扫描和分析资源
- 避免主流币占用名额
缺点:
- 如果主流币出现异常波动,会错过(但这不是山寨币策略的目标)
方案2:增加 TOP_N_SYMBOLS
当前:TOP_N_SYMBOLS=5
建议:增加到 8-10
理由:
MAX_OPEN_POSITIONS=4,需要更多候选- 增加选择余地,避免错过好机会
- 即使选择8-10个,最终也可能只交易4个(受持仓限制)
方案3:优化排序逻辑
当前排序:
sorted_results = sorted(
filtered_results,
key=lambda x: (
x.get('signalScore', 0) * 10, # 信号得分权重更高
abs(x['changePercent']) # 其次考虑涨跌幅
),
reverse=True
)
优化建议:
- 增加成交量权重:成交量越大,流动性越好
- 增加波动率权重:波动率越大,机会越大
- 排除主流币:在排序前排除主流币
🎯 推荐配置
优化后的配置
MAX_SCAN_SYMBOLS = 150 # 保持150个(覆盖主流山寨)
TOP_N_SYMBOLS = 8 # 增加到8个(给更多选择余地)
EXCLUDE_MAJOR_COINS = True # 排除主流币(新增配置)
MAJOR_COINS = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'DOTUSDT', 'AVAXUSDT', 'MATICUSDT']
理由:
- 保持扫描150个:覆盖主流山寨币
- 增加到8个候选:给更多选择余地,避免错过好机会
- 排除主流币:专注于山寨币,符合策略定位
🔧 实现方案
1. 添加主流币过滤
在 market_scanner.py 中添加主流币过滤逻辑:
# 主流币列表(山寨币策略应该排除)
MAJOR_COINS = {'BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT',
'ADAUSDT', 'DOGEUSDT', 'DOTUSDT', 'AVAXUSDT', 'MATICUSDT',
'LINKUSDT', 'UNIUSDT', 'ATOMUSDT', 'ETCUSDT', 'LTCUSDT'}
# 在扫描前过滤主流币
if cfg.get('EXCLUDE_MAJOR_COINS', True):
symbols = [s for s in symbols if s not in MAJOR_COINS]
logger.info(f"排除主流币后,剩余 {len(symbols)} 个交易对")
2. 增加 TOP_N_SYMBOLS
在配置中增加 TOP_N_SYMBOLS 到 8:
TOP_N_SYMBOLS = 8 # 从5增加到8,给更多选择余地
3. 优化排序逻辑
增加成交量和波动率权重:
sorted_results = sorted(
filtered_results,
key=lambda x: (
x.get('signalScore', 0) * 10, # 信号得分权重最高
abs(x['changePercent']) * 2, # 涨跌幅权重
x.get('volume24h', 0) / 1000000, # 成交量权重(百万美元)
x.get('volatility', 0) * 100 # 波动率权重
),
reverse=True
)
📊 预期效果
优化前
- 扫描150个,可能包含主流币
- 最终选择5个
- 可能错过好机会
优化后
- 扫描150个,排除主流币,专注于山寨币
- 最终选择8个,给更多选择余地
- 减少错过好机会的概率
✅ 完成时间
2026-01-25