Strategi ini menggunakan indikator ATR untuk mengatur titik stop loss dinamis dan menyesuaikan posisi stop loss berdasarkan fluktuasi harga, untuk mengendalikan risiko.
Strategi ini pertama-tama menilai apakah 5EMA melintasi di atas 20EMA untuk pergi panjang. Setelah masuk, ia menghitung kelipatan ATR dari harga masuk ke harga saat ini menggunakan indikator ATR, dan menetapkan posisi stop loss pada 1,5ATR di bawah harga masuk. Saat harga naik, posisi stop loss secara bertahap ditingkatkan untuk meningkatkan keuntungan posisi.
Secara khusus, strategi mendefinisikan variabel berikut:
Setelah masuk, ia menghitung atr_ref sebagai nilai ATR saat ini, dan atr_div sebagai kelipatan ATR dari harga masuk ke harga saat ini. Kemudian menetapkan posisi atr_down, atr_current dan atr_up berdasarkan atr_div. Harga stop loss stop_price ditetapkan pada 1,5ATR di bawah harga masuk.
Ketika harga naik, dengan membandingkan harga saat ini, jika nilai rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-
Jika harga naik di atas 3ATR dari harga masuk, itu akan sebagian menutup posisi untuk mengunci keuntungan, dan mengatur tookProfit untuk benar. Setelah itu jika harga terus naik, itu akan terus meningkatkan stop loss. Ketika stop loss dipicu, itu memeriksa tookProfit - jika sudah mengambil keuntungan parsial sebelumnya, itu hanya akan menutup posisi yang tersisa; jika tidak menutup posisi penuh.
Menggunakan indikator ATR untuk menyesuaikan stop loss secara dinamis dapat menetapkan jarak stop yang wajar berdasarkan volatilitas pasar.
Ikuti tren sambil membatasi kerugian. Stop loss akan ditingkatkan secara bertahap untuk mengumpulkan keuntungan.
Mekanisme mengambil keuntungan parsial mengunci beberapa keuntungan dan mengurangi risiko. Stop loss terus meningkat untuk memungkinkan keuntungan untuk berjalan.
Indikator ATR tidak sensitif terhadap pembalikan tajam dan celah.
EMA tidak dapat menentukan pembalikan tren, dapat memasuki posisi baru pada pembalikan tren.
Kemungkinan tinggi kerugian setelah mengambil keuntungan parsial.
Parameter perlu dioptimalkan lebih lanjut, 1,5ATR berhenti dan 3ATR mengambil keuntungan harus disesuaikan untuk produk yang berbeda.
Pertimbangkan untuk menambahkan indikator stop loss lainnya seperti Donchian Channel untuk mengkompensasi ATR lag.
Uji rata-rata bergerak yang berbeda atau tambahkan MACD dll untuk menilai pembalikan tren.
Mengoptimalkan rasio keuntungan parsial dan frekuensi untuk produk yang berbeda.
Optimasi parameter pada kelipatan ATR untuk stop dan take profit.
Kinerja tes selama tren lemah, dapat menonaktifkan strategi selama tren lemah.
Strategi ini memiliki logika yang jelas untuk menggunakan ATR untuk manajemen stop loss yang dinamis yang merupakan kekuatan terbesarnya. Namun, ATR itu sendiri memiliki keterbatasan seperti tertinggal. Menambahkan indikator stop dan tren lainnya akan memperbaikinya. Juga mengambil keuntungan parsial membutuhkan optimasi di seluruh produk. Secara keseluruhan memberikan gagasan manajemen stop loss berbasis ATR tetapi membutuhkan optimasi dan peningkatan lebih lanjut.
/*backtest start: 2022-10-03 00:00:00 end: 2023-10-09 00:00:00 period: 1d basePeriod: 1h 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/ // © ekinbasarkomur //@version=5 strategy("[EKIN] ATR Exit Strategy", overlay=true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = true) // Simple EMA tracking fastEMA = ta.ema(close, 5) slowEMA = ta.ema (close, 20) atr = ta.atr(14) // We define entry price for future reference var float entry_price = na // We define stop and take profit for future calculations var float stop_price = na var float take_profit_price = na // We define atr limtim its here var float atr_down = na var float atr_up = na var float atr_current = na var float atr_ref = na avg = (low + high) / 2 // Conditions enterCondition = ta.crossover(fastEMA, slowEMA) var bool tookProfit = false timePeriod = time >= timestamp(syminfo.timezone, 2021, 12, 15, 0, 0) InTrade = strategy.position_size > 0 // Go long if conditions are met if (enterCondition and timePeriod and not InTrade) // Calculate and update variables entry_price := avg atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1.5)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) stop_price := (entry_price - (atr_ref * 1.5)) take_profit_price := (entry_price + (atr_ref * 3)) strategy.order("buy", strategy.long, qty = 2) // Enter here if in position if InTrade or tookProfit stopCondition = avg < stop_price takeProfitCondition = avg > take_profit_price if avg < atr_down stopCondition := true // Move stop price and exit price if price for each atr price increase if avg > atr_up if tookProfit atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) // Take half of the investment if current price is 3 atr higher than entry price if (takeProfitCondition and timePeriod and InTrade and not tookProfit) strategy.order("take_half_profit", strategy.short, qty = 1) tookProfit := true // Exit position if conditions are met and reset the variables if (stopCondition and timePeriod and InTrade) if tookProfit strategy.order("exit", strategy.short, qty = 1) else strategy.order("stop_loss", strategy.short, qty = 2) tookProfit := false // Plot EMA's plot(fastEMA, color = color.blue) plot(slowEMA, color = color.yellow) // Plot ATR Limit/Stop positions profit_plot = plot(series = InTrade?atr_up:na, title = "profit", color = color.green, style=plot.style_linebr) close_plot = plot(series = InTrade?atr_current:na, title = "close", color = color.white, style=plot.style_linebr) stop_plot = plot(series = InTrade?atr_down:na, title = "stop_loss", color = color.red, style=plot.style_linebr) fill(profit_plot, close_plot, color = color.new(color.green, 80)) fill(close_plot, stop_plot, color =color.new(color.red,80))