Strategi Pembalikan Momentum RSI


Tarikh penciptaan: 2023-11-07 15:45:15 Akhirnya diubah suai: 2023-11-07 15:45:15
Salin: 0 Bilangan klik: 427
1
fokus pada
1166
Pengikut

Strategi Pembalikan Momentum RSI

Gambaran keseluruhan

Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi menggunakan RSI dan RSI Rapid bersama-sama dengan penapis entiti K-Line untuk mengenal pasti peluang berbalik. Strategi ini digunakan untuk mengenal pasti peluang berbalik dengan menggabungkan RSI dan arah entiti K-Line.

Prinsip Strategi

Strategi ini dilaksanakan melalui beberapa bahagian:

  1. Indeks RSI Connors

Hitung RSI biasa, RSI kemenangan, dan RSI Paris-Charles dengan mengambil purata ketiga-tiga sebagai RSI Connors.

  1. Indeks RSI pantas

RSI cepat dikira menggunakan perubahan harga, yang mencerminkan kitaran ultra pendek.

  1. Penapis entiti K

Perlu lebih banyak sunlight, kosongkan sunlight, untuk mengelakkan penembusan palsu.

  1. Keadaan ruang kosong

Connors RSI di bawah 20, RSI pantas di bawah 25 dan garis matahari yang nyata, lakukan lebih banyak.

Apabila RSI Connors lebih tinggi daripada 80, RSI pantas lebih tinggi daripada 75, garis hitam fizikal muncul, kosong.

  1. Penangguhan kerugian

Entiti bertukar kepada berhenti rugi keluar.

Dengan menggunakan RSI Connors untuk menentukan titik pembalikan trend panjang, RSI cepat untuk menentukan titik pembalikan trend pendek, entiti K-line memastikan keberkesanan penembusan, sehingga ia dapat secara berkesan mencari peluang pembalikan, dan melakukan operasi pembalikan tepat pada masanya untuk membeli dan menjual.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Gabungan panjang dan pendek

Connors RSI mencerminkan kitaran panjang, RSI cepat mencerminkan kitaran pendek, kedua-duanya digabungkan untuk lebih tepat menentukan titik pembalikan.

  1. Penapisan entiti

Operasi hanya semasa penembusan sebenar dapat mengurangkan kerugian akibat penembusan palsu.

  1. Parameter boleh disesuaikan

Parameter RSI, jenis dagangan dan tempoh dagangan boleh disesuaikan dengan pasaran yang berbeza.

  1. Mudah dan Intuitif

RSI dan entiti garis K adalah indikator asas, logik strategi mudah difahami.

  1. Mudah dilaksanakan

Ia hanya menggunakan penunjuk terbina dalam, kurang kod, dan kurang sukar untuk dilaksanakan.

Analisis risiko

Strategi ini mempunyai risiko utama:

  1. Risiko Kegagalan

Selepas isyarat pembalikan, harga terus bergerak dan menyebabkan kerugian.

  1. Risiko Keadaan Bergolak

Ia juga menyebabkan banyak dagangan tidak sah.

  1. Risiko penembusan palsu

Penapisan entiti tidak dapat sepenuhnya mengelakkan penembusan palsu.

  1. Parameter yang menetapkan risiko

Parameter RSI ditetapkan dengan tidak betul, yang boleh menyebabkan peluang perdagangan yang terlewatkan atau beberapa perdagangan yang tidak sah.

  1. Risiko dalam situasi khas

Dalam keadaan tertentu, RSI tidak berfungsi dan menghasilkan isyarat yang salah.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Meningkatkan mekanisme kawalan kerugian

Mengoptimumkan strategi berhenti kerugian untuk membuat berhenti kerugian lebih munasabah dan mengurangkan kerugian tunggal.

  1. Mengintegrasikan pelbagai petunjuk

Tambahan penapis MACD, KD dan lain-lain untuk meningkatkan kebolehpercayaan isyarat.

  1. Penapisan kebarangkalian

Menggabungkan kebarangkalian penilaian seperti trend, sokongan dan rintangan, dan mengelakkan perdagangan kebarangkalian rendah.

  1. Tetapan parameter optimum

Uji parameter untuk pelbagai jenis perdagangan dan kitaran untuk mencari parameter yang optimum.

  1. Mengelakkan situasi istimewa

Mengenali keadaan yang tidak biasa, berhenti berdagang, dan mengelakkan kerugian besar.

ringkaskan

Strategi RSI dinamika berbalik dengan Connor RSI dan RSI cepat untuk menentukan garis pendek panjang berbalik, bersama dengan penapis entiti K-line untuk meningkatkan keberkesanan isyarat. Strategi ini mempunyai kelebihan seperti kombinasi indikator, fleksibiliti untuk menyesuaikan parameter, dan dapat menangkap peluang berbalik, serta-merta campur tangan dalam perdagangan ketika overbought dan oversold. Tetapi strategi ini juga mempunyai risiko tertentu kegagalan berbalik, penembusan palsu, penembusan palsu, dan lain-lain.

Kod sumber strategi
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, 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")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, 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")

//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
    roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3

//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)

//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false

//Signals

up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()