Strategi pengurusan kedudukan leverage tinggi untuk mengelakkan panggilan margin


Tarikh penciptaan: 2023-12-26 16:21:58 Akhirnya diubah suai: 2023-12-26 16:21:58
Salin: 1 Bilangan klik: 693
1
fokus pada
1621
Pengikut

Strategi pengurusan kedudukan leverage tinggi untuk mengelakkan panggilan margin

Gambaran keseluruhan

Strategi ini mewujudkan pengurusan risiko untuk mengelakkan tambahan jaminan dengan menetapkan leverage yang tinggi dan syarat premium tambahan, dan menutup kedudukan tepat pada masanya ketika pasaran bergolak dengan ketara.

Prinsip Strategi

  1. Tetapkan operasi leverage tinggi, seperti 4 kali ganda kadar leverage
  2. Menetapkan garisan tambahan, seperti $25,000
  3. Strategi menghentikan kedudukan apabila faedah berada di bawah margin tambahan
  4. Strategi untuk melonggarkan semua kedudukan apabila faedah terus menurun yang mencetuskan isyarat faedah tambahan

Dengan seting di atas, anda boleh menghentikan kerugian tepat pada masanya apabila turun naik hak dan kepentingan yang cepat disebabkan oleh turun naik pasaran yang besar, dan mengelakkan risiko premium tambahan.

Analisis kelebihan

  1. Rasio leverage yang boleh diatur secara fleksibel mengikut kemampuan individu untuk mengawal risiko kerugian tunggal
  2. Mekanisme penambahan jaminan boleh menghalang akaun daripada terbongkar
  3. Mengelakkan risiko maksimum dengan menghentikan kerugian tepat pada masanya dalam operasi dengan leverage tinggi

Analisis risiko

  1. Leverage tinggi meningkatkan keuntungan dan risiko
  2. Perlu ada garis jaminan tambahan yang munasabah untuk dipadankan dengan garis hentikan kerugian
  3. Stop loss mudah dirampas, perlu strategi stop loss yang optimum

Risiko boleh dikurangkan dengan cara menyesuaikan nisbah leverage yang sesuai, menetapkan garis jaminan tambahan yang sepadan dengan garis hentikan, dan mengoptimumkan strategi hentikan kerugian.

Arah pengoptimuman

  1. Menggunakan Indeks Trend untuk Mengelakkan Perpindahan
  2. Mengoptimumkan mod penghentian kerosakan untuk mengelakkan penghentian kerosakan
  3. Menetapkan zon tanpa dagangan untuk mengelakkan pembinaan gudang dalam tempoh tertentu
  4. Menggabungkan algoritma pembelajaran mesin, parameter penyesuaian dinamik

ringkaskan

Strategi ini mewujudkan pengurusan risiko dengan seting leverage yang tinggi dan tambahan margin, yang dapat mencegah akaun terbakar. Tetapi leverage yang tinggi juga meningkatkan risiko, yang memerlukan pengurangan risiko lebih lanjut melalui kaedah penilaian trend, pengoptimuman henti kerugian, dan kawalan masa perdagangan.

Kod sumber strategi
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=4
//@author=Daveatt

// Breakout on 2H high/low break Strategy

SystemName = "Leverage Strategy"
TradeId = "🙏"

InitCapital             = 100000
InitPosition            = 1
UseMarginCall           = input(true, title="Use Margin Call?")
MarginValue             = input(25000, title="Margin Value", type=input.float)
// use 1 for no leverage
// use 0.1 for be underleveraged and bet 1/10th of a pip value
// use any value > 1 for full-degen mode
UseLeverage             = input(true, title="Use Leverage")
LeverageValue           = input(4, title="Leverage mult (1 for no leverage)", minval=0.1, type=input.float)
// Risk Management
UseRiskManagement       = input(true, title="Use Risk Management?")
// ticks = 1/10th of a pip value
StopLoss                = input(5, title="Stop Loss in ticks value", type=input.float)
TakeProfit              = input(500, title="Take Profit in ticks value", type=input.float)

InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = false
CalcOnTick = true
DefaultQtyType = strategy.cash
DefaultQtyValue = strategy.cash
Currency = currency.USD
Precision = 2
Overlay=false
MaxBarsBack=3000

