# 动态杠杆功能说明 ## 功能概述 根据信号质量动态调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。 ## 工作原理 ### 杠杆计算公式 ``` 动态杠杆 = 基础杠杆 + (信号强度 - 最小信号强度) × (最大杠杆 - 基础杠杆) / (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. **风险指标** - 监控最大回撤 - 确保高杠杆不会导致过度风险 ## 总结 动态杠杆功能可以根据信号质量自动调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。但需要注意: - ✅ **优点**:高质量信号可以获得更高收益 - ⚠️ **风险**:高杠杆会放大亏损,需要谨慎配置 - 💡 **建议**:从保守配置开始,根据实际效果逐步调整