Chiến lược này kết hợp các chỉ số kỹ thuật Bollinger Bands và Chỉ số sức mạnh tương đối (RSI). Nó tạo ra tín hiệu mua và bán khi chỉ số RSI vượt qua mức bán quá hoặc mua quá và giá chạm hoặc phá vỡ các Bollinger Bands.
Tính toán đường SMA 20 giai đoạn làm đường cơ sở. Dải trên là cơ sở + 2 độ lệch chuẩn và dải dưới là cơ sở - 2 độ lệch chuẩn để xây dựng các Dải Bollinger.
Tính toán chỉ số RSI 14 giai đoạn. RSI trên 70 là vùng mua quá mức và dưới 30 là vùng bán quá mức.
Khi chỉ số RSI vượt dưới 30 và giá thấp hơn dải dưới, một tín hiệu mua được tạo ra. Khi chỉ số RSI vượt trên 70 và giá cao hơn dải trên, một tín hiệu bán được tạo ra.
Bollinger Bands sử dụng độ lệch chuẩn để đánh giá sự biến động giá và xu hướng trong tương lai với khả năng mạnh.
RSI đánh giá mức mua quá mức và bán quá mức.
RSI rất dễ tạo ra các tín hiệu đột phá. Kết hợp với Bollinger Bands, các tín hiệu giao dịch chính xác và đáng tin cậy hơn.
Bollinger Bands không chính xác 100% và giá có thể vượt qua dải trên hoặc dưới và tiếp tục chạy.
RSI cũng có thể tạo ra các tín hiệu đột phá sai không phù hợp với Bollinger Bands.
Điều chỉnh tham số đúng là quan trọng. cài đặt không đúng có thể dẫn đến tín hiệu giao dịch quá thường xuyên hoặc hiếm.
Kiểm tra các khoảng thời gian tham số khác nhau để tìm ra sự kết hợp các tham số tối ưu.
Kết hợp các chỉ số khác như KD, MACD để cải thiện độ tin cậy tín hiệu.
Tối ưu hóa dừng lỗ và lấy lợi nhuận dựa trên kết quả backtest để kiểm soát rủi ro.
Chiến lược này tích hợp phân tích xu hướng Bollinger Bands và phán quyết bán quá mức RSI để tạo ra các tín hiệu giao dịch. Nhìn chung, logic chiến lược rõ ràng và dễ thực hiện với một giá trị thực tế nhất định. Nhưng nó cũng có một số rủi ro.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and RSI Strategy", overlay=false) // Define the parameters length = input.int(20, "Length", minval=1) src = input(close, "Source") mult = input.float(2.0, "StdDev", minval=0.001, maxval=50) rsiLength = input.int(14, "RSI Length", minval=1) rsiOverbought = input.int(70, "RSI Overbought Level", minval=1, maxval=100) rsiOversold = input.int(30, "RSI Oversold Level", minval=1, maxval=100) // Calculate the Bollinger Bands basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot the Bollinger Bands plot(basis, "Basis", color=#FF6D00) p1 = plot(upper, "Upper", color=#2962FF) p2 = plot(lower, "Lower", color=#2962FF) fill(p1, p2, color=color.rgb(33, 150, 243, 90), title="Background") // Calculate the RSI rsi = ta.rsi(src, rsiLength) // Plot the RSI plot(rsi, "RSI", color=#FF6D00) // Define the entry and exit conditions longCondition = ta.crossover(rsi, rsiOversold) and src < lower // Use ta.crossover here if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(rsi, rsiOverbought) and src > upper // Use ta.crossunder here if (shortCondition) strategy.entry("Short", strategy.short) // Plot the buy and sell signals plotshape(longCondition, title="Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(shortCondition, title="Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)