
Strategi stop loss multiplier ATR optimal adalah strategi pelacakan tren yang menggunakan multiplier rata-rata amplitudo riil ((ATR) untuk mengatur titik stop loss, risiko penyesuaian dinamis. Ketika tren harga berubah, itu dapat berhenti tepat waktu dan menghindari kerugian besar.
Strategi ini pertama-tama menghitung rata-rata bergerak sederhana dari siklus SMA cepat dan siklus SMA lambat, melakukan plus ketika melewati SMA lambat pada SMA cepat, dan melakukan minus ketika melewati SMA lambat di bawah SMA cepat.
Setelah masuk, ia akan memonitor nilai ATR secara real-time. ATR menunjukkan rata-rata fluktuasi dalam periode tertentu di masa lalu. Strategi ini memungkinkan kita untuk mengatur panjang siklus ATR (default 14) dan kelipatan (default 2). Sistem akan menghitung nilai ATR saat masuk, lalu kalikan dengan kelipatan yang ditetapkan, sebagai jarak berhenti.
Sebagai contoh, jika ATR setelah masuk adalah 50 poin, dan perkalian ditetapkan menjadi 2, maka jarak stop loss adalah 100 poin. Jika harga kemudian berjalan lebih dari 100 poin, stop loss akan dipicu. Ini dapat menghentikan kerugian tepat waktu dan menghindari kerugian yang berlebihan.
Strategi ini juga mempertimbangkan penilaian tren, dan hanya akan mengaktifkan stop loss posisi panjang jika sinyal beli cocok dengan tren naik. Sementara itu, sinyal shorting diaktifkan jika cocok dengan tren turun.
Garis stop loss akan dipetakan pada grafik, dan kita dapat memverifikasinya secara real time. Ketika kondisi stop loss dipicu, posisi yang sesuai juga akan otomatis dipadamkan oleh sistem.
Keuntungan terbesar dari strategi ini adalah penyesuaian jarak stop loss secara dinamis, yang dapat secara otomatis memodifikasi celah risiko sesuai dengan perubahan volatilitas pasar. Ketika volatilitas meningkat, jarak stop loss juga akan meningkat, mengurangi probabilitas penembusan stop loss.
Dibandingkan dengan stop loss yang tetap, metode ini dapat secara efektif mengontrol kerugian tunggal sambil mengikuti tren. Hal ini menjamin ruang untuk keuntungan dan memperhatikan manajemen risiko.
Selain itu, dalam kombinasi dengan penilaian tren, penghentian kerugian ini dapat mengurangi kemungkinan terjadinya kebocoran akibat gempa di wilayah yang digabungkan.
Risiko utama dari strategi ini adalah bahwa garis pendek harga akan ditarik kembali selama memegang posisi, memicu risiko stop loss. Terutama jika ATR terlalu pendek, stop loss tidak dapat sepenuhnya menyaring efek dari fluktuasi jangka pendek.
Risiko lain adalah bahwa dalam situasi yang ekstrim, pergerakan harga yang melompat bisa langsung menerobos garis stop loss. Ini memerlukan pengaturan stop loss yang lebih besar, tetapi juga berarti mengurangi ruang untuk keuntungan.
Terakhir, strategi ini tidak mempertimbangkan dampak perdagangan overnight dan pre-trade pada nilai ATR. Hal ini dapat menyebabkan data ATR yang dihitung strategi tidak akurat pada saat buka atau tutup.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Optimalkan parameter siklus ATR, uji kombinasi parameter terbaik di pasar yang berbeda
Perbandingan tingkat pengembalian dari pengaturan kelipatan tetap dan variabel
ATR dikalkulasikan dalam kombinasi dengan data malam dan pra-pertandingan untuk mengurangi dampak kenaikan harga bukaan
Atur kondisi ATR: hanya diaktifkan setelah ATR mencapai tingkat tertentu, untuk menghindari kerugian yang tidak perlu di pasar dengan volatilitas rendah
Menggabungkan lebih banyak kondisi penyaringan: seperti informasi tentang tren skala besar, indikator energi kuantitatif, dan sebagainya
Strategi Stop Loss Multiplier ATR yang optimal, dengan menyesuaikan jarak stop loss secara dinamis, mencapai keseimbangan yang efektif antara pelacakan tren dan pengendalian risiko. Dibandingkan dengan jarak stop loss yang tetap, ini dapat secara efektif membatasi kerugian tunggal sambil menjamin ruang untuk keuntungan.
Tentu saja, masih perlu memperhatikan beberapa risiko potensial, seperti harga yang melonjak, stop loss yang terlalu sensitif, dan sebagainya. Kita dapat terus mengoptimalkan dari berbagai tingkatan, meningkatkan stabilitas strategi dan tingkat keuntungan.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//@author=Daveatt
//This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
SystemName = "BEST ATR Stop Multiple Strategy"
TradeId = "BEST"
InitCapital = 100000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true
DefaultQtyType = strategy.fixed
DefaultQtyValue = strategy.fixed
Precision = 2
Overlay=true
strategy(title=SystemName, shorttitle=SystemName, overlay=Overlay )
fastSMAperiod = input(defval=15, title='Fast SMA', type=input.integer, minval=2, step=1)
slowSMAperiod = input(defval=45, title='Slow SMA', type=input.integer, minval=2, step=1)
src = close
// Calculate moving averages
fastSMA = sma(src, fastSMAperiod)
slowSMA = sma(src, slowSMAperiod)
// Calculate trading conditions
enterLong = crossover(fastSMA, slowSMA)
enterShort = crossunder(fastSMA, slowSMA)
// trend states
since_buy = barssince(enterLong)
since_sell = barssince(enterShort)
buy_trend = since_sell > since_buy
sell_trend = since_sell < since_buy
is_signal = enterLong or enterShort
// get the entry price
entry_price = valuewhen(enterLong or enterShort, src, 0)
// Plot moving averages
plot(series=fastSMA, color=color.teal)
plot(series=slowSMA, color=color.orange)
// Plot the entries
plotshape(enterLong, style=shape.circle, location=location.belowbar, color=color.green, size=size.small)
plotshape(enterShort, style=shape.circle, location=location.abovebar, color=color.red, size=size.small)
///////////////////////////////
//======[ Trailing STOP ]======//
///////////////////////////////
// use SL?
useSL = input(true, "Use stop Loss")
// ATR multiple Stop
stop_atr_length = input(14,title="ATR Length", minval=1, type=input.integer)
stop_atr_mult = input(2,title="ATR Multiple", minval=0.05, step=0.1, type=input.float)
// Global STOP
stop_price = 0.0, stop_price := nz(stop_price[1])
// STOP ATR
var stop_atr = 0.0
var entry_stop_atr = 0.0
stop_atr := nz(atr(stop_atr_length))
if enterLong or enterShort
entry_stop_atr := stop_atr * stop_atr_mult
// display the ATR value multiple
plotshape(enterLong, title='ATR Long Stop value', style=shape.labelup,
location=location.bottom, color=color.green, transp=0, text='', textcolor=color.navy, editable=true, size=size.small, show_last=1, size=size.small)
// var label atr_long_label = na
// var label atr_short_label = na
lapos_y_entry_up = lowest(30)
lapos_y_entry_dn = highest(30)
// text_label = "ATR value: " + tostring(stop_atr, '#.#') + "\n\nATR Multiple value: " + tostring(entry_stop_atr, '#.#')
// if enterLong
// label.delete(atr_long_label)
// atr_long_label := label.new(bar_index, lapos_y_entry_up, text=text_label,
// xloc=xloc.bar_index, yloc=yloc.price, color=color.green, style=label.style_labelup, textcolor=color.white,
// size=size.normal)
// if enterShort
// label.delete(atr_short_label)
// atr_short_label := label.new(bar_index, lapos_y_entry_dn, text=text_label,
// xloc=xloc.bar_index, yloc=yloc.price, color=color.red, style=label.style_labeldown, textcolor=color.black,
// size=size.normal)
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0
longStopPrice := if useSL and buy_trend
stopValue = entry_price - entry_stop_atr
else
0
shortStopPrice := if useSL and sell_trend
stopValue = entry_price + entry_stop_atr
else
999999
//////////////////////////////////////////////////////////////////////////////////////////
//*** STOP LOSS HIT CONDITIONS TO BE USED IN ALERTS ***//
//////////////////////////////////////////////////////////////////////////////////////////
cond_long_stop_loss_hit = useSL and buy_trend and crossunder(low, longStopPrice[1])
cond_short_stop_loss_hit = useSL and sell_trend and crossover(high, shortStopPrice[1])
// Plot stop loss values for confirmation
plot(series=useSL and buy_trend and low >= longStopPrice
? longStopPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Long Trail Stop")
plot(series=useSL and sell_trend and high <= shortStopPrice
? shortStopPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Short Trail Stop")
close_long = cond_long_stop_loss_hit
close_short = cond_short_stop_loss_hit
// Submit entry orders
strategy.entry(TradeId + " L", long=true, when=enterLong)
strategy.close(TradeId + " L", when=close_long)
//if (enterShort)
strategy.entry(TradeId + " S", long=false, when=enterShort)
strategy.close(TradeId + " S", when=close_short)