Strategi Stop-Loss Moving Average yang Dinamis

Penulis:ChaoZhang, Tanggal: 2024-01-29
Tag:

img

Gambaran umum

Strategi ini mengadopsi gagasan stop trailing dinamis berdasarkan ATR dan harga ekstrem untuk menghitung garis stop loss panjang dan pendek. Dikombinasikan dengan gagasan Chandelier Exit, strategi ini menilai arah panjang/pendek berdasarkan stop loss line breakout. Ketika stop loss line pecah ke atas, itu dinilai sebagai bullish dan long entry. Ketika stop loss line pecah ke bawah, itu dinilai sebagai bearish dan short entry.

Strategi ini memiliki fungsi manajemen stop-loss dan penilaian sinyal masuk.

Logika Strategi

Strategi ini terdiri dari bagian-bagian utama berikut:

  1. Menghitung garis stop-loss panjang/pendek berdasarkan ATR

    Berdasarkan panjang periode ATR yang ditentukan pengguna dan multiplikator multip, ATR real-time dihitung. Kemudian garis stop-loss panjang/pendek dihitung dengan ATR dan harga ekstrim:

     longStop = Highest - ATR  
     shortStop = Lowest + ATR
    
  2. Menghakimi arah perdagangan dengan breakout

    Bandingkan garis stop-loss antara bar sebelumnya dan bar saat ini Jika garis stop-loss bar saat ini pecah, sinyal perdagangan dipicu:

     Long stop-loss line breakout upwards, long entry  
     Short stop-loss line breakout downwards, short entry   
    
  3. Setel stop loss dan take profit berdasarkan rasio risiko-imbalan

    Berdasarkan rasio risiko-manfaat yang ditentukan pengguna riskRewardRatio, jarak stop loss dan jarak take profit dihitung dari ATR. Stop loss order dan take profit order ditetapkan saat membuka posisi.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Stop Loss Penginderaan Dinamis

    Mengadopsi garis stop loss trailing yang dinamis membantu menghentikan kerugian tepat waktu dan mengendalikan risiko penurunan.

  2. Fungsi ganda

    Garis stop loss berfungsi sebagai alat manajemen stop loss dan hakim kondisi masuk, mengurangi kompleksitas strategi.

  3. Rasio risiko-manfaat yang dapat disesuaikan

    Menuntut keuntungan yang lebih tinggi dengan rasio risiko-balasan yang telah ditentukan.

  4. Mudah dimengerti dan diperluas

    Struktur sederhana, mudah dipahami dan dioptimalkan untuk perluasan.

Analisis Risiko

Beberapa risiko mungkin ada untuk strategi ini:

  1. Risiko dua arah

    Sebagai strategi perdagangan dua arah, ia mengambil risiko jangka panjang dan jangka pendek.

  2. ketergantungan pada parameter ATR

    Parameter ATR secara langsung mempengaruhi garis stop loss dan frekuensi trading. pengaturan yang tidak benar dapat mengakibatkan stop loss yang terlalu luas atau frekuensi trading yang terlalu tinggi.

  3. Adaptasi terhadap tren

    Strategi ini lebih cocok untuk skenario berkisar dengan pecah mendadak. Tidak cocok untuk skenario tren yang kuat.

Optimalisasi untuk mengatasi risiko di atas adalah:

  1. Menggabungkan indikator tren

    Menggabungkan MA dan indikator tren lainnya untuk menentukan tren pasar, menghindari perdagangan melawan tren.

  2. Optimasi parameter

    Mengoptimalkan kombinasi parameter ATR dan rasio risiko-manfaat untuk stop loss yang lebih wajar dan mengambil keuntungan.

  3. Filter tambahan

    Menambahkan volume perdagangan atau volatilitas filter kondisi untuk memastikan kualitas perdagangan.

Arahan Optimasi

Masih ada ruang untuk mengoptimalkan strategi lebih lanjut:

  1. Mengintegrasikan pembelajaran mesin

    Mengadopsi model pembelajaran mesin untuk memprediksi tren harga untuk akurasi entri yang lebih tinggi.

  2. Membangun portofolio bebas risiko dengan Opsi

    Menggunakan Opsi untuk lindung nilai fluktuasi harga aset dasar dan membangun portofolio arbitrage bebas risiko.

  3. Arbitrage multi-aset lintas pasar

    Melakukan arbitrase statistik lintas pasar yang berbeda dan kelas aset untuk mendapatkan alfa yang stabil.

  4. Perdagangan algoritma

    Leverage mesin perdagangan algoritma untuk efektif backtest strategi dan perdagangan.

Kesimpulan

Artikel ini secara menyeluruh menganalisis strategi perdagangan kuantitatif berdasarkan stop loss trailing dinamis. Strategi ini secara bersamaan memiliki fungsi manajemen stop loss dan penentuan sinyal perdagangan, yang secara efektif mengendalikan risiko. Kami juga membahas keuntungan, risiko potensial dan optimasi masa depan dari strategi ini. Ini adalah strategi perdagangan yang sangat praktis yang layak untuk penelitian dan aplikasi lebih lanjut.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")


Lebih banyak