
Strategi ini adalah sistem perdagangan berbalik trend yang menggabungkan penunjuk momentum (MACD, RSI) dan penapis kuantiti perdagangan. Dengan memperkenalkan penapis julat (Range Filter), pemantauan pergerakan harga, menangkap tepat bahagian atas dan bawah pasaran. Strategi ini menambah mekanisme pengesahan kuantiti perdagangan berdasarkan petunjuk teknikal tradisional, yang meningkatkan kebolehpercayaan isyarat perdagangan.
Strategi ini menggunakan pengesahan pelbagai indikator untuk berdagang:
Mekanisme yang mencetuskan pelbagai keadaan adalah seperti berikut:
Cadangan kawalan risiko:
Strategi ini membangunkan sistem perdagangan pembalikan trend yang agak sempurna melalui kerjasama kolaboratif pelbagai petunjuk teknikal. Kelebihan utama strategi ini adalah mekanisme penapisan isyarat yang ketat dan ruang penyesuaian parameter yang fleksibel. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran. Dalam aplikasi praktikal, para pelabur disarankan untuk menyesuaikan parameter strategi mengikut pilihan risiko dan pengalaman pasaran 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")