
Chiến lược này là một hệ thống giao dịch đảo ngược xu hướng kết hợp các chỉ số động lực (MACD, RSI) và bộ lọc khối lượng giao dịch. Bằng cách giới thiệu bộ lọc phạm vi (Range Filter), giám sát biến động giá, để nắm bắt chính xác các đỉnh và đáy của thị trường. Chiến lược này đã thêm vào cơ chế xác nhận khối lượng giao dịch dựa trên các chỉ số kỹ thuật truyền thống, làm tăng hiệu quả độ tin cậy của tín hiệu giao dịch.
Chiến lược này sử dụng nhiều phương thức xác thực:
Các tác nhân của đa điều kiện là:
Đề xuất kiểm soát rủi ro:
Chiến lược này tạo ra một hệ thống giao dịch đảo ngược xu hướng tương đối hoàn hảo thông qua sự phối hợp phối hợp của nhiều chỉ số kỹ thuật. Điểm mạnh cốt lõi của chiến lược là cơ chế lọc tín hiệu nghiêm ngặt và không gian điều chỉnh tham số linh hoạt. Bằng cách liên tục tối ưu hóa và hoàn thiện, chiến lược có khả năng duy trì hiệu suất ổn định trong nhiều môi trường thị trường.
/*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")