Strategi ini merupakan sistem trend following berdasarkan beberapa indikator teknis, menggabungkan Moving Averages (EMA), Directional Movement Index (DMI), Detrended Price Oscillator (DPO), Relative Strength Index (RSI), dan Average True Range (ATR).
Strategi ini menggunakan sistem Triple Exponential Moving Average (EMA) sebagai mekanisme identifikasi tren inti, dikombinasikan dengan indikator teknis lainnya untuk konfirmasi sinyal ganda: 1. EMA cepat (10 hari) menangkap momentum harga jangka pendek 2. Medium EMA (25-hari) berfungsi sebagai filter tren jangka menengah 3. EMA lambat (50 hari) mendefinisikan arah tren keseluruhan 4. DMI (14-hari) mengkonfirmasi kekuatan arah tren 5. DPO mengkonfirmasi harga menyimpang dari tren 6. RSI (14-hari) mengukur momentum dan kondisi overbought/oversold 7. ATR (14-hari) menetapkan target stop-loss dan profit
Kondisi sinyal perdagangan: - Panjang: EMA cepat melintasi EMA menengah dengan keduanya di atas EMA lambat, ADX>25, RSI>50, DPO>0 - Pendek: EMA cepat melintasi EMA menengah dengan keduanya di bawah EMA lambat, ADX>25, RSI<50, DPO<0
Langkah Pengendalian Risiko: - Stop berbasis ATR dinamis beradaptasi dengan volatilitas pasar - Manajemen risiko proporsi tetap - Konfirmasi silang beberapa indikator mengurangi sinyal palsu
Strategi ini membangun sistem perdagangan trend lengkap melalui kombinasi beberapa indikator teknis. Fitur utamanya adalah konfirmasi sinyal yang ketat dan kontrol risiko yang wajar, cocok untuk melacak tren jangka menengah hingga panjang pada kerangka waktu harian. Meskipun ada beberapa keterlambatan dalam sinyal, strategi ini menunjukkan kinerja keseluruhan yang kuat melalui kontrol risiko yang ketat dan konfirmasi sinyal ganda. Saat diterapkan untuk perdagangan langsung, pertimbangan yang cermat harus diberikan pada pemilihan lingkungan pasar dan optimasi parameter untuk instrumen tertentu.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-15 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Daily Strategy with Triple EMA, DMI, DPO, RSI, and ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Input parameters fastEmaLength = input.int(10, title="Fast EMA Length") mediumEmaLength = input.int(25, title="Medium EMA Length") slowEmaLength = input.int(50, title="Slow EMA Length") dmiLength = input.int(14, title="DMI Length") adxSmoothing = input.int(14, title="ADX Smoothing") dpoLength = input.int(14, title="DPO Length") rsiLength = input.int(14, title="RSI Length") atrLength = input.int(14, title="ATR Length") riskPercentage = input.float(2.0, title="Risk Percentage", step=0.1) atrMultiplier = input.float(1.5, title="ATR Multiplier for Stop Loss", step=0.1) tpMultiplier = input.float(2.0, title="ATR Multiplier for Take Profit", step=0.1) // Calculate EMAs fastEma = ta.ema(close, fastEmaLength) mediumEma = ta.ema(close, mediumEmaLength) slowEma = ta.ema(close, slowEmaLength) // Calculate other indicators [adx, diPlus, diMinus] = ta.dmi(dmiLength, adxSmoothing) dpo = close - ta.sma(close, dpoLength) rsi = ta.rsi(close, rsiLength) atr = ta.atr(atrLength) // Trading logic longCondition = ta.crossover(fastEma, mediumEma) and fastEma > slowEma and mediumEma > slowEma and adx > 25 and rsi > 50 and dpo > 0 shortCondition = ta.crossunder(fastEma, mediumEma) and fastEma < slowEma and mediumEma < slowEma and adx > 25 and rsi < 50 and dpo < 0 // Risk management riskAmount = (strategy.equity * riskPercentage) / 100 stopLoss = atr * atrMultiplier takeProfit = atr * tpMultiplier // Entry and exit logic if (longCondition) strategy.entry("Buy", strategy.long) strategy.exit("Exit Long", "Buy", stop=close - stopLoss, limit=close + takeProfit) if (shortCondition) strategy.entry("Sell", strategy.short) strategy.exit("Exit Short", "Sell", stop=close + stopLoss, limit=close - takeProfit) // Plot indicators plot(fastEma, color=color.green, title="Fast EMA") plot(mediumEma, color=color.orange, title="Medium EMA") plot(slowEma, color=color.red, title="Slow EMA") hline(25, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)