Artikel ini akan merinci logika di balik Strategi Terobosan RSI Cepat Noro
I. Ringkasan Strategi
Strategi ini terutama menggunakan indikator RSI untuk menghasilkan sinyal perdagangan, dikombinasikan dengan penyaringan candlestick dan terobosan min / max sebagai penilaian tambahan, membentuk sistem keputusan panjang / pendek yang lengkap.
II. Rincian Strategi
Strategi ini menggunakan panjang 7 RSI cepat untuk menangkap tanda-tanda tren pasar melalui osilasi RSI cepat. Batas atas dan bawah 70 dan 30 juga ditetapkan untuk RSI memicu sinyal ketika dilanggar.
Strategi ini memfilter sinyal RSI menggunakan ukuran tubuh lilin sma, hanya mempertimbangkan sinyal RSI pada lilin dengan ukuran tubuh yang lebih besar dari ukuran tubuh rata-rata 5 hari, menghindari whipsaws.
Strategi ini memeriksa apakah terobosan min/max terjadi dalam mmbars baru-baru ini, dikombinasikan dengan tingkat RSI untuk menentukan pembalikan bawah dan pemecahan atas.
Sinyal panjang: RSI melintasi di bawah 30, ukuran tubuh melebihi ukuran tubuh rata-rata, dan min putus dukungan.
Sinyal pendek: RSI melintasi di atas 70, ukuran tubuh melebihi ukuran tubuh rata-rata, dan resistensi putus maksimum.
Sinyal keluar: Ketika RSI melintasi kembali batas ke arah yang berlawanan dengan posisi.
III. Keuntungan dari Strategi
Parameter RSI yang dioptimalkan menangkap perubahan tren dengan cepat.
Menggabungkan dengan candlesticks dan min/max mencegah whipsaws yang tidak perlu.
Mekanisme stop loss keluar saat RSI kembali melewati batas.
IV. Risiko dari Strategi
RSI rentan terhadap sinyal palsu, membutuhkan konfirmasi tambahan.
Kembali tes risiko overfit. parameter dioptimalkan mungkin hanya cocok periode pasar tertentu.
Mekanisme stop loss mungkin terlalu mekanis, tidak mampu mengendalikan kerugian besar pada stop loss tunggal.
V. Kesimpulan
Strategi ini mengintegrasikan beberapa indikator teknis untuk mengikuti tren yang kuat. Tetapi risiko overfit backtest dan stop loss harus dicatat, dan kinerja langsung harus dievaluasi dengan hati-hati.
/*backtest start: 2022-09-11 00:00:00 end: 2023-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.6", shorttitle = "Fast RSI str 1.6", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usersi = input(true, defval = true, title = "Use Fast RSI Strategy") usemm = input(true, defval = true, title = "Use Min/Max Strategy") usebc = input(true, defval = true, title = "Use BarColor Strategy") usesma = input(false, defval = false, title = "Use SMA Filter") smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period") fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period") limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit") rsisrc = input(close, defval = close, title = "RSI Price") rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars") mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars") showsma = input(false, defval = false, title = "Show SMA Filter") showarr = input(false, defval = false, title = "Show Arrows") 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") //Fast RSI fastup = rma(max(change(rsisrc), 0), fast) fastdown = rma(-min(change(rsisrc), 0), fast) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 uplimit = 100 - limit dnlimit = limit //RSI Bars upsignal = fastrsi > uplimit ? 1 : 0 dnsignal = fastrsi < dnlimit ? 1 : 0 uprsi = sma(upsignal, rsibars) == 1 dnrsi = sma(dnsignal, rsibars) == 1 //Body body = abs(close - open) abody = sma(body, 10) //MinMax Bars min = min(close, open) max = max(close, open) minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0 maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0 mins = sma(minsignal, mmbars) == 1 maxs = sma(maxsignal, mmbars) == 1 //SMA Filter sma = sma(close, smaperiod) colorsma = showsma ? blue : na plot(sma, color = colorsma, linewidth = 3) //Signals up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > abody / 5 and usersi dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm up3 = sma(bar, 2) == -1 and usebc dn3 = sma(bar, 2) == 1 and usebc exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 2 //Arrows col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na needup = up1 or up2 needdn = dn1 or dn2 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading if up1 or up2 or up3 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 or dn3 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : na, 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()