
Chiến lược này là một hệ thống theo dõi xu hướng dựa trên các tín hiệu chéo của MACD và RSI và kết hợp với Brin để phân tích sự biến động của thị trường. Cốt lõi của chiến lược là để nắm bắt các điểm thay đổi xu hướng bằng cách kết hợp các khu vực mua quá mức của MACD với khu vực mua quá mức của RSI, đồng thời sử dụng Brin để xác nhận các khu vực biến động giá, do đó cung cấp tín hiệu giao dịch mạnh hơn.
Chiến lược này sử dụng ba cơ chế lọc các chỉ số kỹ thuật:
Điều kiện nhập cảnh yêu cầu MACD Gold Fork và RSI ở mức thấp ((< 50), cho thấy thị trường có thể bắt đầu phục hồi từ vùng bán tháo. Các điều kiện ra đi yêu cầu MACD chết và RSI ở mức cao ((> 50), cho thấy năng lượng tăng dần yếu đi và có thể bắt đầu quay trở lại.
Chiến lược này xây dựng một hệ thống giao dịch theo dõi xu hướng tương đối hoàn chỉnh thông qua việc sử dụng kết hợp MACD, RSI và Brinband. Chiến lược có nền tảng lý thuyết và khả năng thực hành tốt, nhưng vẫn cần cải thiện các thông số tối ưu hóa và kiểm soát rủi ro theo đặc điểm thị trường cụ thể.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD, RSI, Bollinger Bands Strategy", overlay=true)
// Input parameters 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")
// Input parameters for RSI
rsiLength = input.int(14, title="RSI Length")
// Input parameters for Bollinger Bands
bbLength = input.int(20, title="Bollinger Band Length")
bbMult = input.float(2.0, title="Bollinger Band Multiplier")
// MACD calculation
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
macdCrossUp = ta.crossover(macdLine, signalLine)
macdCrossDown = ta.crossunder(macdLine, signalLine)
// RSI calculation
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands calculation
bbBasis = ta.sma(close, bbLength)
bbUpper = bbBasis + bbMult * ta.stdev(close, bbLength)
bbLower = bbBasis - bbMult * ta.stdev(close, bbLength)
// Plot Bollinger Bands
plot(bbBasis, color=color.blue, title="Bollinger Band Basis")
plot(bbUpper, color=color.green, title="Upper Bollinger Band")
plot(bbLower, color=color.red, title="Lower Bollinger Band")
// Entry condition: MACD crosses signal line from below and RSI < 50
enterLong = macdCrossUp and rsi < 50
// Exit condition: MACD crosses signal line from above and close touches the Bollinger Band middle line
exitLong = macdCrossDown and rsi> 50
// Strategy logic
if (enterLong and strategy.position_size == 0)
strategy.entry("Buy", strategy.long)
if (exitLong and strategy.position_size > 0)
strategy.close("Buy")