208 lines
5.4 KiB
Markdown
208 lines
5.4 KiB
Markdown
# 动态杠杆功能说明
|
||
|
||
## 功能概述
|
||
|
||
根据信号质量动态调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。
|
||
|
||
## 工作原理
|
||
|
||
### 杠杆计算公式
|
||
|
||
```
|
||
动态杠杆 = 基础杠杆 + (信号强度 - 最小信号强度) × (最大杠杆 - 基础杠杆) / (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-8:10倍杠杆
|
||
- 信号强度9:12-13倍杠杆
|
||
- 信号强度10:15倍杠杆
|
||
|
||
### 2. 平衡配置(推荐)
|
||
|
||
```sql
|
||
USE_DYNAMIC_LEVERAGE = true
|
||
LEVERAGE = 10
|
||
MAX_LEVERAGE = 20
|
||
MIN_SIGNAL_STRENGTH = 7
|
||
```
|
||
|
||
- 信号强度7:10倍杠杆
|
||
- 信号强度8:13倍杠杆
|
||
- 信号强度9:17倍杠杆
|
||
- 信号强度10:20倍杠杆
|
||
|
||
### 3. 激进配置(需谨慎)
|
||
|
||
```sql
|
||
USE_DYNAMIC_LEVERAGE = true
|
||
LEVERAGE = 10
|
||
MAX_LEVERAGE = 25
|
||
MIN_SIGNAL_STRENGTH = 7
|
||
```
|
||
|
||
- 信号强度7:10倍杠杆
|
||
- 信号强度8:15倍杠杆
|
||
- 信号强度9:20倍杠杆
|
||
- 信号强度10:25倍杠杆
|
||
|
||
## 代码实现
|
||
|
||
### 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. **风险指标**
|
||
- 监控最大回撤
|
||
- 确保高杠杆不会导致过度风险
|
||
|
||
## 总结
|
||
|
||
动态杠杆功能可以根据信号质量自动调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。但需要注意:
|
||
|
||
- ✅ **优点**:高质量信号可以获得更高收益
|
||
- ⚠️ **风险**:高杠杆会放大亏损,需要谨慎配置
|
||
- 💡 **建议**:从保守配置开始,根据实际效果逐步调整
|