Strategi ini adalah sistem perdagangan yang didasarkan pada crossover Exponential Moving Average (EMA), dikombinasikan dengan Average True Range (ATR) untuk manajemen risiko dinamis. Strategi ini menggunakan garis EMA jangka pendek dan jangka panjang untuk menangkap perubahan momentum dalam tren harga, sementara menggunakan ATR untuk secara dinamis menetapkan tingkat take profit dan stop-loss, mencapai kontrol yang tepat atas risiko perdagangan.
Logika inti dari strategi ini didasarkan pada sinyal silang antara dua EMA dari periode yang berbeda (9 dan 21). Sinyal beli dihasilkan ketika EMA jangka pendek melintasi di atas EMA jangka panjang, sementara sinyal jual dihasilkan ketika EMA jangka pendek melintasi di bawah EMA jangka panjang. Untuk mengelola risiko dengan lebih baik, strategi ini menggabungkan mekanisme take profit dan stop-loss yang dinamis berdasarkan ATR 14 periode, dengan tingkat take profit ditetapkan pada 2x ATR dan tingkat stop-loss pada 1x ATR, memastikan potensi keuntungan yang cukup sambil menjaga pengendalian risiko yang tepat waktu.
Strategi ini menciptakan sistem perdagangan yang komprehensif dengan menggabungkan sistem crossover EMA klasik dengan manajemen risiko ATR dinamis. Kekuatannya utama terletak pada kemampuan manajemen risiko dinamis dan karakteristik mengikuti tren yang efektif. Melalui arah optimasi yang disarankan, ada ruang untuk perbaikan lebih lanjut. Untuk implementasi perdagangan langsung, disarankan untuk melakukan backtesting menyeluruh dan optimasi parameter, dengan penyesuaian yang sesuai 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)