
Strategi ini menggabungkan alat analisis teknis seperti Moving Average (MA), Relative Strength Index (RSI) dan Average True Rate (ATR) untuk menangkap peluang tren di pasar. Strategi ini menilai arah tren melalui persimpangan dua garis sejajar dan menggunakan indikator RSI untuk memfilter momentum dari sinyal perdagangan, sambil menggunakan ATR sebagai basis stop loss untuk mengendalikan risiko.
Inti dari strategi ini adalah menggunakan persilangan dua rata-rata bergerak dari dua periode yang berbeda (garis cepat dan garis lambat) untuk menilai tren pasar. Ketika garis cepat melewati garis lambat, menunjukkan tren naik, strategi akan menghasilkan banyak sinyal; sebaliknya, ketika garis cepat melewati garis lambat, menunjukkan tren turun, strategi akan menghasilkan sinyal kosong.
Untuk meningkatkan keandalan sinyal perdagangan, strategi ini memperkenalkan indikator RSI sebagai filter momentum. Terbuka lebih banyak posisi hanya diizinkan ketika RSI lebih tinggi dari sebuah nilai ambang tertentu (misalnya 50); Terbuka posisi kosong hanya diizinkan ketika RSI lebih rendah dari nilai ambang tersebut.
Selain itu, strategi menggunakan ATR sebagai dasar stop loss, secara dinamis menyesuaikan stop loss sesuai dengan volatilitas harga dalam beberapa waktu terakhir, untuk menyesuaikan dengan kondisi pasar yang berbeda. Cara stop loss yang beradaptasi ini dapat berhenti dengan cepat saat tren tidak jelas, mengendalikan penarikan; memberikan ruang keuntungan yang lebih besar saat tren kuat, meningkatkan keuntungan strategi.
Strategi ini melalui kombinasi organik dari trend following dan momentum filtering, dengan menangkap peluang tren pasar, dengan baik mengendalikan risiko. Strategi logika jelas, mudah untuk menerapkan dan mengoptimalkan. Namun, dalam aplikasi praktis, masih perlu memperhatikan risiko pasar bergoyang dan risiko parameter, dan sesuai dengan karakteristik pasar dan kebutuhan sendiri, strategi fleksibel untuk menyesuaikan dan mengoptimalkan.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true)
// Input variables
fastLength = input(12, title="Fast MA Length")
slowLength = input(26, title="Slow MA Length")
signalLength = input(9, title="Signal Line Length")
stopLossPct = input(1.0, title="Stop Loss %") / 100
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(50, title="RSI Threshold")
// Moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// RSI
rsi = ta.rsi(close, rsiLength)
// Entry conditions with RSI filter
bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold
bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold
// Calculate stop loss levels
longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct)
shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct)
// Execute trades
strategy.entry("Long", strategy.long, when=bullishSignal)
strategy.entry("Short", strategy.short, when=bearishSignal)
strategy.exit("Exit Long", "Long", stop=longStopLoss)
strategy.exit("Exit Short", "Short", stop=shortStopLoss)
// Plotting signals
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal")
// Plot MACD
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
// Plot RSI
hline(rsiThreshold, "RSI Threshold", color=color.gray)
plot(rsi, color=color.purple, title="RSI")