ATR Trailing Stops Strategi

Penulis:ChaoZhang, Tanggal: 2023-10-09 16:59:57
Tag:

Gambaran umum

Strategi ini menetapkan garis stop loss dinamis berdasarkan indikator Average True Range (ATR) untuk melacak perubahan harga saham, untuk melindungi stop loss sambil memaksimalkan pengambilan keuntungan.

Logika Strategi

Strategi ini terutama dilaksanakan melalui langkah-langkah berikut:

  1. Menghitung indikator ATR, periode ATR ditetapkan oleh parameter nATRPeriod, default menjadi 5;

  2. Menghitung garis stop loss berdasarkan nilai ATR, besar stop loss ditetapkan oleh parameter nATRMultip, default 3,5 kali ATR;

  3. Ketika harga naik, jika lebih tinggi dari garis stop loss sebelumnya, sesuaikan garis stop loss ke harga dikurangi besarnya stop loss; ketika harga turun, jika lebih rendah dari garis stop loss sebelumnya, sesuaikan garis stop loss ke bawah ke harga ditambah besarnya stop loss;

  4. Menghakimi apakah harga menembus garis stop loss, jika menembus, mengirim sinyal beli atau jual;

  5. Masukkan posisi panjang atau pendek berdasarkan sinyal stop loss line breakout, dan tutup posisi ketika harga menyentuh stop loss line lagi.

Ketika harga naik, garis stop loss akan terus bergerak ke atas untuk mengunci keuntungan. Ketika harga turun, garis stop loss akan terus bergerak ke bawah untuk menghentikan kerugian. Indikator ATR dapat mencerminkan fluktuasi harga dengan lebih akurat. Mengatur secara dinamis garis stop loss berdasarkan ATR dapat menghindari stop loss yang terlalu agresif atau terlalu konservatif.

Analisis Keuntungan

  • Secara dinamis menyesuaikan garis stop loss untuk stop loss yang tepat waktu untuk menghindari ekspansi kerugian
  • Pengaturan garis stop loss relatif lancar untuk menghindari stop loss prematur
  • Menggunakan indikator ATR untuk menghitung ukuran stop loss yang lebih wajar berdasarkan volatilitas terbaru
  • Jalur stop loss untuk mengunci keuntungan secara efektif

Analisis Risiko

  • Pengaturan parameter ATR perlu hati-hati, periode ATR yang terlalu pendek dapat menyebabkan fluktuasi garis stop loss yang berlebihan, terlalu lama mungkin tidak mencerminkan perubahan harga dalam waktu
  • Ukuran stop loss harus ditetapkan sesuai dengan volatilitas saham tertentu, nilai yang terlalu besar atau kecil akan mempengaruhi kinerja strategi
  • Trailing stop loss dapat mengurangi margin keuntungan dengan menghentikan keuntungan sebelum kenaikan harga lainnya
  • Penyesuaian posisi yang sering dapat menyebabkan biaya perdagangan yang lebih tinggi

Parameter dapat dioptimalkan dengan menyesuaikan periode ATR dan stop loss magnitude untuk menemukan keseimbangan optimal antara stop loss dan trailing.

Arahan Optimasi

  • Mengoptimalkan parameter periode ATR untuk membuat perubahan garis stop loss mengikuti fluktuasi harga lebih dekat
  • Mengoptimalkan parameter stop loss untuk stop loss yang lebih masuk akal
  • Tambahkan indikator lain untuk memfilter waktu masuk
  • Hanya pergi panjang ketika tren naik yang jelas muncul
  • Pertimbangkan untuk menambahkan mekanisme re-entry untuk berpartisipasi dalam saham dengan stop loss tetapi harapan terus meningkat

Ringkasan

Strategi ini merealisasikan stop loss dan profit taking selama holding melalui line stop loss trailing ATR yang dinamis. Dibandingkan dengan titik stop loss tetap, ia lebih beradaptasi dengan fluktuasi harga, menghindari stop loss yang terlalu agresif atau terlalu konservatif. Indikator ATR membuat penyesuaian line stop loss lebih ditargetkan. Tetapi parameter dan strategi re-entry perlu dioptimalkan lebih lanjut untuk mengurangi stop yang tidak perlu dan memperluas margin keuntungan.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@okadoke
////////////////////////////////////////////////////////////
// Based on Average True Range Trailing Stops Strategy by HPotter
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
////////////////////////////////////////////////////////////
strategy(title="ATR Trailing Stops Strategy", shorttitle="ATRTSS", overlay = true, 
  initial_capital=100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type="percent", commission_value=0.0)
  
nATRPeriod      = input(5, "ATR Period")
nATRMultip      = input(3.5, "ATR Multiplier")
useShorts       = input(false, "Test w/Shorts?")
daysBackMax     = input(defval = 360, title = "Max Days Back to Test", minval = 0)
daysBackMin     = input(defval = 0, title = "Min Days Back to Test", minval = 0)
msBackMax       = 1000 * 60 * 60 * 24 * daysBackMax
msBackMin       = 1000 * 60 * 60 * 24 * daysBackMin

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = na
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 = na 
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)))
        
color = pos == -1 ? red: pos == 1 ? green : blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

isWithinTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and (msBackMin == 0 or (time < (timenow - msBackMin)))

buy     = crossover(close, xATRTrailingStop)
sell    = crossunder(close, xATRTrailingStop)

strategy.entry("LONG", long=true, when=buy and isWithinTimeBounds)
strategy.close("LONG", when=sell and isWithinTimeBounds)
strategy.entry("SHORT", long=false, when=useShorts and sell and isWithinTimeBounds)
strategy.close("SHORT", when=useShorts and buy and isWithinTimeBounds)



Lebih banyak