Strategi Terobosan RSI Cepat Noro

Penulis:ChaoZhang, Tanggal: 2023-09-12 11:40:02
Tag:

Artikel ini akan merinci logika di balik Strategi Terobosan RSI Cepat Noro, menjelaskan bagaimana sinyal perdagangan dihasilkan, dan menganalisis keuntungan dan risiko potensial dari strategi ini.

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

  1. Pengaturan RSI Cepat

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.

  1. Penyaringan Lilin

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.

  1. Penembusan Min/Max

Strategi ini memeriksa apakah terobosan min/max terjadi dalam mmbars baru-baru ini, dikombinasikan dengan tingkat RSI untuk menentukan pembalikan bawah dan pemecahan atas.

  1. Ringkasan Sinyal Trading

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

  1. Parameter RSI yang dioptimalkan menangkap perubahan tren dengan cepat.

  2. Menggabungkan dengan candlesticks dan min/max mencegah whipsaws yang tidak perlu.

  3. Mekanisme stop loss keluar saat RSI kembali melewati batas.

IV. Risiko dari Strategi

  1. RSI rentan terhadap sinyal palsu, membutuhkan konfirmasi tambahan.

  2. Kembali tes risiko overfit. parameter dioptimalkan mungkin hanya cocok periode pasar tertentu.

  3. 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()

Lebih banyak