Pharos
Contract

exchange.SetMarginLevel()

设置杠杆倍数(仅限合约交易)。

语法

python
exchange.SetMarginLevel(level)

参数

参数类型必填说明
levelint杠杆倍数(如 1, 5, 10, 20, 50, 100)

返回值

无返回值

示例

基础用法

python
# 设置10倍杠杆
exchange.SetMarginLevel(10)
Log("已设置10倍杠杆")

获取当前杠杆

python
current_level = exchange.GetMarginLevel()
Log(f"当前杠杆: {current_level}倍")

动态调整杠杆

python
def adjust_leverage_by_volatility():
    """根据波动率动态调整杠杆"""
    # 获取K线计算波动率
    records = exchange.GetRecords('1h', 24)
    prices = [r['Close'] for r in records]
    
    # 计算标准差
    avg = sum(prices) / len(prices)
    variance = sum((p - avg) ** 2 for p in prices) / len(prices)
    std_dev = variance ** 0.5
    volatility = (std_dev / avg) * 100
    
    # 根据波动率设置杠杆
    if volatility > 5:
        leverage = 5  # 高波动,低杠杆
    elif volatility > 3:
        leverage = 10
    elif volatility > 2:
        leverage = 20
    else:
        leverage = 50  # 低波动,高杠杆
    
    exchange.SetMarginLevel(leverage)
    Log(f"波动率: {volatility:.2f}%, 设置杠杆: {leverage}倍")

adjust_leverage_by_volatility()

计算持仓所需保证金

python
def calculate_required_margin(price, amount, leverage):
    """计算开仓所需保证金"""
    position_value = price * amount
    required_margin = position_value / leverage
    
    Log(f"仓位价值: {position_value:.2f} USDT")
    Log(f"所需保证金: {required_margin:.2f} USDT")
    
    # 检查账户余额
    account = exchange.GetAccount()
    if account['Balance'] >= required_margin:
        Log("✓ 余额充足")
        return True
    else:
        Log(f"✗ 余额不足,缺少: {required_margin - account['Balance']:.2f} USDT")
        return False

# 检查开仓1个BTC所需保证金(10倍杠杆)
exchange.SetMarginLevel(10)
ticker = exchange.GetTicker()
calculate_required_margin(ticker['Last'], 1, 10)

安全杠杆策略

python
def safe_leverage_strategy():
    """保守的杠杆策略"""
    account = exchange.GetAccount()
    total_balance = account['Balance'] + account['FrozenBalance']
    
    # 根据账户余额设置杠杆
    if total_balance < 1000:
        leverage = 3  # 小资金低杠杆
    elif total_balance < 10000:
        leverage = 5
    elif total_balance < 50000:
        leverage = 10
    else:
        leverage = 20  # 大资金适度杠杆
    
    exchange.SetMarginLevel(leverage)
    Log(f"账户余额: {total_balance:.2f}, 设置杠杆: {leverage}倍")

safe_leverage_strategy()

计算爆仓价

python
def calculate_liquidation_price(entry_price, leverage, direction='long'):
    """计算爆仓价格"""
    if direction == 'long':
        # 多单爆仓价 = 开仓价 * (1 - 1/杠杆)
        liq_price = entry_price * (1 - 1/leverage)
    else:
        # 空单爆仓价 = 开仓价 * (1 + 1/杠杆)
        liq_price = entry_price * (1 + 1/leverage)
    
    Log(f"开仓价: {entry_price:.2f}")
    Log(f"杠杆: {leverage}倍")
    Log(f"方向: {direction}")
    Log(f"爆仓价: {liq_price:.2f}")
    
    return liq_price

# 计算50倍杠杆多单的爆仓价
exchange.SetMarginLevel(50)
calculate_liquidation_price(50000, 50, 'long')

注意事项

  1. 风险警告:高杠杆意味着高风险,可能导致快速爆仓
  2. 交易所限制:不同交易所支持的最大杠杆不同
  3. 合约类型:永续合约和交割合约的杠杆设置可能不同
  4. 持仓后调整:部分交易所不允许有持仓时调整杠杆
python
# 推荐:开仓前设置杠杆
exchange.SetMarginLevel(10)  # 先设置杠杆
exchange.SetDirection("buy")
exchange.Buy(50000, 1)  # 再开仓
  1. 保守建议
    • 新手建议使用 1-5 倍杠杆
    • 中级交易者使用 5-10 倍杠杆
    • 高级交易者最高使用 20 倍杠杆
    • 避免使用超过 50 倍的极端杠杆

相关方法