5.4 KiB
5.4 KiB
动态杠杆功能说明
功能概述
根据信号质量动态调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。
工作原理
杠杆计算公式
动态杠杆 = 基础杠杆 + (信号强度 - 最小信号强度) × (最大杠杆 - 基础杠杆) / (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 中已添加:
('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. 保守配置(推荐新手)
USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 15
MIN_SIGNAL_STRENGTH = 7
- 信号强度7-8:10倍杠杆
- 信号强度9:12-13倍杠杆
- 信号强度10:15倍杠杆
2. 平衡配置(推荐)
USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 20
MIN_SIGNAL_STRENGTH = 7
- 信号强度7:10倍杠杆
- 信号强度8:13倍杠杆
- 信号强度9:17倍杠杆
- 信号强度10:20倍杠杆
3. 激进配置(需谨慎)
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
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
# 根据信号强度计算动态杠杆(高质量信号使用更高杠杆)
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, # 使用动态杠杆
...
)
监控建议
建议监控以下指标:
-
平均杠杆倍数
- 观察实际使用的杠杆分布
- 确保在合理范围内
-
信号强度分布
- 观察信号强度的分布情况
- 如果大部分信号强度都很高,可能需要调整策略
-
收益对比
- 对比启用/禁用动态杠杆的收益
- 评估动态杠杆的实际效果
-
风险指标
- 监控最大回撤
- 确保高杠杆不会导致过度风险
总结
动态杠杆功能可以根据信号质量自动调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。但需要注意:
- ✅ 优点:高质量信号可以获得更高收益
- ⚠️ 风险:高杠杆会放大亏损,需要谨慎配置
- 💡 建议:从保守配置开始,根据实际效果逐步调整