
Strategi ini adalah sistem perdagangan berdasarkan persilangan Exponential Moving Average (EMA), dikombinasikan dengan Average True Range (ATR) untuk mencapai manajemen risiko yang dinamis. Strategi ini menggunakan garis EMA jangka pendek dan jangka panjang untuk menangkap perubahan momentum dalam tren harga, dan menggunakan ATR untuk secara dinamis menetapkan posisi take-profit dan stop-loss, mencapai pengendalian risiko perdagangan yang tepat.
Logika inti dari strategi ini didasarkan pada sinyal persilangan dua rata-rata pergerakan eksponensial dalam periode yang berbeda (9 dan 21). Ketika EMA jangka pendek melintasi EMA jangka panjang ke atas, sinyal panjang terbentuk; ketika EMA jangka pendek melintasi EMA jangka panjang ke bawah, sinyal pendek terbentuk. Untuk mengelola risiko dengan lebih baik, strategi ini memperkenalkan mekanisme stop-profit dan stop-loss dinamis berdasarkan ATR 14 periode. Level take-profit ditetapkan pada 2 kali ATR, dan level stop-loss ditetapkan pada 1 kali ATR. Pengaturan ini memastikan ruang keuntungan yang cukup, dan dapat mengendalikan risiko tepat waktu.
Strategi ini mewujudkan sistem perdagangan yang relatif lengkap dengan menggabungkan sistem persilangan EMA klasik dan manajemen risiko ATR yang dinamis. Keuntungan utama dari strategi ini adalah kemampuannya dalam manajemen risiko yang dinamis dan karakteristik mengikuti tren yang baik. Melalui arahan pengoptimalan yang disarankan, masih ada ruang untuk perbaikan strategi lebih lanjut. Bila diterapkan secara real-time, disarankan untuk melakukan pengujian ulang dan pengoptimalan parameter yang memadai, serta membuat penyesuaian yang tepat berdasarkan karakteristik pasar tertentu.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved EMA Crossover Strategy", overlay=true)
// User-defined inputs for EMAs
shortTermLength = input(9, title="Short-Term EMA Length")
longTermLength = input(21, title="Long-Term EMA Length")
// Dynamic Take Profit and Stop Loss
atrLength = input(14, title="ATR Length")
atrMultiplierTP = input(2.0, title="ATR Multiplier for Take Profit")
atrMultiplierSL = input(1.0, title="ATR Multiplier for Stop Loss")
// Calculate EMAs and ATR
shortTermEMA = ta.ema(close, shortTermLength)
longTermEMA = ta.ema(close, longTermLength)
atr = ta.atr(atrLength)
// Plot the EMAs
plot(shortTermEMA, color=color.blue, title="Short-Term EMA")
plot(longTermEMA, color=color.red, title="Long-Term EMA")
// Generate Entry Conditions
longCondition = ta.crossover(shortTermEMA, longTermEMA)
shortCondition = ta.crossunder(shortTermEMA, longTermEMA)
// Optional Debugging: Print conditions (you can remove this later)
var label longLabel = na
var label shortLabel = na
if longCondition
longLabel := label.new(bar_index, high, "Buy Signal", color=color.green, style=label.style_label_down, textcolor=color.white)
if shortCondition
shortLabel := label.new(bar_index, low, "Sell Signal", color=color.red, style=label.style_label_up, textcolor=color.white)
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", limit=close + atr * atrMultiplierTP, stop=close - atr * atrMultiplierSL)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", limit=close - atr * atrMultiplierTP, stop=close + atr * atrMultiplierSL)