
Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan analisis beberapa kerangka waktu dan melakukan perdagangan pada kerangka waktu 15 menit dengan mengintegrasikan beberapa indikator teknis seperti indeks moving average (EMA), indeks tren rata-rata (ADX) dan indeks kekuatan relatif (RSI). Strategi ini menggunakan metode manajemen posisi konservatif, dengan risiko per perdagangan dikendalikan dalam 2% dari total akun untuk mendapatkan keuntungan yang stabil dalam jangka panjang.
Strategi ini menggunakan persilangan EMA (50 siklus) dan EMA (200 siklus) untuk mengidentifikasi arah tren, dan dikombinasikan dengan indikator ADX untuk mengkonfirmasi kekuatan tren. Ketika nilai ADX lebih besar dari 25, pasar berada dalam keadaan tren yang kuat. Indikator RSI digunakan untuk mengidentifikasi keadaan overbought dan oversold, dengan posisi overbought pada RSI mencapai 70 dan posisi kosong pada RSI mencapai 30. Selain itu, strategi ini juga memperkenalkan indikator EMA dalam kerangka waktu 4 jam sebagai pengakuan tren tingkat yang lebih tinggi untuk meningkatkan akurasi perdagangan.
Strategi ini menunjukkan potensi perdagangan yang baik melalui metode analisis teknis multi-dimensi dan kontrol risiko yang ketat. Meskipun stabil dalam pengujian ulang, strategi ini masih perlu diverifikasi secara penuh di lingkungan real-time. Desain modular strategi ini membuatnya memiliki kemampuan beradaptasi dan ruang untuk optimalisasi yang kuat, yang dapat disesuaikan secara fleksibel sesuai dengan perubahan pasar.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("DOGE Enhanced Trend Following Strategy",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=5,
commission_value=0.1,
slippage=2)
// === INPUT PARAMETERS ===
emaFastLength = input(50, title="Fast EMA Length")
emaSlowLength = input(200, title="Slow EMA Length")
adxLength = input.int(14, title="ADX Length")
adxSmoothing = input.int(14, title="ADX Smoothing Factor")
adxThreshold = input.float(25, title="ADX Trend Strength Threshold")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.float(70, title="RSI Overbought Level")
rsiOversold = input.float(30, title="RSI Oversold Level")
takeProfitMultiplier = input.float(1.03, title="Take Profit Multiplier", tooltip="Set a dynamic take profit level, e.g., 1.03 = 3% profit")
stopLossMultiplier = input.float(0.97, title="Stop Loss Multiplier", tooltip="Set stop loss level, e.g., 0.97 = 3% below entry price")
// === INDICATOR CALCULATIONS ===
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
[dip, dim, adxValue] = ta.dmi(adxLength, adxSmoothing)
rsiValue = ta.rsi(close, rsiLength)
// === MULTI-TIMEFRAME CONFIRMATION ===
emaFastHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaFastLength))
emaSlowHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaSlowLength))
// === CONDITIONS FOR TRADE ENTRY ===
bullishTrend = ta.crossover(emaFast, emaSlow) and adxValue > adxThreshold and rsiValue > rsiOversold
bearishTrend = ta.crossunder(emaFast, emaSlow) and adxValue > adxThreshold and rsiValue < rsiOverbought
// === TRADE EXECUTION ===
if (bullishTrend)
strategy.entry("Long", strategy.long)
strategy.exit("TakeProfit_Long", from_entry="Long", limit=close * takeProfitMultiplier, stop=close * stopLossMultiplier)
if (bearishTrend)
strategy.entry("Short", strategy.short)
strategy.exit("TakeProfit_Short", from_entry="Short", limit=close * (2 - takeProfitMultiplier), stop=close * (2 - stopLossMultiplier))
// === VISUAL INDICATORS AND PLOTTING ===
plot(emaFast, color=color.blue, linewidth=2, title="Fast EMA")
plot(emaSlow, color=color.red, linewidth=2, title="Slow EMA")
hline(adxThreshold, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)
bgcolor(bullishTrend ? color.new(color.green, 85) : bearishTrend ? color.new(color.red, 85) : na)
// === ALERTS ===
alertcondition(bullishTrend, title="Buy Signal", message="Bullish trend detected. Consider entering a long position.")
alertcondition(bearishTrend, title="Sell Signal", message="Bearish trend detected. Consider entering a short position.")
// === STRATEGY SETTINGS FOR REALISTIC TESTING ===
strategy.close("Long", when=rsiValue > rsiOverbought, comment="Exit Long on RSI Overbought")
strategy.close("Short", when=rsiValue < rsiOversold, comment="Exit Short on RSI Oversold")