Chiến lược đột phá RSI-BB kết hợp các chỉ số Relative Strength Index (RSI) và Bollinger Bands (BB) để giao dịch đột phá. Nó sử dụng RSI để xác định xu hướng thị trường và mức mua quá mức / bán quá mức, và BB để xác định các điểm đột phá. Khi cả hai tín hiệu RSI và BB liên kết, chiến lược sẽ vào giao dịch dài hoặc ngắn theo đó.
Mã đầu tiên tính toán các chỉ số RSI và BB.
RSI được tính như sau:
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
Trong khi tăng đo xu hướng tăng giá trong 30 khoảng thời gian, giảm đo xu hướng giảm giá, và rsi được tính dựa trên tỷ lệ tăng xuống.
BB được tính như sau:
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
Trong đó cơ sở là trung bình động 50 giai đoạn, dev là 0,2 lần độ lệch chuẩn, trên và dưới là các băng tần.
bbi là chỉ số băng thông bollinger, được tính như sau:
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr kiểm tra xem gần có phá vỡ dải trên hoặc dưới không. Breakout là 1, phá vỡ là -1, nếu không thì 0. bbi là sự khác biệt giữa bbr hiện tại và trước đó.
Các tín hiệu chiến lược được xác định như sau:
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
Đi dài khi RSI nằm trong khoảng 52-65 và BBI nằm trong khoảng 0,11 và 0,7.
Kết hợp RSI và BB cung cấp các tín hiệu đáng tin cậy hơn. RSI đo xu hướng và mức mua quá mức / bán quá mức, BB xác định đột phá.
Chỉ số RSI 30 giai đoạn lọc ra một số tiếng ồn thị trường và tập trung vào các xu hướng chính.
BB 50 giai đoạn với 0,2 độ lệch chuẩn giúp lọc ra các whipsaws.
Các ngưỡng BBI lọc các vụ trốn thoát giả.
Các vùng RSI dài / ngắn 52-65 và 35-48 cung cấp một số đệm để tránh các giao dịch bị bỏ lỡ.
Các chiến lược breakout có xu hướng bị mắc kẹt trong các whipsaws, cần phải quản lý rủi ro bằng cách dừng lỗ.
Kết quả thử nghiệm có thể bị quá tải, hiệu suất thực tế có thể thay đổi.
Các động thái thị trường cực đoan có thể gây ra lỗ dừng dẫn đến lỗ lớn.
Các thông số RSI và BB bao gồm thời gian và ngưỡng cần được tối ưu hóa.
Giá đặt hàng có thể ảnh hưởng đáng kể đến hiệu suất trực tiếp.
Kiểm tra các kết hợp khác nhau của các thông số RSI và BB để tìm các thiết lập tối ưu.
Thêm các chỉ số khác như MACD, KD để lọc tín hiệu.
Tối ưu hóa các vùng RSI dài / ngắn để lọc ra nhiều tiếng ồn hơn.
Tối ưu hóa các ngưỡng BBI động để lọc tốt hơn các giả mạo.
Thêm bộ lọc xu hướng để tránh giao dịch chống lại xu hướng chính.
Kiểm tra các kỹ thuật dừng lỗ khác nhau để tìm kiểm soát rủi ro tối ưu.
Kiểm tra các loại lệnh khác nhau để giảm thiểu tác động trượt.
Chiến lược RSI-BB kết hợp các lợi thế của việc sử dụng các chỉ số xu hướng và động lực. Kết quả kiểm tra lại hứa hẹn nhưng hiệu suất trực tiếp có thể thay đổi do các yếu tố thực tế như trượt và dừng lỗ. Các thông số và bộ lọc cần được tối ưu hóa dựa trên kết quả kiểm tra lại.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)