Tên của chiến lược này là
Chỉ số cốt lõi của chiến lược này là Bollinger Bands, bao gồm dải giữa, dải trên và dải dưới. Dải giữa là đường trung bình động n-period, dải trên là dải giữa cộng với k lần độ lệch chuẩn n-period, và dải dưới là dải giữa trừ k lần độ lệch chuẩn n-period. Khi giá tiếp cận dải trên, thị trường được đánh giá quá cao và các vị trí ngắn nên được xem xét. Khi giá tiếp cận dải dưới, thị trường được đánh giá thấp và các vị trí dài nên được xem xét.
Ngoài Bollinger Bands, chiến lược này kết hợp chỉ số RSI như một bộ lọc cho các tín hiệu đầu vào. RSI đánh giá xem thị trường có bị mua quá mức hay bán quá mức không. Giá trị trên 70 cho thấy điều kiện mua quá mức và giá trị dưới 30 cho thấy điều kiện bán quá mức. Chiến lược này chỉ tham gia giao dịch khi Bollinger Bands đưa ra tín hiệu đồng thời với RSI đạt mức mua quá mức hoặc bán quá mức.
Cụ thể, khi giá phá vỡ trên Bollinger Band dưới từ dưới trong khi chỉ số RSI dưới 30, một tín hiệu mua được tạo ra. Khi giá phá vỡ dưới Bollinger Band trên từ trên trong khi chỉ số RSI trên 70, một tín hiệu bán được tạo ra.
Chiến lược này kết hợp Bollinger Bands với chỉ số RSI để xác định hiệu quả các điều kiện thị trường mua quá mức và bán quá mức, tránh tổn thất không cần thiết từ các vụ phá vỡ sai.
Chiến lược này có ít tham số và dễ thực hiện, phù hợp với các nhà giao dịch định lượng ở tất cả các cấp độ kỹ năng.
Tóm lại, những lợi thế là:
Một số rủi ro cần lưu ý với chiến lược này bao gồm:
Để kiểm soát những rủi ro này:
Các cải tiến khác:
Những cải tiến này có thể cải thiện sự ổn định, tối ưu hóa các thông số và tăng cường quản lý rủi ro.
Tuy nhiên, vẫn còn chỗ để cải thiện thông qua tối ưu hóa tham số và kiểm soát rủi ro để điều chỉnh hiệu suất trong các điều kiện thị trường khác nhau, một lĩnh vực đòi hỏi nghiên cứu thêm.
/*backtest start: 2023-10-28 00:00:00 end: 2023-11-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Strategy with RSI Filter", overlay=true) source = close length = input.int(20, minval=1) mult = input.float(2.0, minval=0.001, maxval=50) basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev // RSI Filter rsiLength = input(14, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") rsiValue = ta.rsi(source, rsiLength) // Buy and Sell Conditions with RSI Filter buyEntry = ta.crossover(source, lower) and rsiValue < rsiOversold sellEntry = ta.crossunder(source, upper) and rsiValue > rsiOverbought // Entry and Exit Logic if (buyEntry) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (sellEntry) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") // Plot Bollinger Bands on the chart plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") // Plot RSI on the chart hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsiValue, color=color.blue, title="RSI") // Plot buy and sell signals on the chart plotshape(series=buyEntry, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar) plotshape(series=sellEntry, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)