Contract
exchange.SetMarginLevel()
设置杠杆倍数(仅限合约交易)。
语法
python
exchange.SetMarginLevel(level)参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| level | int | 是 | 杠杆倍数(如 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')注意事项
- 风险警告:高杠杆意味着高风险,可能导致快速爆仓
- 交易所限制:不同交易所支持的最大杠杆不同
- 合约类型:永续合约和交割合约的杠杆设置可能不同
- 持仓后调整:部分交易所不允许有持仓时调整杠杆
python
# 推荐:开仓前设置杠杆
exchange.SetMarginLevel(10) # 先设置杠杆
exchange.SetDirection("buy")
exchange.Buy(50000, 1) # 再开仓- 保守建议:
- 新手建议使用 1-5 倍杠杆
- 中级交易者使用 5-10 倍杠杆
- 高级交易者最高使用 20 倍杠杆
- 避免使用超过 50 倍的极端杠杆
相关方法
- GetMarginLevel - 获取当前杠杆倍数
- SetPositionMode - 设置仓位模式(全仓/逐仓)
- SetContractType - 设置合约类型
- SetDirection - 设置开平仓方向
- GetPosition - 获取持仓信息
- GetAccount - 获取账户信息