Chiến lược VRSI và MARSI sử dụng đường trung bình động để làm mịn các chỉ số RSI và thực hiện một chiến lược chỉ số kép. Nó sử dụng cả chỉ số RSI của giá và khối lượng, kết hợp với đường trung bình động của chúng, để tạo ra tín hiệu giao dịch. Nó đi dài khi giá RSI tăng và đi ngắn khi giá RSI giảm. Trong khi đó, nó quan sát những thay đổi trong khối lượng RSI để đánh giá sức mạnh của thị trường và những thay đổi xu hướng có thể xảy ra.
Chiến lược đầu tiên tính toán chỉ số RSI giá 9 giai đoạn (RSI) và chỉ số RSI khối lượng 9 giai đoạn (VRSI). sau đó nó tính toán trung bình di chuyển đơn giản 5 giai đoạn (MARSI và MAVRSI) của hai chỉ số RSI này.
Các tín hiệu giao dịch được tạo ra dựa trên chỉ số MARSI. Nó đi dài khi MARSI tăng và đi ngắn khi MARSI giảm. Ngoài ra, chỉ số MAVRSI được sử dụng để đánh giá sức mạnh thị trường và những thay đổi xu hướng có thể xảy ra.
Ví dụ, trong một xu hướng tăng, nếu giá tiếp tục tăng nhưng khối lượng bắt đầu giảm, điều này báo hiệu rằng sức mạnh tăng có thể đang suy yếu và người ta nên chuẩn bị để đóng các vị trí dài. Ngược lại, trong một xu hướng giảm, nếu giá tiếp tục giảm nhưng khối lượng tăng, điều này báo hiệu tăng cường sức mạnh giảm và các vị trí ngắn có thể được giữ thêm.
Bằng cách kết hợp các đường trung bình động của các chỉ số RSI kép, chiến lược này có thể nắm bắt hiệu quả xu hướng, trong khi sử dụng thay đổi khối lượng để đánh giá sức mạnh thị trường và tránh bị mắc kẹt.
Việc sử dụng đường trung bình động cũng lọc ra một số tiếng ồn để làm cho các tín hiệu đáng tin cậy hơn. Ngoài ra, các thiết lập tham số khác nhau như thời gian RSI và thời gian trung bình động cung cấp khả năng tối ưu hóa chiến lược.
Rủi ro lớn của chiến lược này nằm ở sự khác biệt có thể xảy ra giữa các chỉ số kép. Khi có sự khác biệt giữa giá và khối lượng, các tín hiệu giao dịch có thể trở nên kém đáng tin cậy hơn.
Một rủi ro khác là bị mắc kẹt trong các thị trường giới hạn phạm vi. Khi giá di chuyển trong phạm vi, chỉ số RSI có xu hướng dao động lên xuống, kích hoạt các giao dịch không cần thiết. Điều chỉnh tham số hoặc đánh giá mức độ tuyệt đối của các chỉ số sau đó là cần thiết.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Điều chỉnh các tham số của RSI và đường trung bình động để tìm kết hợp tối ưu
Thêm các điều kiện khác khi tạo tín hiệu, ví dụ: tín hiệu đảo ngược được kích hoạt trong khu vực mua quá mức / bán quá mức có xu hướng đáng tin cậy hơn
Thêm các chiến lược dừng lỗ như dừng lỗ di chuyển hoặc chỉ báo dừng lỗ
Bao gồm các chỉ số khác ví dụ như mô hình nến, chỉ số biến động vv để tránh bẫy
Chiến lược VRSI và MARSI kết hợp thành công các chỉ số RSI của giá và khối lượng. So sánh và đánh giá giữa các chỉ số kép có thể cải thiện độ chính xác và lợi nhuận của tín hiệu. Tối ưu hóa tham số và chiến lược dừng lỗ cũng làm cho hoạt động ổn định có thể. Tóm lại, bằng cách kết hợp các chỉ số, chiến lược này đạt được hiệu suất vượt trội so với một chỉ số RSI duy nhất.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("VRSI-MARSI Strategy", shorttitle="(V/MA)RSI Str.", overlay=false, default_qty_type=strategy.percent_of_equity, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0, default_qty_value=5, initial_capital=100) // RSI(close, ="RSI") and RSI(Volume, ="VRSI") src = close, len = input(9, minval=1, title="Length RSI") src2 = volume, len2 = input(9, minval=1, title="Length VRSI)") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) up2 = rma(max(change(src2), 0), len2) down2 = rma(-min(change(src2), 0), len2) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2)) // MA(=Moving Average) of RSI(close, ="MARSI") and RSI(Volume, ="MAVRSI") len3 = input(5, minval=1, title="Length MARSI") marsi = sma(rsi, len3) len4 = input(5, minval=1, title="Length MAVRSI") marsi2 = sma(rsi2, len4) // Plot: // Default plot of RSI and VRSI: not visible but can be made visible // Default plot MARSI and MAVRSI: visible p1 = plot(rsi, linewidth=2, transp=100, color=color.yellow, title="RSI") p2 = plot(rsi2, linewidth=2, transp=100, color=color.orange, title="VRSI") m1 = plot(marsi, color=(marsi>=0 ? (marsi[1] < marsi ? color.yellow : color.blue) : (marsi[1] < marsi ? color.yellow : color.blue) ), linewidth = 2, transp = 0, title="MARSI") m2 = plot(marsi2, color=color.orange, linewidth = 2, transp = 0, title="MAVRSI") // Color fill: // Default color fill "RSI - VRSI": not visible but can be made visible // Default color fill "MARSI - MAVRSI": visible fill(p1,p2, color = rsi>rsi2 ? color.green : color.red, transp=100, title="BG RSI-VRSI") fill(m1,m2, color = marsi>marsi2 ? color.green : color.red, transp=75, title="BG MARSI-MAVRSI") // Lines: h2=hline(20, color=color.green, linestyle=hline.style_dotted, title="Extreme Oversold Rsi") h3=hline(30, color=color.black, linestyle=hline.style_dotted, title="Oversold Rsi") h5=hline(50, color=color.yellow, linestyle=hline.style_dashed, title="Middle line") h7=hline(70, color=color.black, linestyle=hline.style_dotted, title="Overbought Rsi") h8=hline(80, color=color.red, linestyle=hline.style_dotted, title="Extreme Overbought Rsi") // Color fill between Lines "20-30" and "70-80" represents the crossing of "MARSI" and "MAVRSI": fill(h2, h3, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="20-30 BG color X MARSI/MAVRSI") fill(h7, h8, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="70-80 BG color X MARSI/MAVRSI") ///Long Entry/// longCondition = marsi > marsi[1] if (longCondition) strategy.entry("Long", strategy.long) ///Long exit/// Xlong =input(true) closeConditionLong = marsi < marsi[1] and Xlong if (closeConditionLong) strategy.close("Long") ///Short Entry/// shortCondition = marsi < marsi[1] if (shortCondition) strategy.entry("Short", strategy.short) ///Short exit/// Xshort =input(true) closeConditionShort = marsi > marsi[1] and Xshort if (closeConditionShort) strategy.close("Short")