Strategi SMA-ATR Dinamic Trailing Stop

Penulis:ChaoZhang, Tarikh: 2024-02-06 10:06:29
Tag:

img

Ringkasan

Strategi ini adalah strategi perdagangan jangka panjang yang menetapkan stop loss yang dinamik berdasarkan Purata Bergerak Sederhana (SMA) dan Julat Benar Purata (ATR).

Logika Strategi

Memasuki panjang apabila harga penutupan melintasi di atas SMA 200 ditambah ATR 14, menutup kedudukan apabila harga penutupan melintasi di bawah SMA 200 tolak ATR 14. Strategi ini menggunakan SMA 200 untuk menentukan arah trend utama, dan menetapkan garis stop loss secara dinamik dengan ATR 14, mewujudkan stop loss yang dinamik. Khususnya, isyarat beli dipicu apabila harga penutupan menembusi SMA 200 ditambah ATR 14. Penembusan ini bermaksud pasaran semasa kekal dalam trend menaik. Isyarat stop loss dipicu apabila harga penutupan menembusi SMA 200 tolak ATR 14. Penembusan ini bermaksud trend menaik terputus.

Analisis Kelebihan

Strategi ini menggabungkan kelebihan kedua-dua penunjuk SMA dan ATR. SMA 200 menapis bunyi bising pasaran dan mengunci ke arah trend utama. ATR 14 menetapkan garis stop loss berdasarkan turun naik dua minggu terakhir, merealisasikan fungsi stop loss trailing dinamik. Ini mencapai keuntungan yang berterusan dalam trend, sementara juga mengawal penarikan dengan berkesan.

  1. Rasio keuntungan / kerugian yang lebih tinggi. Mengikuti trend dan mengawal risiko membawa kepada nisbah keuntungan / kerugian yang lebih tinggi.

  2. Pengurangan yang boleh dikawal. Stop loss dinamik dengan ATR mengurangkan kesan kejutan pasaran yang sporadis.

  3. Hanya dua parameter menyeimbangkan risiko dan pulangan, mengelakkan terlalu banyak.

Analisis Risiko

Beberapa risiko strategi ini harus dibincangkan:

  1. Risiko pembalikan trend. Strategi itu sendiri tidak dapat mengenal pasti pembalikan trend, yang boleh membawa kepada kerugian besar jika perubahan trend tiba-tiba muncul.

  2. SMA mempunyai beberapa kesan yang tidak dapat mencerminkan perubahan trend dengan serta-merta.

  3. Risiko parameter ATR. Tetapan parameter ATR yang tidak betul boleh mempengaruhi prestasi strategi.

Penyelesaian:

  1. Tambah penunjuk lain untuk menentukan pembalikan trend, contohnya MACD.
  2. Uji kombinasi parameter yang berbeza untuk mencari keseimbangan yang optimum.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dari aspek berikut:

  1. Uji kombinasi parameter SMA dan ATR yang berbeza untuk mencari yang optimum.

  2. Tambah lebih banyak penunjuk teknikal untuk menilai pembalikan, contohnya MACD.

  3. Mengoptimumkan mekanisme Stop Loss dengan Stop Loss Trailing, Stop Loss Moving dan lain-lain

  4. Gabungkan faktor asas untuk mengelakkan membeli saham dengan asas yang lemah.

Kesimpulan

Strategi ini mengintegrasikan pengesanan trend dan kaedah pengurusan risiko dinamik untuk mengoptimumkan stop loss dan mengambil keuntungan semasa tempoh memegang yang panjang. Ia mempunyai nisbah keuntungan / kerugian yang tinggi, pengeluaran yang boleh dikawal dan profil risiko / pulangan yang seimbang. Tetapi ia juga mempunyai beberapa risiko pembalikan trend dan kesukaran dalam pengoptimuman parameter. Secara keseluruhan, strategi yang mudah dan berkesan ini menyediakan idea perdagangan jangka panjang yang layak untuk ujian dan pengoptimuman lanjut untuk perdagangan kuantitatif.


/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA+ATR Strategie", overlay=true)

// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")

// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)

// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr

// Variable zum Speichern des Eintrittspreises
var float entryPrice = na

// Kauf- und Verkaufssignale
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    entryPrice := close // Speichere den Eintrittspreis

if (sellCondition)
    // Nur wenn ein Kauf stattgefunden hat
    if not na(entryPrice)
        // Berechne die Performance seit dem Kaufsignal
        performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
        // Anzeigen der Performance
        // Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
        plColor = performanceSinceBuy >= 0 ? color.green : color.red
        // Anzeigen der Performance in der entsprechenden Farbe
        plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
        label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
        
    // Schließe den Trade und setze den Eintrittspreis zurück
    strategy.close("Buy")
    entryPrice := na

// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")

Lebih lanjut