
Strategi ini adalah sistem perdagangan stop loss yang melacak secara dinamis berdasarkan rentang rata-rata nyata (ATR) indikator, yang dikombinasikan dengan sinyal penyaringan EMA linear, yang terutama digunakan untuk menangkap titik balik tren pasar dan melakukan perdagangan. Inti dari strategi ini adalah menghitung stop loss dinamis melalui nilai ATR, yang memicu sinyal perdagangan ketika ada persimpangan antara harga dan stop loss. Strategi ini dirancang untuk dapat ditinjau kembali dalam jangka waktu tertentu, terutama cocok untuk beroperasi pada kerangka waktu 15 menit dan pada grafik geser Heikin Ashi, yang membantu mengurangi kebisingan dan mengidentifikasi perubahan tren dengan lebih jelas.
Logika inti dari strategi ini adalah sistem tracking stop loss yang dinamis yang dibangun berdasarkan indikator ATR. Prinsip kerja spesifiknya adalah sebagai berikut:
Seluruh logika perdagangan mirip dengan sistem pelacakan tren, tetapi melalui ATR secara dinamis menyesuaikan posisi stop loss, sehingga strategi dapat beradaptasi dengan lingkungan tingkat fluktuasi yang berbeda.
Dengan menganalisis kode strategi ini secara mendalam, saya menyimpulkan beberapa keuntungan yang menonjol:
Meskipun strategi ini memiliki banyak keuntungan, namun dalam praktiknya, ada risiko berikut:
Solusi:
Berdasarkan analisis kode, strategi ini dapat dioptimalkan dari beberapa arah:
Penguatan filter sinyal:
Pengaturan parameter dinamis:
Optimasi manajemen posisi:
Menambahkan mekanisme penghentian:
Penyaringan waktu ditingkatkan:
Analisis multi-frame waktu:
Hal ini penting karena mereka dapat secara signifikan meningkatkan stabilitas strategi. Khususnya, peningkatan filter sinyal dan penyesuaian parameter dinamis dapat mengurangi sinyal palsu, dan peningkatan manajemen posisi dan mekanisme penutupan dapat mengoptimalkan efisiensi penggunaan dana dan pengembalian risiko.
Strategi perdagangan kuantitatif ATR Tracking Stop Loss adalah sistem pelacakan tren yang dirancang dengan baik, yang dengan menggabungkan indikator ATR dengan EMA, menciptakan mekanisme stop loss dinamis yang dapat menyesuaikan diri dengan volatilitas pasar. Keunggulan terbesar dari strategi ini adalah fleksibilitas dan kesederhanaannya, yang dapat secara otomatis menyesuaikan jarak stop loss dalam berbagai kondisi pasar, sambil mengoperasikan logika yang jelas.
Namun, strategi ini dapat berkinerja buruk di pasar yang bergoyang dan terlalu bergantung pada sistem indikator tunggal. Kinerja dapat ditingkatkan secara signifikan dengan menambahkan filter sinyal tambahan, mengoptimalkan mekanisme penyesuaian parameter, meningkatkan manajemen posisi, dan menambahkan strategi stop-loss.
Ini adalah kerangka strategi dasar yang bagus untuk pedagang, yang dapat disesuaikan dan diperluas sesuai dengan gaya perdagangan individu dan karakteristik pasar target. Disarankan untuk melakukan pengembalian penuh pada berbagai kombinasi parameter dan lingkungan pasar sebelum diterapkan di pasar, dan mempertimbangkan untuk membentuk sistem perdagangan yang lebih baik dalam kombinasi dengan indikator teknis lainnya.
Strategi ini sangat cocok untuk pasar dengan tren jangka menengah dan panjang yang jelas, memberikan pedagang solusi perdagangan kuantitatif yang relatif sederhana namun efektif dengan memungkinkan pertumbuhan keuntungan yang berkelanjutan sambil melindungi keuntungan yang telah dicapai secara dinamis.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("UT Bot Strategy Backtest with Date Range", overlay=true)
// === Inputs ===
keyValue = input.float(1.0, title="Key Value (Sensitivity)")
atrPeriod = input.int(10, title="ATR Period")
// === Calculations ===
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR
src = close
// === Trailing Stop Logic ===
var float xATRTrailingStop = na
xATRTrailingStop := src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1]) ?
math.max(nz(xATRTrailingStop[1]), src - nLoss) :
src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1]) ?
math.min(nz(xATRTrailingStop[1]), src + nLoss) :
src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss
// === Signal Logic ===
emaVal = ta.ema(src, 1)
above = ta.crossover(emaVal, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, emaVal)
buySignal = src > xATRTrailingStop and above
sellSignal = src < xATRTrailingStop and below
// === Strategy Execution ===
if buySignal
strategy.close("Short")
strategy.entry("Long", strategy.long)
if sellSignal
strategy.close("Long")
strategy.entry("Short", strategy.short)
// === Visuals ===
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// === Alerts ===
alertcondition(buySignal, title="UT Long", message="UT Long")
alertcondition(sellSignal, title="UT Short", message="UT Short")