Strategi purata bergerak stop-loss dinamik

Penulis:ChaoZhang, Tarikh: 2024-01-29 15:52:43
Tag:

img

Ringkasan

Strategi ini mengamalkan idea hentian yang dinamik berdasarkan ATR dan harga yang melampau untuk mengira garis stop-loss yang panjang dan pendek. Digabungkan dengan idea Chandelier Exit, ia menilai arah panjang / pendek berdasarkan penembusan garis stop-loss. Apabila garis stop-loss pecah ke atas, ia dinilai sebagai kenaikan dan masuk panjang. Apabila garis stop-loss pecah ke bawah, ia dinilai sebagai penurunan dan masuk pendek.

Strategi ini mempunyai kedua-dua pengurusan stop-loss dan fungsi penilaian isyarat masuk.

Logika Strategi

Strategi ini terdiri daripada bahagian utama berikut:

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

    Berdasarkan panjang tempoh ATR yang ditakrifkan pengguna dan banyak pengganda, ATR masa nyata dikira. Kemudian garis stop-loss panjang/pendek dikira dengan ATR dan harga ekstrem:

     longStop = Highest - ATR  
     shortStop = Lowest + ATR
    
  2. Menghakimi arah dagangan dengan pecah

    Bandingkan garis stop-loss antara bar sebelumnya dan bar semasa.

     Long stop-loss line breakout upwards, long entry  
     Short stop-loss line breakout downwards, short entry   
    
  3. Tetapkan stop loss dan ambil keuntungan berdasarkan nisbah risiko-balasan

    Berdasarkan nisbah risiko-balasan yang ditakrifkan oleh pengguna riskRewardRatio, jarak stop loss dan jarak mengambil keuntungan dikira dari ATR. Perintah stop loss dan mengambil keuntungan ditetapkan semasa membuka kedudukan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Penghentian kerugian dinamik

    Mengguna pakai garis stop loss yang dinamik membantu menghentikan kerugian tepat pada masanya dan mengawal risiko penurunan.

  2. Fungsi berganda

    Garis stop loss berfungsi sebagai alat pengurusan stop loss dan hakim keadaan kemasukan, mengurangkan kerumitan strategi.

  3. Nisbah risiko-balasan yang boleh disesuaikan

    Menjaring keuntungan yang lebih tinggi dengan nisbah risiko-balasan yang telah ditentukan.

  4. Mudah difahami dan diperluaskan

    Struktur mudah, mudah difahami dan dioptimumkan untuk pengembangan.

Analisis Risiko

Beberapa risiko mungkin wujud untuk strategi ini:

  1. Risiko dua hala

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

  2. Kebergantungan parameter ATR

    Parameter ATR memberi kesan langsung kepada garis stop loss dan kekerapan perdagangan. Tetapan yang tidak betul boleh mengakibatkan stop loss yang terlalu luas atau kekerapan perdagangan yang terlalu tinggi.

  3. Kebolehsesuaian trend

    Strategi ini lebih sesuai untuk senario yang terhad dengan penembusan tiba-tiba.

Pengoptimuman untuk menangani risiko di atas adalah:

  1. Menggabungkan penunjuk trend

    Menggabungkan MA dan penunjuk trend lain untuk menentukan trend pasaran, mengelakkan perdagangan terhadap trend.

  2. Pengoptimuman Parameter

    Mengoptimumkan gabungan parameter ATR dan nisbah risiko-balasan untuk Stop Loss dan mengambil keuntungan yang lebih munasabah.

  3. Penapis tambahan

    Tambah penapis keadaan jumlah dagangan atau turun naik untuk memastikan kualiti dagangan.

Arahan pengoptimuman

Masih ada ruang untuk mengoptimumkan lagi strategi:

  1. Menggabungkan pembelajaran mesin

    Mengambil model pembelajaran mesin untuk meramalkan trend harga untuk ketepatan kemasukan yang lebih tinggi.

  2. Membina portfolio bebas risiko dengan Pilihan

    Menggunakan Pilihan untuk lindung nilai turun naik harga aset asas dan membina portfolio arbitraj bebas risiko.

  3. Arbitraj pelbagai aset rentas pasaran

    Melakukan arbitrage statistik merentasi pasaran dan kelas aset yang berbeza untuk mendapatkan alfa yang stabil.

  4. Perdagangan algoritma

    Leverage enjin dagangan algoritma untuk menguji strategi dan perdagangan secara cekap.

Kesimpulan

Artikel ini menganalisis secara menyeluruh strategi perdagangan kuantitatif berdasarkan kehilangan berhenti yang dinamik. Strategi ini pada masa yang sama mempunyai fungsi pengurusan kehilangan berhenti dan penentuan isyarat perdagangan, yang berkesan mengawal risiko. Kami juga membincangkan kelebihan, risiko yang berpotensi dan pengoptimuman masa depan strategi. Ini adalah strategi perdagangan yang sangat praktikal yang bernilai penyelidikan dan penerapan 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 lanjut