
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.
Strategi ini terbagi menjadi beberapa bagian, yaitu:
Hitung RSI reguler, RSI win rate, dan RSI Paris-Charles, dengan mengambil rata-rata dari ketiganya sebagai RSI Connor.
RSI cepat dihitung dengan menggunakan perubahan harga, yang mencerminkan siklus super pendek.
Perlu lebih banyak sinar matahari, sinar matahari kosong, untuk mencegah penembusan palsu.
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.
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.
Strategi ini memiliki keuntungan sebagai berikut:
RSI Connors mencerminkan siklus garis panjang, RSI cepat mencerminkan siklus garis pendek, keduanya dapat dikombinasikan untuk menentukan titik balik dengan lebih akurat.
Operasi hanya pada saat penembusan nyata, dapat mengurangi kerugian yang disebabkan oleh penembusan palsu.
Parameter RSI, jenis perdagangan, dan jangka waktu perdagangan dapat disesuaikan dengan pasar yang berbeda.
RSI dan entitas garis K adalah indikator dasar, logika strategi sederhana dan mudah dipahami.
Hanya menggunakan built-in indicator, sedikit kode, dan implementasi yang sulit.
Strategi ini menghadapi risiko utama sebagai berikut:
Setelah sinyal reversal, harga terus berlanjut dan menyebabkan kerugian.
Ini adalah salah satu contoh yang paling jelas dari apa yang terjadi di pasar Forex saat ini.
Penyaringan entitas tidak dapat sepenuhnya menghindari penembusan palsu.
Parameter RSI yang tidak tepat dapat menyebabkan peluang perdagangan yang terlewatkan atau beberapa transaksi yang tidak valid.
Indikator RSI gagal dalam situasi khusus, menghasilkan sinyal yang salah.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Optimalkan strategi stop loss agar stop loss lebih masuk akal dan mengurangi kerugian tunggal.
Menambahkan filter indikator seperti MACD, KD, dan lainnya untuk membuat sinyal lebih dapat diandalkan.
Perhitungan probabilitas, termasuk tren, dukungan, dan resistensi, untuk menghindari perdagangan probabilitas rendah.
Tes parameter untuk varietas dan siklus perdagangan yang berbeda untuk menemukan parameter yang optimal.
Untuk mengidentifikasi situasi khusus, berhenti berdagang dan hindari kerugian besar.
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
/*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()