Strategi Pembalikan Momentum RSI


Tanggal Pembuatan: 2023-11-07 15:45:15 Akhirnya memodifikasi: 2023-11-07 15:45:15
menyalin: 0 Jumlah klik: 773
1
fokus pada
1617
Pengikut

Strategi Pembalikan Momentum RSI

Ringkasan

Strategi RSI Dynamic Reversal Trading (RSI Dynamic Reversal Trading) menggunakan indikator RSI dan arah entitas K-Line untuk mengidentifikasi overbought dan oversold. Strategi ini menggunakan RSI konvensional dan RSI cepat secara bersamaan, dan bekerja dengan filter entitas K-Line, untuk mengidentifikasi peluang reversal secara efektif.

Prinsip Strategi

Strategi ini terbagi menjadi beberapa bagian, yaitu:

  1. Indeks RSI Connors

Hitung RSI reguler, RSI win rate, dan RSI Paris-Charles, dengan mengambil rata-rata dari ketiganya sebagai RSI Connor.

  1. Indikator RSI cepat

RSI cepat dihitung dengan menggunakan perubahan harga, yang mencerminkan siklus super pendek.

  1. K-line entitas filter

Perlu lebih banyak sinar matahari, sinar matahari kosong, untuk mencegah penembusan palsu.

  1. Kondisi kosong

RSI Connors di bawah 20 dan RSI Rapid di bawah 25 menunjukkan garis positif.

Ketika RSI Connors lebih tinggi dari 80, RSI Rapid lebih tinggi dari 75, garis entitas muncul, dan kosong.

  1. Stop Loss Keluar

Entitas berputar saat stop loss keluar.

Dengan Connor RSI untuk menentukan titik pembalikan tren panjang, RSI cepat untuk menentukan titik pembalikan tren pendek, entitas K-line untuk memastikan efisiensi terobosan, sehingga dapat secara efektif menemukan peluang pembalikan, dan melakukan operasi reversal tepat waktu pada overbought dan oversold.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Kombinasi indikator garis panjang pendek

RSI Connors mencerminkan siklus garis panjang, RSI cepat mencerminkan siklus garis pendek, keduanya dapat dikombinasikan untuk menentukan titik balik dengan lebih akurat.

  1. Filter entitas

Operasi hanya pada saat penembusan nyata, dapat mengurangi kerugian yang disebabkan oleh penembusan palsu.

  1. Parameter yang dapat disesuaikan

Parameter RSI, jenis perdagangan, dan jangka waktu perdagangan dapat disesuaikan dengan pasar yang berbeda.

  1. Sederhana dan Intuitif

RSI dan entitas garis K adalah indikator dasar, logika strategi sederhana dan mudah dipahami.

  1. Mudah diterapkan

Hanya menggunakan built-in indicator, sedikit kode, dan implementasi yang sulit.

Analisis risiko

Strategi ini menghadapi risiko utama sebagai berikut:

  1. Resiko kegagalan terbalik

Setelah sinyal reversal, harga terus berlanjut dan menyebabkan kerugian.

  1. Risiko Guncangan

Ini adalah salah satu contoh yang paling jelas dari apa yang terjadi di pasar Forex saat ini.

  1. Penembusan palsu

Penyaringan entitas tidak dapat sepenuhnya menghindari penembusan palsu.

  1. Parameter yang mengatur risiko

Parameter RSI yang tidak tepat dapat menyebabkan peluang perdagangan yang terlewatkan atau beberapa transaksi yang tidak valid.

  1. Risiko Situasi Khusus

Indikator RSI gagal dalam situasi khusus, menghasilkan sinyal yang salah.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Meningkatkan mekanisme penghentian kerugian

Optimalkan strategi stop loss agar stop loss lebih masuk akal dan mengurangi kerugian tunggal.

  1. Integrasi berbagai indikator

Menambahkan filter indikator seperti MACD, KD, dan lainnya untuk membuat sinyal lebih dapat diandalkan.

  1. Meningkatkan filter probabilitas

Perhitungan probabilitas, termasuk tren, dukungan, dan resistensi, untuk menghindari perdagangan probabilitas rendah.

  1. Pengaturan Parameter Optimasi

Tes parameter untuk varietas dan siklus perdagangan yang berbeda untuk menemukan parameter yang optimal.

  1. Mencegah Kejadian Khusus

Untuk mengidentifikasi situasi khusus, berhenti berdagang dan hindari kerugian besar.

Meringkaskan

Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Reversal Strategi RSI Dynamic Revers

Kode 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()