
Strategi ini adalah sistem perdagangan yang membalikkan tren yang menggabungkan indikator momentum (MACD, RSI) dan filter kuantitas transaksi. Dengan memperkenalkan filter rentang (Range Filter), pemantauan pergerakan harga memungkinkan penangkapan yang tepat dari bagian atas dan bawah pasar. Strategi ini menambahkan mekanisme konfirmasi transaksi berdasarkan indikator teknis tradisional, yang secara efektif meningkatkan keandalan sinyal perdagangan.
Strategi untuk melakukan transaksi menggunakan metode multi-indicator verifikasi:
Trigger kolaborasi dari beberapa kondisi adalah sebagai berikut:
Saran pengendalian risiko:
Strategi ini membangun sistem perdagangan reversal tren yang relatif sempurna melalui kolaborasi kolaboratif dari beberapa indikator teknis. Keunggulan inti dari strategi ini adalah mekanisme penyaringan sinyal yang ketat dan ruang untuk penyesuaian parameter yang fleksibel. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini diharapkan untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Dalam aplikasi praktis, disarankan bagi investor untuk menyesuaikan parameter strategi sesuai dengan preferensi risiko dan pengalaman pasar mereka sendiri.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("MACD & RSI with Range and Volume Filter", overlay=true)
// Inputs for MACD
fastLength = input.int(12, title="MACD Fast Length")
slowLength = input.int(26, title="MACD Slow Length")
signalLength = input.int(9, title="MACD Signal Length")
// Inputs for RSI
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(80, title="RSI Overbought Level")
rsiOversold = input.int(40, title="RSI Oversold Level")
// Inputs for Range Filter
rangePeriod = input.int(100, minval=1, title="Range Filter Period")
rangeMultiplier = input.float(3.0, minval=0.1, title="Range Filter Multiplier")
// Inputs for Volume Filter
volumeMA_Period = input.int(20, minval=1, title="Volume MA Period")
// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
// Smooth Average Range
smoothRange(src, period, multiplier) =>
avgRange = ta.ema(math.abs(src - src[1]), period)
ta.ema(avgRange, period * 2 - 1) * multiplier
smoothedRange = smoothRange(close, rangePeriod, rangeMultiplier)
rangeFilter = ta.ema(close, rangePeriod)
upperBand = rangeFilter + smoothedRange
lowerBand = rangeFilter - smoothedRange
// Range Filter Conditions
priceAboveRange = close > upperBand
priceBelowRange = close < lowerBand
// Volume Filter
volumeMA = ta.sma(volume, volumeMA_Period)
highVolume = volume > volumeMA
// Buy and Sell Conditions with Range and Volume Filter
buyCondition = ta.crossover(macdLine, signalLine) and rsi < rsiOversold and priceBelowRange and highVolume
sellCondition = ta.crossunder(macdLine, signalLine) and rsi > rsiOverbought and priceAboveRange and highVolume
// Strategy Execution
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.entry("Sell", strategy.short)
// Alerts for Buy and Sell Signals
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal Triggered")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal Triggered")
// Plot Buy and Sell Signals
plotshape(buyCondition, title="Buy Signal", text="Buy", style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0))
plotshape(sellCondition, title="Sell Signal", text="Sell", style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0))
// Plot Range Filter Bands
plot(upperBand, color=color.new(color.blue, 50), title="Upper Range Band")
plot(lowerBand, color=color.new(color.orange, 50), title="Lower Range Band")