auto_trade_sys/DYNAMIC_LEVERAGE.md
薇薇安 6d2498b717 a
2026-01-17 01:28:39 +08:00

5.4 KiB
Raw Blame History

动态杠杆功能说明

功能概述

根据信号质量动态调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。

工作原理

杠杆计算公式

动态杠杆 = 基础杠杆 + (信号强度 - 最小信号强度) × (最大杠杆 - 基础杠杆) / (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-810倍杠杆
  • 信号强度912-13倍杠杆
  • 信号强度1015倍杠杆

2. 平衡配置(推荐)

USE_DYNAMIC_LEVERAGE = true
LEVERAGE = 10
MAX_LEVERAGE = 20
MIN_SIGNAL_STRENGTH = 7
  • 信号强度710倍杠杆
  • 信号强度813倍杠杆
  • 信号强度917倍杠杆
  • 信号强度1020倍杠杆

3. 激进配置(需谨慎)

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

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,  # 使用动态杠杆
    ...
)

监控建议

建议监控以下指标:

  1. 平均杠杆倍数

    • 观察实际使用的杠杆分布
    • 确保在合理范围内
  2. 信号强度分布

    • 观察信号强度的分布情况
    • 如果大部分信号强度都很高,可能需要调整策略
  3. 收益对比

    • 对比启用/禁用动态杠杆的收益
    • 评估动态杠杆的实际效果
  4. 风险指标

    • 监控最大回撤
    • 确保高杠杆不会导致过度风险

总结

动态杠杆功能可以根据信号质量自动调整杠杆倍数,让高质量信号使用更高杠杆来最大化收益。但需要注意:

  • 优点:高质量信号可以获得更高收益
  • ⚠️ 风险:高杠杆会放大亏损,需要谨慎配置
  • 💡 建议:从保守配置开始,根据实际效果逐步调整