Strategi ATR Trailing Stop

Penulis:ChaoZhang, Tanggal: 2023-09-26 20:23:13
Tag:

Ringkasan: Strategi stop trailing ATR adalah strategi perdagangan yang secara dinamis menetapkan tingkat stop loss berdasarkan indikator Average True Range (ATR).

Logika Strategi

Strategi ini menghitung indikator AVERAGE (rata-rata pergerakan harga) dan band atas/bawah DIFF/DIFFLOW berdasarkan nilai ATR, membentuk saluran perdagangan.

Secara khusus, pertama-tama menghitung rata-rata bergerak sederhana dan indikator ATR. Band atas DIFF dan band bawah DIFFLOW kemudian dihitung dengan mengalikan nilai ATR dengan koefisien. Ini membentuk saluran perdagangan yang dibatasi oleh DIFF dan DIFFLOW. Ketika harga melanggar band atas, posisi panjang diambil. Ketika harga melanggar band bawah, posisi pendek diambil. Selain itu, tingkat stop loss bergerak secara dinamis dengan nilai ATR. Ini memungkinkan untuk berhenti adaptif.

Dengan demikian strategi dapat terus-menerus pergi panjang / pendek untuk menangkap keuntungan dalam tren utama, sambil menggunakan ATR trailing stop untuk mengendalikan risiko.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Stop dinamis berbasis ATR menyesuaikan volatilitas pasar, menghindari stop terlalu dekat atau terlalu jauh.

  2. Saluran perdagangan bertujuan untuk menangkap rata-rata kemunduran dalam tren.

  3. Berdagang tren terus menerus tanpa memprediksi terobosan. Mengikuti tren untuk keuntungan yang lebih baik.

  4. Parameter dan aturan sederhana, mudah dipahami dan otomatis.

  5. Penggunaan modal yang tinggi, perdagangan terus menerus memberikan lebih banyak peluang keuntungan.

Risiko dan Peningkatan

Beberapa risiko yang perlu dipertimbangkan:

  1. Koefisien ATR yang besar menyebabkan berhenti terlalu jauh, gagal mengendalikan risiko.

  2. Whipsaws di pasar range-bound memicu sering berhenti.

  3. Potensi kerugian ketika harga berbalik setelah awal breakout.

  4. Puncakan yang besar dapat membuat stop tidak efektif.

Optimasi yang mungkin:

  1. Mengoptimalkan parameter ATR untuk menemukan keseimbangan yang tepat antara melacak volatilitas dan mencegah berhenti berlebihan.

  2. Tambahkan indikator tren, hanya perdagangan istirahat ke arah tren. Hindari perdagangan kontra-tren.

  3. Uji parameter secara individual untuk setiap instrumen untuk menemukan nilai optimal.

  4. Optimalkan masuknya, pertimbangkan masuknya di saluran tengah.

  5. Meningkatkan ukuran posisi sambil mengendalikan total risiko/drawdown.

Kesimpulan

Strategi ATR trailing stop berdagang terus menerus dalam tren sambil mengelola risiko secara dinamis. Ini cocok untuk instrumen yang tidak stabil dan memberikan pemanfaatan modal yang baik. Optimalisasi parameter dan menambahkan filter dapat lebih memperbaiki kinerja. Secara keseluruhan strategi tren yang sederhana dan praktis.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(1, type=input.float, minval=0, title="Length")
mullow = input(2, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  
    strategy.entry("SALJ", strategy.short, when=bear_cross)
    strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Lebih banyak