Strategi trailing stop loss ATR dinamis


Tanggal Pembuatan: 2023-12-11 14:24:18 Akhirnya memodifikasi: 2023-12-11 14:24:18
menyalin: 0 Jumlah klik: 755
1
fokus pada
1621
Pengikut

Strategi trailing stop loss ATR dinamis

Ringkasan

Strategi ini adalah mekanisme tracking stop loss yang dirancang berdasarkan indikator ATR, yang dapat menyesuaikan posisi stop loss secara real-time, sambil menjamin stop loss, untuk mendapatkan keuntungan yang lebih besar.

Prinsip Strategi

Strategi ini menggunakan ATR siklus 5 dan ATR siklus 10 untuk membangun dua lapisan dinamika untuk melacak stop loss. Ketika harga bergerak ke arah yang menguntungkan, lapisan cepat akan memulai pelacakan untuk pertama kalinya, mengencangkan posisi stop loss; Ketika harga bergeser untuk jangka pendek, posisi stop loss dari lapisan lambat dapat menghindari stop loss prematur.

Secara khusus, jarak stop loss untuk tingkat cepat adalah 0,5 kali 5 siklus ATR, dan jarak stop loss untuk tingkat lambat adalah 3 kali 10 siklus ATR. Ketika tingkat cepat naik, sinyal beli dihasilkan ketika tingkat cepat turun, dan sinyal jual dihasilkan ketika tingkat cepat turun dan melewati tingkat lambat. Garis stop loss juga diperbarui secara real-time dan digambar di bawah kurva harga.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah dapat secara dinamis menyesuaikan posisi stop loss, dengan asumsi jaminan stop loss, untuk mendapatkan keuntungan maksimal. Dibandingkan dengan jarak stop loss tetap, garis stop loss ATR dinamis dapat disesuaikan dengan tingkat fluktuasi pasar, mengurangi kemungkinan stop loss diaktifkan.

Selain itu, desain ATR dua lapisan dapat menyeimbangkan sensitivitas penghentian kerusakan. Lapisan cepat merespons dengan cepat, dan lapisan lambat dapat memfilter kebisingan jangka pendek untuk menghindari penghentian kerusakan dini.

Analisis risiko

Risiko utama dari strategi ini adalah apakah pengaturan jarak tempuh yang masuk akal. Jika ATR terlalu besar, stop loss tidak akan mengikuti harga. Jika ATR terlalu kecil, kemungkinan akan terganggu oleh kebisingan jangka pendek.

Selain itu, dalam kondisi konsolidasi, ATR lebih kecil, lebih dekat dengan garis stop loss, dan lebih mudah untuk sering dihentikan. Oleh karena itu, strategi ini lebih cocok untuk varietas dengan tingkat fluktuasi tertentu.

Arah optimasi

Kombinasi parameter ATR siklus yang berbeda dapat dicoba untuk mencari keseimbangan terbaik. Selain itu, dapat dipertimbangkan untuk digunakan bersama dengan indikator lain, seperti indikator tren yang menilai tahap pasar, sehingga secara dinamis menyesuaikan ukuran kelipatan ATR.

Kemungkinan untuk menggantikan indikator ATR juga dapat dipelajari. Mengubah ATR menjadi nilai indikator seperti DKVOL, HRANGE atau persentase ATR, mungkin bisa mendapatkan efek stop loss yang lebih baik.

Meringkaskan

Strategi ini didesain berdasarkan indikator ATR dengan mekanisme pelacakan dinamis dua tingkat, untuk mendapatkan keuntungan yang lebih besar dan menghindari kerugian berlebihan. Strategi ini dapat menyesuaikan parameter secara fleksibel sesuai dengan karakteristik pasar dan varietas, sehingga mencapai efek penghentian yang optimal.

Kode Sumber Strategi
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)

/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and        //
// different interpretation.                        //
// This is a fast-reacting system and is better     //
// suited for higher volatility markets             //
//////////////////////////////////////////////////////

SC = input(close, "Source", input.source)

// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer)  // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float)  // ATR Factor
SL1 = AF1 * atr(AP1)  // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))

// Slow Trail //
AP2 = input(10, "Slow ATR period", input.integer)  // ATR Period
AF2 = input(3, "Slow ATR multiplier", input.float)  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))

// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2

// Signals //
Bull = barssince(Green) < barssince(Red)

Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)

TS1 = plot(Trail1, "Fast Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2, display=display.none)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.new(color.green, 90) : color.new(color.red, 90))

plotcolor = input(true, "Paint color on chart", input.bool)

bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")

if Sell
    strategy.close("Buy")