Strategi SMA-ATR Dynamic Trailing Stop

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

img

Gambaran umum

Strategi ini adalah strategi perdagangan jangka panjang yang menetapkan stop loss trailing dinamis berdasarkan Simple Moving Average (SMA) dan Average True Range (ATR).

Logika Strategi

Strategi ini menggunakan SMA 200 untuk menentukan arah tren utama, dan mengatur garis stop loss secara dinamis dengan ATR 14, mewujudkan stop loss trailing yang dinamis. Secara khusus, sinyal beli dipicu ketika harga penutupan menembus SMA 200 ditambah ATR 14. Pemecahan ini berarti pasar saat ini tetap dalam tren kenaikan. Sinyal stop loss dipicu ketika harga penutupan menembus SMA 200 dikurangi ATR 14.

Analisis Keuntungan

Strategi ini menggabungkan keuntungan dari kedua indikator SMA dan ATR. SMA 200 menyaring kebisingan pasar dan mengunci ke arah tren utama. ATR 14 menetapkan garis stop loss berdasarkan volatilitas dua minggu terakhir, mewujudkan fungsi stop loss trailing yang dinamis. Ini mencapai profitabilitas berkelanjutan dalam tren, sementara juga mengendalikan penarikan secara efektif. Keuntungan keseluruhan adalah:

  1. Rasio laba rugi yang lebih tinggi. Mengikuti tren dan mengendalikan risiko mengarah pada rasio laba rugi yang lebih tinggi.

  2. Pengurangan yang dapat dikontrol. Stop loss dinamis dengan ATR mengurangi dampak dari kejutan pasar sporadis.

  3. Hanya dua parameter menyeimbangkan risiko dan pengembalian, menghindari overfit.

Analisis Risiko

Beberapa risiko dari strategi ini harus diperhatikan:

  1. Risiko pembalikan tren: Strategi itu sendiri tidak dapat mengidentifikasi pembalikan tren, yang dapat menyebabkan kerugian besar jika perubahan tren tiba-tiba muncul.

  2. SMA memiliki beberapa efek keterlambatan yang tidak dapat mencerminkan perubahan tren secara instan.

  3. Risiko parameter ATR. pengaturan parameter ATR yang tidak tepat dapat mempengaruhi kinerja strategi.

Solusi:

  1. Tambahkan indikator lain untuk menentukan pembalikan tren, misalnya MACD.
  2. Uji kombinasi parameter yang berbeda untuk menemukan keseimbangan yang optimal.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dari aspek berikut:

  1. Uji kombinasi yang berbeda dari parameter SMA dan ATR untuk menemukan yang optimal.

  2. Tambahkan indikator teknis untuk menilai pembalikan, misalnya MACD.

  3. Mengoptimalkan mekanisme stop loss dengan trailing stop loss, moving stop loss dll.

  4. Gabungkan faktor fundamental untuk menghindari membeli saham dengan fundamental yang lemah.

Kesimpulan

Strategi ini mengintegrasikan metode pelacakan tren dan manajemen risiko dinamis untuk mengoptimalkan stop loss dan mengambil keuntungan selama periode kepemilikan yang panjang. Strategi ini memiliki rasio keuntungan / kerugian yang tinggi, penarikan yang dapat dikontrol dan profil risiko / pengembalian yang seimbang. Namun, strategi ini juga memiliki beberapa risiko pembalikan tren dan kesulitan dalam pengoptimalan parameter. Secara keseluruhan, strategi sederhana dan efektif ini memberikan ide perdagangan jangka panjang yang layak untuk pengujian lebih lanjut dan optimasi 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 banyak