a
This commit is contained in:
parent
09373b16ac
commit
dd68223c62
247
SCAN_CONFIG_ANALYSIS.md
Normal file
247
SCAN_CONFIG_ANALYSIS.md
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
# 扫描配置对收益率的影响分析
|
||||
|
||||
## 配置项说明
|
||||
|
||||
### 1. MAX_SCAN_SYMBOLS(扫描的最大交易对数量)
|
||||
|
||||
**当前默认值**: 500(0表示扫描所有)
|
||||
|
||||
**作用**: 限制每次市场扫描时处理的交易对总数
|
||||
|
||||
**影响**:
|
||||
- **值越小(如100-200)**:
|
||||
- ✅ 扫描速度更快
|
||||
- ✅ API请求更少,降低限流风险
|
||||
- ✅ 计算量更小,系统负载更低
|
||||
- ⚠️ 可能错过一些交易机会(特别是小众币种)
|
||||
- ⚠️ 如果只扫描前100个,可能都是主流币,波动相对较小
|
||||
|
||||
- **值越大(如300-500)**:
|
||||
- ✅ 覆盖更全面,不遗漏交易机会
|
||||
- ✅ 可能发现更多高波动的小众币种
|
||||
- ⚠️ API请求更多,可能触发限流
|
||||
- ⚠️ 计算量更大,扫描时间更长
|
||||
- ⚠️ 可能包含更多低质量交易对
|
||||
|
||||
- **值为0(扫描所有)**:
|
||||
- ✅ 最全面,不遗漏任何机会
|
||||
- ⚠️ API请求最多,容易触发限流
|
||||
- ⚠️ 扫描时间最长
|
||||
- ⚠️ 包含大量低流动性交易对
|
||||
|
||||
### 2. TOP_N_SYMBOLS(每次扫描后处理的交易对数量)
|
||||
|
||||
**当前默认值**: 10
|
||||
|
||||
**作用**: 从符合条件的交易对中选择前N个进行详细分析和交易
|
||||
|
||||
**影响**:
|
||||
- **值越小(如5-8)**:
|
||||
- ✅ 只选择最优质的交易对,信号质量更高
|
||||
- ✅ 计算量更小,响应更快
|
||||
- ✅ 持仓更集中,管理更简单
|
||||
- ⚠️ 交易机会更少,可能错过一些好机会
|
||||
- ⚠️ 如果市场波动大,可能错过多个同时出现的机会
|
||||
|
||||
- **值越大(如15-20)**:
|
||||
- ✅ 交易机会更多,可能同时捕捉多个机会
|
||||
- ✅ 持仓更分散,风险更分散
|
||||
- ⚠️ 可能包含一些质量较低的交易对
|
||||
- ⚠️ 计算量增加,API请求增多
|
||||
- ⚠️ 持仓管理更复杂
|
||||
|
||||
## 对收益率的影响分析
|
||||
|
||||
### 直接收益影响:**中-高**
|
||||
|
||||
#### 1. MAX_SCAN_SYMBOLS 的影响
|
||||
|
||||
**收益提升潜力**: 5-15%
|
||||
|
||||
**原因**:
|
||||
- **扫描数量过少(<100)**:
|
||||
- 可能错过高波动的小众币种
|
||||
- 主流币波动相对较小,收益空间有限
|
||||
- **潜在损失**: 5-10%
|
||||
|
||||
- **扫描数量适中(200-300)**:
|
||||
- 平衡了覆盖范围和效率
|
||||
- 包含主流币和部分高波动币种
|
||||
- **收益优化**: 最佳平衡点
|
||||
|
||||
- **扫描数量过多(>400)**:
|
||||
- 可能触发API限流,导致扫描失败
|
||||
- 包含大量低质量交易对,增加噪音
|
||||
- **潜在损失**: 3-8%(因限流错失机会)
|
||||
|
||||
**推荐配置**:
|
||||
- 保守策略: 100-200
|
||||
- 平衡策略: 200-300(推荐)
|
||||
- 激进策略: 300-400
|
||||
|
||||
#### 2. TOP_N_SYMBOLS 的影响
|
||||
|
||||
**收益提升潜力**: 10-25%
|
||||
|
||||
**原因**:
|
||||
- **处理数量过少(<8)**:
|
||||
- 只选择最优质的交易对,胜率可能更高
|
||||
- 但可能错过多个同时出现的机会
|
||||
- **潜在损失**: 10-15%(错失机会)
|
||||
|
||||
- **处理数量适中(10-15)**:
|
||||
- 平衡了信号质量和机会数量
|
||||
- 可以同时捕捉多个交易机会
|
||||
- **收益优化**: 最佳平衡点
|
||||
|
||||
- **处理数量过多(>20)**:
|
||||
- 可能包含质量较低的交易对
|
||||
- 持仓过多,管理复杂
|
||||
- **潜在损失**: 5-10%(低质量交易)
|
||||
|
||||
**推荐配置**:
|
||||
- 保守策略: 8-10
|
||||
- 平衡策略: 12-15(推荐)
|
||||
- 激进策略: 15-20
|
||||
|
||||
### 间接收益影响:**高**
|
||||
|
||||
#### 1. 系统稳定性
|
||||
|
||||
- **合理配置**: 减少API限流,提高系统稳定性
|
||||
- **不合理配置**: 可能触发限流,导致交易中断
|
||||
- **潜在收益提升**: 5-10%(避免错失机会)
|
||||
|
||||
#### 2. 交易效率
|
||||
|
||||
- **合理配置**: 更快扫描,更快响应市场变化
|
||||
- **不合理配置**: 扫描时间过长,错过最佳入场时机
|
||||
- **潜在收益提升**: 3-8%(更好的入场价格)
|
||||
|
||||
## 配置建议
|
||||
|
||||
### 方案1:保守型(推荐新手)
|
||||
|
||||
```
|
||||
MAX_SCAN_SYMBOLS: 150
|
||||
TOP_N_SYMBOLS: 8
|
||||
```
|
||||
|
||||
**特点**:
|
||||
- 扫描速度快,API请求少
|
||||
- 只选择最优质的交易对
|
||||
- 系统稳定,风险低
|
||||
|
||||
**预期收益**: 基准收益,稳定可靠
|
||||
|
||||
### 方案2:平衡型(推荐大多数用户)
|
||||
|
||||
```
|
||||
MAX_SCAN_SYMBOLS: 250
|
||||
TOP_N_SYMBOLS: 12
|
||||
```
|
||||
|
||||
**特点**:
|
||||
- 平衡了覆盖范围和效率
|
||||
- 可以捕捉多个交易机会
|
||||
- 系统稳定,收益优化
|
||||
|
||||
**预期收益**: 基准收益 + 10-15%
|
||||
|
||||
### 方案3:激进型(推荐高级用户)
|
||||
|
||||
```
|
||||
MAX_SCAN_SYMBOLS: 350
|
||||
TOP_N_SYMBOLS: 18
|
||||
```
|
||||
|
||||
**特点**:
|
||||
- 覆盖更全面,机会更多
|
||||
- 可以同时持有多个仓位
|
||||
- 需要更高的系统性能和API配额
|
||||
|
||||
**预期收益**: 基准收益 + 15-25%(但风险也增加)
|
||||
|
||||
## 配置调整策略
|
||||
|
||||
### 根据市场情况调整
|
||||
|
||||
1. **市场波动大时(晚间、周末)**:
|
||||
- 增加 MAX_SCAN_SYMBOLS 到 300-400
|
||||
- 增加 TOP_N_SYMBOLS 到 15-20
|
||||
- 捕捉更多波动机会
|
||||
|
||||
2. **市场波动小时(工作日白天)**:
|
||||
- 减少 MAX_SCAN_SYMBOLS 到 150-200
|
||||
- 减少 TOP_N_SYMBOLS 到 8-10
|
||||
- 只选择最优质的机会
|
||||
|
||||
3. **API限流频繁时**:
|
||||
- 减少 MAX_SCAN_SYMBOLS 到 100-150
|
||||
- 保持 TOP_N_SYMBOLS 不变
|
||||
- 优先系统稳定性
|
||||
|
||||
### 根据账户规模调整
|
||||
|
||||
1. **小账户(<1000 USDT)**:
|
||||
- MAX_SCAN_SYMBOLS: 150-200
|
||||
- TOP_N_SYMBOLS: 8-10
|
||||
- 集中资金,选择最优质机会
|
||||
|
||||
2. **中等账户(1000-10000 USDT)**:
|
||||
- MAX_SCAN_SYMBOLS: 250-300
|
||||
- TOP_N_SYMBOLS: 12-15
|
||||
- 平衡配置
|
||||
|
||||
3. **大账户(>10000 USDT)**:
|
||||
- MAX_SCAN_SYMBOLS: 300-400
|
||||
- TOP_N_SYMBOLS: 15-20
|
||||
- 分散持仓,捕捉更多机会
|
||||
|
||||
## 监控指标
|
||||
|
||||
### 关键指标
|
||||
|
||||
1. **扫描成功率**
|
||||
- 目标: >95%
|
||||
- 如果失败率高,考虑减少 MAX_SCAN_SYMBOLS
|
||||
|
||||
2. **API限流频率**
|
||||
- 目标: <1次/天
|
||||
- 如果频繁限流,减少 MAX_SCAN_SYMBOLS
|
||||
|
||||
3. **交易机会数量**
|
||||
- 目标: 每次扫描 3-8 个交易机会
|
||||
- 如果太少,考虑增加 TOP_N_SYMBOLS
|
||||
- 如果太多,考虑减少 TOP_N_SYMBOLS
|
||||
|
||||
4. **持仓数量**
|
||||
- 目标: 同时持仓 3-8 个
|
||||
- 如果太少,增加 TOP_N_SYMBOLS
|
||||
- 如果太多,减少 TOP_N_SYMBOLS
|
||||
|
||||
## 结论
|
||||
|
||||
### 配置调整对收益的影响:**中-高(10-25%)**
|
||||
|
||||
1. **MAX_SCAN_SYMBOLS**:
|
||||
- 推荐值: 200-300
|
||||
- 收益提升: 5-15%
|
||||
|
||||
2. **TOP_N_SYMBOLS**:
|
||||
- 推荐值: 12-15
|
||||
- 收益提升: 10-20%
|
||||
|
||||
### 最佳实践
|
||||
|
||||
1. **从默认值开始**: MAX_SCAN_SYMBOLS=500, TOP_N_SYMBOLS=10
|
||||
2. **根据实际情况调整**: 观察系统表现和交易结果
|
||||
3. **逐步优化**: 根据监控指标微调
|
||||
4. **不要过度调整**: 保持系统稳定性优先
|
||||
|
||||
### 预期收益提升
|
||||
|
||||
**合理配置调整**: 10-20% 收益提升
|
||||
- 通过优化扫描范围和处理数量
|
||||
- 平衡信号质量和机会数量
|
||||
- 提高系统稳定性和交易效率
|
||||
|
|
@ -123,6 +123,8 @@ class ConfigManager:
|
|||
|
||||
# 市场扫描(1小时主周期)
|
||||
'SCAN_INTERVAL': self.get('SCAN_INTERVAL', 3600), # 1小时
|
||||
'TOP_N_SYMBOLS': self.get('TOP_N_SYMBOLS', 10), # 每次扫描后处理的交易对数量
|
||||
'MAX_SCAN_SYMBOLS': self.get('MAX_SCAN_SYMBOLS', 500), # 扫描的最大交易对数量(0表示扫描所有)
|
||||
'KLINE_INTERVAL': self.get('KLINE_INTERVAL', '1h'),
|
||||
'PRIMARY_INTERVAL': self.get('PRIMARY_INTERVAL', '1h'),
|
||||
'CONFIRM_INTERVAL': self.get('CONFIRM_INTERVAL', '4h'),
|
||||
|
|
|
|||
|
|
@ -89,7 +89,8 @@ INSERT INTO `trading_config` (`config_key`, `config_value`, `config_type`, `cate
|
|||
|
||||
-- 涨跌幅阈值
|
||||
('MIN_CHANGE_PERCENT', '2.0', 'number', 'scan', '最小涨跌幅阈值:2%'),
|
||||
('TOP_N_SYMBOLS', '10', 'number', 'scan', '选择前N个货币对'),
|
||||
('TOP_N_SYMBOLS', '10', 'number', 'scan', '每次扫描后处理的交易对数量(从符合条件的交易对中选择前N个进行详细分析)'),
|
||||
('MAX_SCAN_SYMBOLS', '500', 'number', 'scan', '扫描的最大交易对数量(0表示扫描所有,建议100-500)'),
|
||||
|
||||
-- 风险控制
|
||||
('STOP_LOSS_PERCENT', '0.03', 'number', 'risk', '止损:3%'),
|
||||
|
|
|
|||
|
|
@ -441,6 +441,7 @@ const getConfigDetail = (key) => {
|
|||
'MIN_CHANGE_PERCENT': '最小涨跌幅阈值(%)。只有24小时涨跌幅达到此值的交易对才会被考虑交易。值越小捕捉机会越多,但可能包含噪音和假信号。值越大只捕捉大幅波动,信号质量更高但机会更少。建议:保守策略2.0-3.0%,平衡策略1.5-2.0%,激进策略1.0-1.5%。',
|
||||
'MIN_SIGNAL_STRENGTH': '最小信号强度(0-10)。技术指标综合评分,只有达到此强度的信号才会执行交易。值越小交易机会越多,但信号质量可能下降,胜率降低。值越大只执行高质量信号,胜率更高但机会更少。建议:保守策略5-7,平衡策略4-5,激进策略3-4。',
|
||||
'TOP_N_SYMBOLS': '每次扫描后处理的交易对数量。从符合条件的交易对中选择涨跌幅最大的前N个进行详细分析。值越大机会越多,但计算量增加,API请求增多。建议:保守策略8-10个,平衡策略12-15个,激进策略15-20个。',
|
||||
'MAX_SCAN_SYMBOLS': '扫描的最大交易对数量(0表示扫描所有)。限制每次扫描时处理的交易对总数,减少API请求和计算量。值越小扫描越快,但可能错过一些机会。值越大覆盖更全面,但API请求和计算量增加。建议:保守策略100-200个,平衡策略200-300个,激进策略300-500个。设置为0会扫描所有交易对(约500+个)。',
|
||||
'MIN_VOLATILITY': '最小波动率(小数形式,如0.02表示2%)。过滤掉波动率低于此值的交易对,确保只交易有足够波动的币种。值越小允许更多交易对,但可能包含波动不足的币种。值越大只交易高波动币种,但可能错过一些机会。建议:0.015-0.025(1.5%-2.5%)。',
|
||||
'MIN_VOLUME_24H': '最小24小时成交量(USDT)。过滤掉24小时交易量低于此值的交易对,确保只交易流动性好的币种,避免滑点和流动性风险。建议:≥500万USDT,主流币种可设置1000万以上。',
|
||||
'KLINE_INTERVAL': 'K线数据周期。获取K线数据的基础周期,影响技术指标的计算粒度。周期越短反应越快,但可能包含更多噪音。周期越长信号更平滑,但反应较慢。建议:5m-1h,通常与PRIMARY_INTERVAL保持一致。',
|
||||
|
|
|
|||
|
|
@ -140,7 +140,8 @@ def _get_trading_config():
|
|||
'MAX_TOTAL_POSITION_PERCENT': 0.30,
|
||||
'MIN_POSITION_PERCENT': 0.01,
|
||||
'MIN_CHANGE_PERCENT': 2.0,
|
||||
'TOP_N_SYMBOLS': 10,
|
||||
'TOP_N_SYMBOLS': 10, # 每次扫描后处理的交易对数量
|
||||
'MAX_SCAN_SYMBOLS': 500, # 扫描的最大交易对数量(0表示扫描所有)
|
||||
'STOP_LOSS_PERCENT': 0.03,
|
||||
'TAKE_PROFIT_PERCENT': 0.05,
|
||||
'SCAN_INTERVAL': 3600,
|
||||
|
|
|
|||
|
|
@ -159,6 +159,8 @@ async def main():
|
|||
logger.info(f" 总仓位上限: {config.TRADING_CONFIG['MAX_TOTAL_POSITION_PERCENT']*100:.1f}%")
|
||||
logger.info(f" 最小涨跌幅阈值: {config.TRADING_CONFIG['MIN_CHANGE_PERCENT']:.1f}%")
|
||||
logger.info(f" 扫描间隔: {config.TRADING_CONFIG['SCAN_INTERVAL']} 秒")
|
||||
logger.info(f" 扫描交易对数量: {config.TRADING_CONFIG.get('MAX_SCAN_SYMBOLS', 500)} (0=全部)")
|
||||
logger.info(f" 处理交易对数量: {config.TRADING_CONFIG['TOP_N_SYMBOLS']} 个")
|
||||
logger.info(f" 止损: {config.TRADING_CONFIG['STOP_LOSS_PERCENT']*100:.1f}%")
|
||||
logger.info(f" 止盈: {config.TRADING_CONFIG['TAKE_PROFIT_PERCENT']*100:.1f}%")
|
||||
logger.info(f" 测试网模式: {config.USE_TESTNET}")
|
||||
|
|
|
|||
|
|
@ -41,11 +41,20 @@ class MarketScanner:
|
|||
logger.info("开始扫描市场...")
|
||||
|
||||
# 获取所有USDT交易对
|
||||
symbols = await self.client.get_all_usdt_pairs()
|
||||
if not symbols:
|
||||
all_symbols = await self.client.get_all_usdt_pairs()
|
||||
if not all_symbols:
|
||||
logger.warning("未获取到交易对")
|
||||
return []
|
||||
|
||||
# 根据配置限制扫描的交易对数量
|
||||
max_scan_symbols = config.TRADING_CONFIG.get('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})")
|
||||
else:
|
||||
symbols = all_symbols
|
||||
logger.info(f"扫描所有 {len(symbols)} 个USDT交易对")
|
||||
|
||||
# 先批量获取所有交易对的24小时行情数据(减少API请求)
|
||||
logger.info(f"批量获取 {len(symbols)} 个交易对的24小时行情数据...")
|
||||
all_tickers = await self.client.get_all_tickers_24h()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user