strategy
 (
 title=SystemName, 
 shorttitle=SystemName, 
 overlay=Overlay 
 )

//////////////////////////// UTILITIES ///////////////////////////

f_print(_txt, _condition) =>

    var _lbl = label(na)
    label.delete(_lbl)

    if _condition
        // saving the candle where we got rekt :(
        _index = barssince(_condition)
        _lbl := label.new(bar_index - _index, highest(100), _txt, xloc.bar_index, yloc.price, size = size.normal, style=label.style_labeldown)

//////////////////////////// STRATEGY LOGIC ///////////////////////////

// Date filterigng
_Date       = input(true, title="[LABEL] DATE")
FromYear = input(2019, "From Year", minval=1900),   FromMonth = input(12, "From Month", minval=1, maxval=12),    FromDay = input(1, "From Day", minval=1, maxval=31)
ToYear = input(2019, "To Year", minval=1900),       ToMonth = input(12, "To Month", minval=1, maxval=12),        ToDay = input(9, "To Day", minval=1, maxval=31)
FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00)     
ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59)
TradeDateIsAllowed = true

// non-repainting security version
four_hours_H     = security(syminfo.tickerid, '240', high[1], lookahead=true)
four_hours_L     = security(syminfo.tickerid, '240', low[1], lookahead=true)
buy_trigger     = crossover(close, four_hours_H)
sell_trigger    = crossunder(close, four_hours_L)

// trend states
since_buy  = barssince(buy_trigger)
since_sell = barssince(sell_trigger)
buy_trend  = since_sell > since_buy
sell_trend = since_sell < since_buy 

change_trend = (buy_trend and sell_trend[1]) or (sell_trend and buy_trend[1])

// plot(four_hours_H, title="4H High",  linewidth=2, color=#3c91c2, style=plot.style_linebr, transp=0,
//  show_last=1, trackprice=true)
// plot(four_hours_L, title="4H Low",  linewidth=2, color=#3c91c2, style=plot.style_linebr, transp=0,
//  show_last=1, trackprice=true)

plot(strategy.equity, color=color.blue, linewidth=3, title="Strategy Equity")

// get the entry price
entry_price = valuewhen(buy_trigger or sell_trigger, close, 0)

// SL and TP

SL_price    = buy_trend ? entry_price - StopLoss    : entry_price + StopLoss
is_SL_hit   = buy_trend ? crossunder(low, SL_price) : crossover(high, SL_price) 

TP_price    = buy_trend ? entry_price + TakeProfit  : entry_price - TakeProfit
is_TP_hit   = buy_trend ? crossover(high, TP_price) : crossunder(low, TP_price)

//  Account Margin Management:
f_account_margin_call_cross(_amount)=>
    _return = crossunder(strategy.equity, _amount)

f_account_margin_call(_amount)=>
    _return = strategy.equity <= _amount

is_margin_call_cross    = f_account_margin_call_cross(MarginValue)
is_margin_call          = f_account_margin_call(MarginValue)

plot(strategy.equity, title='strategy.equity', transp=0, linewidth=4)
//plot(barssince(is_margin_call ), title='barssince(is_margin_call)', transp=100)

can_trade = iff(UseMarginCall, not is_margin_call, true)
trade_size  = InitPosition * (not UseLeverage ? 1 : LeverageValue)

// We can take the trade if not liquidated/margined called/rekt

buy_final   = can_trade and buy_trigger and TradeDateIsAllowed
sell_final  = can_trade and sell_trigger and TradeDateIsAllowed

close_long  = buy_trend  and 
 (UseRiskManagement and (is_SL_hit or is_TP_hit)) or sell_trigger

close_short = sell_trend and 
 (UseRiskManagement and (is_SL_hit or is_TP_hit)) or buy_trigger

strategy.entry(TradeId + ' B', long=true, qty=trade_size, when=buy_final)
strategy.entry(TradeId + ' S', long=false, qty=trade_size, when=sell_final)
strategy.close(TradeId + ' B', when=close_long)
strategy.close(TradeId + ' S', when=close_short)

// FULL DEGEN MODE ACTIVATED
// Margin called - Broker closing your account
strategy.close_all(when=is_margin_call)

if UseMarginCall and is_margin_call_cross
    f_print("☠️REKT☠️", is_margin_call_cross)