Ini adalah strategi mengikuti tren berdasarkan crossover Exponential Moving Average (EMA) dan konfirmasi Relative Strength Index (RSI). Strategi ini menggabungkan sinyal dari crossover EMA jangka pendek dan jangka panjang dengan konfirmasi momentum RSI, sambil menggabungkan mekanisme stop-loss berbasis persentase.
Strategi ini menggunakan mekanisme penyaringan indikator teknis ganda: Pertama, ia mengidentifikasi titik pembalikan tren potensial melalui persilangan EMA jangka pendek (9 periode) dan EMA jangka panjang (21 periode). Sinyal beli dihasilkan ketika EMA jangka pendek melintasi EMA jangka panjang dan nilai RSI di atas level yang ditentukan. Sinyal jual terjadi ketika EMA jangka pendek melintasi EMA jangka panjang dan nilai RSI di bawah level yang ditentukan. Selain itu, strategi ini menggabungkan mekanisme stop-loss berbasis persentase, menetapkan tingkat stop-loss dinamis untuk setiap perdagangan untuk secara efektif mengendalikan risiko penurunan.
Strategi ini membangun sistem perdagangan trend-mengikuti lengkap melalui kombinasi rata-rata bergerak dan indikator momentum. Keuntungannya utama terletak pada mekanisme konfirmasi sinyal yang dapat diandalkan dan sistem pengendalian risiko yang komprehensif. Meskipun ada beberapa keterbatasan yang melekat, kinerja keseluruhan strategi dapat ditingkatkan lebih lanjut melalui arah optimasi yang diusulkan. Ini adalah kerangka strategi yang kuat yang cocok untuk pedagang tren jangka menengah hingga panjang.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple Trend Following Strategy", overlay=true) // Inputs shortEMA = input.int(9, title="Short EMA Length", minval=1) longEMA = input.int(21, title="Long EMA Length", minval=1) confirmationRSI = input.int(50, title="RSI Confirmation Level", minval=1, maxval=100) stopLossPercent = input.float(2, title="Stop Loss Percentage", minval=0.1) // Stop Loss percentage // Calculations emaShort = ta.ema(close, shortEMA) emaLong = ta.ema(close, longEMA) rsiValue = ta.rsi(close, 14) // Buy and Sell Conditions buySignal = ta.crossover(emaShort, emaLong) and rsiValue > confirmationRSI sellSignal = ta.crossunder(emaShort, emaLong) and rsiValue < confirmationRSI // Plotting Signals plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Plotting EMAs plot(emaShort, title="Short EMA", color=color.yellow) plot(emaLong, title="Long EMA", color=color.purple) // Strategy logic strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal) // Calculate stop loss price based on stopLossPercent longStopLossPrice = strategy.position_avg_price * (1 - stopLossPercent / 100) shortStopLossPrice = strategy.position_avg_price * (1 + stopLossPercent / 100) // Draw stop loss line for long positions if (strategy.position_size > 0) // For long positions line.new(x1=bar_index, y1=longStopLossPrice, x2=bar_index + 1, y2=longStopLossPrice, color=color.red, width=2, style=line.style_dashed) // Draw stop loss line for short positions if (strategy.position_size < 0) // For short positions line.new(x1=bar_index, y1=shortStopLossPrice, x2=bar_index + 1, y2=shortStopLossPrice, color=color.green, width=2, style=line.style_dashed)