Chiến lược phá vỡ phạm vi RSI là một chiến lược theo xu hướng điển hình. Nó sử dụng Chỉ số Sức mạnh Tương đối (RSI) làm chỉ số kỹ thuật chính để tìm kiếm các cơ hội phá vỡ khi RSI ở mức mua quá mức hoặc bán quá mức, với mục tiêu theo xu hướng.
Chiến lược này chủ yếu dựa trên chỉ số RSI để xác định mức mua quá mức và bán quá mức trên thị trường. Công thức tính toán RSI là: RSI = (Giá trị tăng trung bình / (Giá trị tăng trung bình + Giá trị giảm trung bình)) x 100. Giá trị tăng trung bình là trung bình di chuyển đơn giản của các kích thước cận cảnh trong N ngày qua. Giá trị giảm trung bình là trung bình di chuyển đơn giản của các kích thước cận cảnh trong N ngày qua.
Khi chỉ số RSI cao hơn đường mua quá mức (thất định 80), nó chỉ ra thị trường đang ở trạng thái mua quá mức. Khi chỉ số RSI thấp hơn vùng bán quá mức (thất định 35), nó chỉ ra thị trường đang ở trạng thái bán quá mức. Chiến lược tìm kiếm các cơ hội ngắn khi chỉ số RSI phá vỡ đường mua quá mức và các cơ hội dài khi chỉ số RSI phá vỡ vùng bán quá mức.
Cụ thể, chiến lược sử dụng hai đường SMA để xác định xu hướng của chỉ số RSI. Khi đường SMA nhanh hơn phá vỡ đường SMA chậm hơn, trong khi RSI phá vỡ vùng bán quá mức, đi dài. Khi đường SMA nhanh hơn phá vỡ đường SMA chậm hơn, trong khi RSI phá vỡ đường mua quá mức, đi ngắn. Chiến lược cũng thiết lập dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro.
Chiến lược đột phá phạm vi RSI là một chiến lược theo xu hướng điển hình nói chung. Nó xác định các tín hiệu giao dịch thông qua chỉ số RSI, lọc các tín hiệu với đường SMA kép và thiết lập dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro. Nhưng chỉ số RSI có các vấn đề chậm trễ và cài đặt tham số không đúng cũng ảnh hưởng đến hiệu suất chiến lược. Khả năng theo xu hướng có thể được thực hiện đầy đủ thông qua tối ưu hóa hơn nữa.
/*backtest start: 2023-09-10 00:00:00 end: 2023-10-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy("Strategy RSI | Fadior", shorttitle="Strategy RSI", pyramiding=10, calc_on_order_fills=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false) len = input(3, minval=1, title="RSI Length") threshLow = input(title="Treshold Low", defval=35) threshHigh = input(title="Treshold High", defval=80) rsiLength1 = input(title="RSI Smoothing 1", defval=3) rsiLength2 = input(title="RSI Smoothing 2", defval=5) SL = input(title="Stop loss %", type=float, defval=.026, step=.001) TP = input( defval=300) // 3 40 70 2 // 14 40 70 2 16 0.05 50 src = close up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(sma(rsi,rsiLength2), color=orange) plot(sma(rsi,rsiLength1), color=green) band1 = hline(threshHigh) band0 = hline(threshLow) fill(band1, band0, color=purple, transp=90) strategy = input(type=bool, title="Long only ?", defval=true) strategy.risk.allow_entry_in(strategy ? strategy.direction.long : strategy.direction.all) longCondition = sma(rsi,rsiLength1) < threshLow and sma(rsi,rsiLength2) > sma(rsi,rsiLength2)[1] if (longCondition) strategy.entry("Long", strategy.long) //, qty=10) strategy.exit("Close Long", "Long", stop=src-close*SL, profit=TP) shortCondition = sma(rsi,rsiLength1) > threshHigh and sma(rsi,rsiLength2) < sma(rsi,rsiLength2)[1] if (shortCondition) strategy.entry("Short", strategy.short) //, qty=10) strategy.exit("Close Short", "Short") //, stop=src-close*SL, profit=TP)