
Ringkasan
Strategi ini menggabungkan indikator ATR (Average True Range) dan SMA (Simple Moving Average) untuk mewujudkan sistem perdagangan yang melacak stop loss dinamis. Saat harga di atas SMA, ketika banyak pesanan dibuka, sementara stop loss dinamis berbasis ATR ditetapkan, harga stop loss akan terus meningkat seiring kenaikan harga. Saat harga turun, stop loss dinamis ditutup. Gagasan utama strategi ini adalah bahwa dalam keadaan tren, manfaatkan stop loss dinamis untuk mengunci keuntungan dan mengurangi penarikan balik.
Prinsip Strategi
- Perhitungan SMA 50 hari, ketika harga penutupan lebih besar dari SMA 50 hari.
- Perhitungan ATR, ATR periode 10, kalikan dengan nilai kunci ((default 3) untuk mendapatkan stop loss nLoss.
- Perhitungan harga stop loss dinamis xATRTrailingStop, dengan nilai awal 0。
- Ketika harga penutupan dan harga penutupan sebelumnya lebih besar dari harga stop loss sebelumnya, harga stop loss baru adalah nilai yang lebih besar dari harga stop loss sebelumnya dan harga penutupan-nLoss.
- Ketika harga penutupan dan harga penutupan sebelumnya lebih kecil dari harga stop loss sebelumnya, harga stop loss baru adalah nilai yang lebih kecil dari harga stop loss sebelumnya dan harga penutupan + nLoss.
- Dalam kasus lain, harga stop loss baru adalah ((harga tutup - nLoss) atau ((harga tutup + nLoss) ).
- Pada saat harga penutupan jatuh di bawah harga stop loss dinamis.
- Stop loss ditandai dengan warna yang berbeda, multi head stop loss berwarna hijau, headless stop loss berwarna merah, dan lainnya berwarna biru.
Analisis Keunggulan
- Mekanisme stop loss dinamis dapat melindungi keuntungan dalam situasi tren dan mengurangi risiko penarikan balik. Dibandingkan dengan stop loss tetap, stop loss dinamis lebih fleksibel dan dapat beradaptasi dengan kondisi pasar yang berbeda.
- Stop loss margin didasarkan pada indikator ATR, ATR dapat mencerminkan dengan baik ukuran volatilitas pasar, sehingga jarak stop loss akan disesuaikan secara otomatis dengan volatilitas tren terkini, memperbesar ruang stop loss saat volatilitas meningkat, memperkecil ruang stop loss saat volatilitas berkurang.
- Dengan menggunakan SMA sebagai dasar penilaian tren, dapat menangkap situasi tren yang relatif jelas. Dengan membuka lebih banyak pesanan di atas SMA, dapat melakukan intervensi pada awal tren, dan mendapatkan ruang keuntungan yang lebih besar.
- Memungkinkan pengguna untuk mengatur ATR dan parameter nilai kunci, dan dapat menyesuaikan parameter kebijakan secara fleksibel untuk menyesuaikan dengan karakteristik varietas dan siklus yang berbeda.
Analisis risiko
- Dalam situasi tren yang tidak jelas atau bergejolak, strategi ini dapat terjadi dalam situasi sering membuka posisi kosong, yang menyebabkan peningkatan biaya perdagangan dan penurunan keuntungan.
- Strategi ini hanya melakukan multi logika, tidak bisa mendapatkan keuntungan dalam tren turun, menghadapi risiko pasar satu sisi. Anda dapat mempertimbangkan untuk menambahkan logika shorting, untuk melakukan perdagangan dua arah.
- Stop loss point didasarkan pada perhitungan ATR, di saat pasar berfluktuasi secara dramatis, ruang stop loss mungkin terlalu besar, menyebabkan peningkatan risiko. Anda dapat mempertimbangkan untuk mengatur margin stop loss maksimum untuk mengendalikan kerugian maksimum dalam satu transaksi.
- Pilihan parameter yang tidak tepat dapat menyebabkan kegagalan strategi. Misalnya, pemilihan siklus ATR yang terlalu kecil dapat menyebabkan stop loss yang terlalu sensitif dan sering dipicu. Terlalu besar mungkin tidak dapat menghentikan stop loss tepat waktu dan memperbesar kerugian.
Arah optimasi
- Dengan menambahkan logika shorting, Anda juga bisa mendapatkan keuntungan dalam tren turun, meningkatkan fleksibilitas strategi. Anda dapat membuka posisi kosong ketika harga jatuh di bawah SMA, juga menggunakan logika stop loss dinamis.
- Memperkenalkan manajemen posisi kosong, menyesuaikan ukuran posisi sesuai dengan intensitas tren. Meningkatkan posisi saat tren kuat, meningkatkan keuntungan; mengurangi posisi saat tren lemah, mengendalikan risiko.
- Mengoptimalkan logika stop loss, mengatur stop loss maksimum untuk mencegah kerugian yang berlebihan dalam situasi ekstrem. Selain itu, pertimbangkan untuk mengatur stop loss, dan aktifkan posisi kosong setelah mencapai keuntungan yang diharapkan, bukan terus memegang sampai stop loss.
- Optimasi parameter, mencari pengaturan parameter yang optimal dengan menjelajahi kombinasi parameter yang berbeda. Metode optimasi cerdas seperti algoritma genetik dapat digunakan untuk meningkatkan efisiensi optimasi.
- Pertimbangkan untuk menambahkan lebih banyak kriteria filter, seperti volume perdagangan, volatilitas, dan indikator lainnya untuk menilai tren dan risiko dengan lebih baik dan meningkatkan keandalan sinyal.
Meringkaskan
Strategi ini didasarkan pada indikator ATR dan SMA untuk mewujudkan sistem perdagangan tracking stop loss yang dinamis, yang dapat secara otomatis menyesuaikan posisi stop loss dalam situasi tren, untuk melindungi keuntungan dan mengendalikan risiko. Logika strategi jelas, keunggulan jelas, tetapi juga ada beberapa keterbatasan dan titik risiko. Dengan optimasi dan perbaikan yang masuk akal, seperti menambahkan logika kosong, mengoptimalkan manajemen posisi, dan mengatur stop loss maksimum, strategi ini dapat ditingkatkan lebih lanjut.
Kode Sumber Strategi
/*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")