
Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan indeks moving average (EMA) dan mekanisme stop loss berdasarkan amplitudo pergerakan yang sebenarnya (ATR). Strategi ini menggunakan 9 siklus dan 21 siklus EMA untuk mengidentifikasi tren pasar, sementara menggunakan ATR untuk secara dinamis menyesuaikan posisi stop loss, mewujudkan kombinasi organik dari pelacakan tren dan kontrol risiko.
Logika inti dari strategi ini terdiri dari dua bagian utama: penilaian tren dan pengendalian risiko. Dalam penilaian tren, tren pasar ditentukan dengan memantau persilangan EMA cepat (siklus 9) dengan EMA lambat (siklus 21). Ketika melewati garis cepat, sinyal multi-sinyal dipicu; Ketika melewati garis lambat, sinyal kosong dipicu. Dalam pengendalian risiko, strategi menggunakan indikator ATR untuk menghitung posisi stop loss yang dinamis. Secara khusus, stop loss untuk posisi multi-head ditetapkan sebagai harga masuk dikurangi 1,5 kali nilai ATR, dan stop loss untuk posisi kosong ditetapkan sebagai harga masuk ditambah 1,5 kali nilai ATR.
Strategi ini dibangun dengan menggabungkan trend judgement cross-equilibrium dan ATR stop loss, untuk membangun sistem perdagangan pelacakan tren yang lengkap. Strategi ini memiliki keunggulan dalam menilai standar objektifitas dan fleksibilitas pengendalian risiko, tetapi juga perlu memperhatikan risiko pasar yang bergoyang dan masalah keterlambatan sinyal. Strategi ini memiliki banyak ruang untuk perbaikan dengan menambahkan kekuatan tren, mengkonfirmasi dan mengoptimalkan pengaturan stop loss.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)