auto_trade_sys/docs/DYNAMIC_LEVERAGE.md
薇薇安 86b85c2609 a
2026-01-25 11:19:39 +08:00

208 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 动态杠杆功能说明
## 功能概述
根据信号质量动态调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。
## 工作原理
### 杠杆计算公式
```
动态杠杆 = 基础杠杆 + (信号强度 - 最小信号强度) × (最大杠杆 - 基础杠杆) / (10 - 最小信号强度)
```
### 示例
假设配置:
- 基础杠杆10倍
- 最大杠杆20倍
- 最小信号强度7
| 信号强度 | 计算过程 | 动态杠杆 |
|---------|---------|---------|
| 7 | 10 + (7-7) × (20-10) / (10-7) = 10 | 10x |
| 8 | 10 + (8-7) × (20-10) / (10-7) = 13.3 | 13x |
| 9 | 10 + (9-7) × (20-10) / (10-7) = 16.7 | 17x |
| 10 | 10 + (10-7) × (20-10) / (10-7) = 20 | 20x |
## 配置参数
### 数据库配置
`backend/database/init.sql` 中已添加:
```sql
('USE_DYNAMIC_LEVERAGE', 'true', 'boolean', 'strategy', '是否启用动态杠杆(根据信号强度调整杠杆倍数)'),
('MAX_LEVERAGE', '20', 'number', 'strategy', '最大杠杆倍数(动态杠杆上限)'),
```
### 配置说明
- **USE_DYNAMIC_LEVERAGE**: 是否启用动态杠杆
- `true`: 启用,根据信号强度动态调整杠杆
- `false`: 禁用始终使用基础杠杆LEVERAGE
- **LEVERAGE**: 基础杠杆倍数默认10倍
- 当信号强度 = 最小信号强度时使用
- 当动态杠杆禁用时使用
- **MAX_LEVERAGE**: 最大杠杆倍数默认20倍
- 动态杠杆的上限
- 即使信号强度为10也不会超过此值
- **MIN_SIGNAL_STRENGTH**: 最小信号强度默认7
- 低于此强度的信号使用基础杠杆
- 高于此强度的信号按比例增加杠杆
## 收益影响分析
### 收益放大效果
假设:
- 账户余额100 USDT
- 仓位比例5%
- 基础杠杆10倍
- 最大杠杆20倍
- 信号强度10/10
**使用固定杠杆10倍**
- 仓位价值100 × 5% = 5 USDT
- 保证金5 / 10 = 0.5 USDT
- 如果盈利5%收益5 × 5% = 0.25 USDT
**使用动态杠杆20倍**
- 仓位价值100 × 5% = 5 USDT
- 保证金5 / 20 = 0.25 USDT
- 如果盈利5%收益5 × 5% = 0.25 USDT相同
- **但使用更少的保证金,可以开更多仓位**
或者保持保证金不变:
- 保证金0.5 USDT与固定杠杆相同
- 仓位价值0.5 × 20 = 10 USDT是固定杠杆的2倍
- 如果盈利5%收益10 × 5% = 0.5 USDT是固定杠杆的2倍
### 风险提示
⚠️ **重要提示**
- 杠杆越高,风险越大
- 高杠杆会放大亏损
- 建议:
- 保守策略MAX_LEVERAGE = 15
- 平衡策略MAX_LEVERAGE = 20
- 激进策略MAX_LEVERAGE = 25需谨慎
## 使用建议
### 1. 保守配置(推荐新手)
```sql
USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 15
MIN_SIGNAL_STRENGTH = 7
```
- 信号强度7-810倍杠杆
- 信号强度912-13倍杠杆
- 信号强度1015倍杠杆
### 2. 平衡配置(推荐)
```sql
USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 20
MIN_SIGNAL_STRENGTH = 7
```
- 信号强度710倍杠杆
- 信号强度813倍杠杆
- 信号强度917倍杠杆
- 信号强度1020倍杠杆
### 3. 激进配置(需谨慎)
```sql
USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 25
MIN_SIGNAL_STRENGTH = 7
```
- 信号强度710倍杠杆
- 信号强度815倍杠杆
- 信号强度920倍杠杆
- 信号强度1025倍杠杆
## 代码实现
### 1. RiskManager.calculate_dynamic_leverage()
位置:`trading_system/risk_manager.py`
```python
def calculate_dynamic_leverage(self, signal_strength: int) -> int:
"""
根据信号强度计算动态杠杆倍数
信号强度越高,杠杆倍数越高,以最大化收益
"""
# 获取配置参数
use_dynamic_leverage = self.config.get('USE_DYNAMIC_LEVERAGE', True)
base_leverage = self.config.get('LEVERAGE', 10)
max_leverage = self.config.get('MAX_LEVERAGE', 20)
min_signal_strength = self.config.get('MIN_SIGNAL_STRENGTH', 7)
# 如果未启用动态杠杆,返回基础杠杆
if not use_dynamic_leverage:
return int(base_leverage)
# 计算动态杠杆...
return dynamic_leverage
```
### 2. Strategy 中使用动态杠杆
位置:`trading_system/strategy.py`
```python
# 根据信号强度计算动态杠杆(高质量信号使用更高杠杆)
dynamic_leverage = self.risk_manager.calculate_dynamic_leverage(signal_strength)
# 开仓时使用动态杠杆
position = await self.position_manager.open_position(
symbol=symbol,
change_percent=change_percent,
leverage=dynamic_leverage, # 使用动态杠杆
...
)
```
## 监控建议
建议监控以下指标:
1. **平均杠杆倍数**
- 观察实际使用的杠杆分布
- 确保在合理范围内
2. **信号强度分布**
- 观察信号强度的分布情况
- 如果大部分信号强度都很高,可能需要调整策略
3. **收益对比**
- 对比启用/禁用动态杠杆的收益
- 评估动态杠杆的实际效果
4. **风险指标**
- 监控最大回撤
- 确保高杠杆不会导致过度风险
## 总结
动态杠杆功能可以根据信号质量自动调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。但需要注意:
-**优点**:高质量信号可以获得更高收益
- ⚠️ **风险**:高杠杆会放大亏损,需要谨慎配置
- 💡 **建议**:从保守配置开始,根据实际效果逐步调整