Chiến lược phá vỡ phạm vi RSI là một chiến lược theo dõi xu hướng điển hình. Nó sử dụng chỉ số tương đối mạnh (RSI) làm chỉ số kỹ thuật chính, tìm kiếm cơ hội phá vỡ phạm vi để tạo vị trí khi RSI đang quá mua hoặc quá bán, nhằm mục đích theo dõi xu hướng.
Chiến lược này dựa chủ yếu vào chỉ số RSI để đánh giá tình trạng quá mua quá bán của thị trường. Công thức tính toán của chỉ số RSI là: RSI = ((trung bình giá tăng / giá tăng + giá giảm) × 100). Trong đó, giá tăng là trung bình di chuyển đơn giản của mức tăng mua bán trong vòng N ngày qua, giá giảm là trung bình di chuyển đơn giản của mức giảm mua bán trong vòng N ngày qua.
Khi RSI lớn hơn so với đường mua quá mức được thiết lập (đặc biệt là 80), thị trường đang ở trạng thái mua quá mức; khi RSI nhỏ hơn so với phạm vi bán quá mức được thiết lập (đặc biệt là 35), thị trường đang ở trong phạm vi bán quá mức. Chiến lược tìm kiếm cơ hội giảm giá khi RSI phá vỡ đường mua quá mức xuống; tìm kiếm cơ hội mua nhiều khi RSI phá vỡ phạm vi bán quá mức lên.
Cụ thể, chiến lược đánh giá xu hướng của chỉ số RSI thông qua hai đường SMA trung bình. Khi đường nhanh từ dưới lên phá vỡ đường chậm và RSI phá vỡ phạm vi bán tháo, hãy làm nhiều hơn; Khi đường nhanh từ trên xuống phá vỡ đường chậm và RSI phá vỡ đường mua quá, hãy làm hỏng.
Chiến lược phá vỡ khoảng RSI nói chung là một chiến lược theo dõi xu hướng điển hình. Nó sử dụng chỉ số RSI để đánh giá điểm mua và bán, lọc tín hiệu đường trung bình hai SMA và thiết lập điểm dừng để kiểm soát rủi ro. Nhưng chỉ số RSI có vấn đề về độ trễ, ngoài ra, cài đặt tham số không đúng cũng có thể ảnh hưởng đến hiệu suất của chiến lược. Bằng cách tối ưu hóa hơn nữa, có thể tận dụng đầy đủ khả năng theo dõi xu hướng của chiến lược này.
/*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)