Dual RSI Mean Reversion Strategy adalah strategi trend yang mengenal pasti keadaan overbought dan oversold menggunakan dua penunjuk RSI pada jangka masa yang berbeza. Ia bertujuan untuk memanfaatkan pembalikan purata dengan pergi lama selepas keadaan oversold dan pergi pendek selepas keadaan overbought. Strategi ini menggunakan lilin Heikin-Ashi, penunjuk RSI dan penapis warna terbuka untuk mengenal pasti peluang perdagangan.
Strategi ini menggunakan dua penunjuk RSI dengan tempoh yang berbeza - satu pada carta 5 minit dan satu pada carta 1 jam.
Ia mengesan nilai RSI dan mencari situasi di mana RSI telah di bawah 30 atau di atas 70 untuk bilangan bar yang ditentukan, yang menunjukkan keadaan oversold atau overbought yang berpanjangan.
Di samping itu, ia menggunakan lilin Heikin-Ashi dan memeriksa jumlah lilin hijau atau merah yang ditentukan untuk mengesahkan arah trend sebelum memasuki perdagangan.
Apabila kedua-dua keadaan RSI dan Heikin-Ashi sejajar, strategi akan pergi lama selepas keadaan oversold atau pergi pendek selepas keadaan overbought, bertaruh pada pembalikan ke purata.
Posisi ditutup pada akhir setiap hari untuk mengelakkan perdagangan semalam.
Strategi pembalikan purata RSI berganda mengambil pendekatan berdasarkan peraturan untuk momentum dagangan. Dengan menggabungkan dua bingkai masa, penunjuk overbought / oversold, analisis lilin dan penapis kemasukan, ia bertujuan untuk mengenal pasti persediaan pembalikan purata kebarangkalian tinggi. Pengurusan risiko yang ketat dan ukuran kedudukan yang berhati-hati membantu menyeimbangkan keuntungan dengan menguruskan penarikan. Pengoptimuman dan ujian ketahanan yang lebih lanjut akan membantu menyebarkannya dengan berjaya di pelbagai pasaran.
/*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()