Strategi Stop Trailing Dinamis Berdasarkan ATR dan SMA

Penulis:ChaoZhang, Tanggal: 2024-03-11 11:55:21
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator ATR (Average True Range) dan indikator SMA (Simple Moving Average) untuk menerapkan sistem perdagangan stop trailing yang dinamis. Ketika harga berada di atas SMA, ia membuka posisi panjang dan menetapkan stop loss dinamis berdasarkan ATR. Harga stop loss akan terus naik seiring kenaikan harga. Ketika harga turun di bawah harga stop loss dinamis, posisi ditutup. Ide utama dari strategi ini adalah untuk mengunci keuntungan dan mengurangi penarikan di pasar tren menggunakan stop loss dinamis.

Prinsip Strategi

  1. Saat harga penutupan lebih besar dari SMA 50 hari, buka posisi panjang.
  2. Menghitung indikator ATR dengan periode 10, dikalikan dengan nilai kunci (default adalah 3) untuk mendapatkan rentang stop loss nLoss.
  3. Menghitung harga stop loss dinamis xATRTrailingStop, dengan nilai awal 0.
    • Bila harga penutupan dan harga penutupan sebelumnya sama-sama lebih besar dari harga stop loss sebelumnya, harga stop loss baru adalah harga stop loss sebelumnya yang lebih besar dan (harga penutupan - nLoss).
    • Bila harga penutupan dan harga penutupan sebelumnya keduanya lebih rendah dari harga stop loss sebelumnya, harga stop loss baru adalah harga stop loss sebelumnya yang lebih kecil dan (harga penutupan + nLoss).
    • Dalam kasus lain, harga stop loss baru adalah (harga penutupan - nLoss) atau (harga penutupan + nLoss).
  4. Ketika harga penutupan turun di bawah harga stop loss dinamis, tutup posisi.
  5. Titik stop loss ditandai dengan warna yang berbeda: hijau untuk stop loss panjang, merah untuk stop loss pendek, dan biru untuk kasus lain.

Analisis Keuntungan

  1. Mekanisme stop loss dinamis dapat melindungi keuntungan dan mengurangi risiko penurunan di pasar tren. Dibandingkan dengan stop loss tetap, stop loss dinamis lebih fleksibel dan dapat beradaptasi dengan kondisi pasar yang berbeda.
  2. Jarak stop loss dihitung berdasarkan indikator ATR. ATR dapat mencerminkan ukuran volatilitas pasar, sehingga jarak stop loss akan secara otomatis menyesuaikan dengan volatilitas kondisi pasar baru-baru ini.
  3. Menggunakan SMA sebagai dasar penilaian tren dapat menangkap pasar tren yang relatif jelas. membuka posisi panjang di atas SMA dapat campur tangan pada tahap awal tren dan bertujuan untuk ruang keuntungan yang lebih besar.
  4. Memungkinkan pengguna untuk menetapkan periode ATR dan parameter nilai kunci, yang dapat menyesuaikan parameter strategi secara fleksibel untuk menyesuaikan dengan karakteristik varietas dan siklus yang berbeda.

Analisis Risiko

  1. Di pasar yang tidak jelas atau berosilasi, strategi ini dapat mengalami pembukaan dan penutupan posisi yang sering, menyebabkan peningkatan biaya transaksi dan penurunan keuntungan.
  2. Strategi ini hanya memiliki logika panjang dan tidak dapat menghasilkan keuntungan dalam tren menurun, menghadapi risiko pasar sepihak.
  3. Stop loss point didasarkan pada perhitungan ATR. Ketika pasar berfluktuasi dengan keras, ruang stop loss mungkin terlalu besar, yang menyebabkan peningkatan risiko. Pertimbangkan untuk menetapkan rentang stop loss maksimum untuk mengontrol kerugian maksimum dari satu transaksi.
  4. Pemilihan parameter yang tidak tepat dapat menyebabkan kegagalan strategi. Misalnya, jika periode ATR terlalu kecil, itu dapat menyebabkan stop loss yang terlalu sensitif dan pemicu yang sering; jika terlalu besar, itu mungkin tidak menghentikan kerugian tepat waktu dan memperkuat kerugian.

Arah Optimalisasi

  1. Anda dapat membuka posisi pendek ketika harga jatuh di bawah SMA, dan juga menggunakan logika stop loss dinamis.
  2. Memperkenalkan manajemen posisi panjang dan pendek untuk menyesuaikan ukuran posisi sesuai dengan kekuatan tren. Meningkatkan posisi ketika tren kuat untuk meningkatkan pengembalian; Mengurangi posisi ketika tren lemah untuk mengendalikan risiko.
  3. Mengoptimalkan logika stop loss dan menetapkan rentang stop loss maksimum untuk mencegah kerugian yang berlebihan dalam situasi ekstrem. Pada saat yang sama, pertimbangkan untuk menetapkan titik mengambil keuntungan untuk secara aktif menutup posisi ketika pengembalian yang diharapkan tercapai, daripada menahannya sampai stop loss dipicu.
  4. Mengoptimalkan parameter dengan melewati kombinasi parameter yang berbeda untuk menemukan pengaturan parameter terbaik.
  5. Pertimbangkan untuk menambahkan lebih banyak kondisi penyaringan, seperti indikator volume perdagangan dan volatilitas, untuk menilai tren dan risiko dengan lebih baik dan meningkatkan keandalan sinyal.

Ringkasan

Strategi ini mengimplementasikan sistem perdagangan stop trailing yang dinamis berdasarkan indikator ATR dan SMA, yang dapat secara otomatis menyesuaikan posisi stop loss di pasar tren untuk melindungi keuntungan dan mengendalikan risiko. Logika strategi jelas dan memiliki keuntungan yang jelas, tetapi juga memiliki beberapa keterbatasan dan titik risiko. Melalui optimalisasi dan perbaikan yang wajar, seperti menambahkan logika pendek, mengoptimalkan manajemen posisi, menetapkan stop loss maksimum, dll., Kekuatan dan profitabilitas strategi dapat ditingkatkan lebih lanjut. Dalam aplikasi praktis, perlu menyesuaikan parameter strategi secara fleksibel sesuai dengan berbagai varietas dan siklus perdagangan, dan mengontrol risiko secara ketat. Secara umum, strategi ini memberikan ide yang layak untuk perdagangan kuantitatif dan layak untuk eksplorasi dan optimalisasi lebih lanjut.


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

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")

Lebih banyak