
Đây là chiến lược theo xu hướng kết hợp đường trung bình động hai kỳ (21 và 55), chỉ báo động lượng RSI và khối lượng. Chiến lược này phân tích thông tin thị trường theo ba chiều: giá, động lượng và khối lượng. Trong khi xác nhận hướng xu hướng, nó lọc các tín hiệu giao dịch thông qua RSI và các chỉ báo khối lượng để cải thiện độ chính xác của giao dịch. Chiến lược này yêu cầu khi giá vượt qua đường trung bình động ngắn hạn và RSI vượt qua đường trung bình động thì khối lượng giao dịch sẽ tăng lên để xác nhận tính hợp lệ của xu hướng.
Chiến lược này sử dụng cơ chế lọc ba:
Các điều kiện mua phải được đáp ứng cùng lúc:
Điều kiện bán có thể là bất kỳ điều kiện nào sau đây:
Đây là chiến lược theo xu hướng sử dụng ba yếu tố chính của phân tích kỹ thuật (giá, khối lượng và động lượng). Thông qua nhiều cơ chế lọc, chiến lược này không chỉ đảm bảo độ tin cậy của tín hiệu mà còn có khả năng kiểm soát rủi ro nhất định. Mặc dù có một số hạn chế cố hữu, thông qua việc tối ưu hóa và cải tiến liên tục, chiến lược này dự kiến sẽ đạt được lợi nhuận ổn định trong các giao dịch thực tế. Đặc biệt ở những thị trường có xu hướng rõ ràng và thanh khoản tốt, chiến lược này có thể mang lại hiệu quả tốt hơn.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("21/55 MA with RSI Crossover", overlay=true)
// Inputs for moving averages
ma21_length = input.int(21, title="21-day Moving Average Length", minval=1)
ma55_length = input.int(55, title="55-day Moving Average Length", minval=1)
// RSI settings
rsi_length = input.int(13, title="RSI Length", minval=1)
rsi_avg_length = input.int(13, title="RSI Average Length", minval=1)
// Moving averages
ma21 = ta.sma(close, ma21_length)
ma55 = ta.sma(close, ma55_length)
// Volume settings
vol_ma_length = input.int(21, title="Volume MA Length", minval=1)
// Volume moving average
vol_ma = ta.sma(volume, vol_ma_length)
// RSI calculation
rsi = ta.rsi(close, rsi_length)
rsi_avg = ta.sma(rsi, rsi_avg_length)
// Buy condition
// buy_condition = close > ma21 and ta.crossover(rsi, rsi_avg) and volume > vol_ma
buy_condition = close > ma21 and rsi > rsi_avg and volume > vol_ma
// Sell condition
// sell_condition = close < ma55 or ta.crossunder(rsi, rsi_avg)
sell_condition = ta.crossunder(close, ma55) or ta.crossunder(rsi, rsi_avg)
// Execute trades
if (buy_condition)
strategy.entry("Buy", strategy.long, comment="Buy Signal")
if (sell_condition)
strategy.close("Buy", comment="Sell Signal")
// Plot moving averages for reference
plot(ma21, color=color.blue, title="21-day MA")
plot(ma55, color=color.red, title="55-day MA")
// Plot RSI and RSI average for reference
rsi_plot = input.bool(true, title="Show RSI?", inline="rsi")
plot(rsi_plot ? rsi : na, color=color.green, title="RSI")
plot(rsi_plot ? rsi_avg : na, color=color.orange, title="RSI Average")