Chiến lược đảo ngược trung bình RSI kép là một chiến lược theo xu hướng xác định các điều kiện mua quá mức và bán quá mức bằng cách sử dụng hai chỉ số RSI trên các khung thời gian khác nhau. Nó nhằm mục đích tận dụng sự đảo ngược trung bình bằng cách đi dài sau các điều kiện bán quá mức và đi ngắn sau các điều kiện mua quá mức. Chiến lược sử dụng nến Heikin-Ashi, chỉ số RSI và bộ lọc màu mở để xác định các cơ hội giao dịch.
Chiến lược này sử dụng hai chỉ số RSI với các khoảng thời gian khác nhau - một trên biểu đồ 5 phút và một trên biểu đồ 1 giờ. Đối với các chỉ số RSI, mức bán quá mức được xác định dưới 30 và mức mua quá mức trên 70.
Nó theo dõi các giá trị RSI và tìm kiếm các tình huống mà RSI đã dưới 30 hoặc trên 70 cho một số thanh xác định, chỉ ra các điều kiện bán quá mức hoặc mua quá mức kéo dài.
Ngoài ra, nó sử dụng nến Heikin-Ashi và kiểm tra một số nến màu xanh lá cây hoặc đỏ xác định để xác nhận hướng xu hướng trước khi tham gia giao dịch.
Khi cả hai điều kiện RSI và Heikin-Ashi phù hợp, chiến lược sẽ đi dài sau các điều kiện bán quá mức hoặc đi ngắn sau các điều kiện mua quá mức, đặt cược vào sự quay trở lại mức trung bình.
Các vị trí được đóng cửa vào cuối mỗi ngày để tránh giữ giao dịch qua đêm.
Chiến lược đảo ngược trung bình RSI kép có cách tiếp cận dựa trên quy tắc đối với đà giao dịch. Bằng cách kết hợp hai khung thời gian, chỉ số mua quá mức / bán quá mức, phân tích nến và bộ lọc đầu vào, nó nhằm mục đích xác định các thiết lập đảo ngược trung bình có khả năng cao. Quản lý rủi ro nghiêm ngặt và kích thước vị trí thận trọng giúp cân bằng lợi nhuận với việc quản lý giảm. Tăng cường tối ưu hóa hơn và kiểm tra độ bền sẽ giúp triển khai thành công trên các thị trường khác nhau.
/*backtest start: 2023-09-01 00:00:00 end: 2023-09-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Gidra //2018 //@version=2 strategy(title = "Gidra's Vchain Strategy v0.1", shorttitle = "Gidra's Vchain Strategy v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") rsiperiod = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI period") rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI limit") rsibars = input(3, defval = 3, minval = 1, maxval = 20, title = "RSI signals") useocf = input(true, defval = true, title = "Use Open Color Filter") openbars = input(2, defval = 2, minval = 1, maxval = 20, title = "Open Color, Bars") showrsi = input(true, defval = true, title = "Show indicator RSI") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day") //Heikin Ashi Open/Close Price o=open c=close h=high l=low haclose = (o+h+l+c)/4 haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2 hahigh = max (h, max(haopen,haclose)) halow = min (l, min(haopen,haclose)) col=haopen>haclose ? red : lime plotcandle(haopen, hahigh, halow, haclose, title="heikin", color=col) //RSI uprsi = rma(max(change(close), 0), rsiperiod) dnrsi = rma(-min(change(close), 0), rsiperiod) rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi)) uplimit = 100 - rsilimit dnlimit = rsilimit rsidn = rsi < dnlimit ? 1 : 0 rsiup = rsi > uplimit ? 1 : 0 //RSI condition rsidnok = highest(rsidn, rsibars) == 1? 1 : 0 rsiupok = highest(rsiup, rsibars) == 1? 1 : 0 //Color Filter bar = haclose > haopen ? 1 : haclose < haopen ? -1 : 0 gbar = bar == 1 ? 1 : 0 rbar = bar == -1 ? 1 : 0 openrbarok = sma(gbar, openbars) == 1 or useocf == false opengbarok = sma(rbar, openbars) == 1 or useocf == false //Signals up = openrbarok and rsidnok dn = opengbarok and rsiupok lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] //Indicator RSI colbg = showrsi == false ? na : rsi > uplimit ? red : rsi < dnlimit ? lime : na bgcolor(colbg, transp = 20) //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59)// or exit strategy.close_all()