Strategi perdagangan kuantitatif berdasarkan RSI


Tarikh penciptaan: 2023-12-06 17:17:16 Akhirnya diubah suai: 2023-12-06 17:17:16
Salin: 0 Bilangan klik: 327
1
fokus pada
1166
Pengikut

Strategi perdagangan kuantitatif berdasarkan RSI

Gambaran keseluruhan

Strategi ini dinamakan “RSI Reversal” dan merupakan strategi perdagangan kuantitatif berdasarkan indeks kekuatan relatif (RSI). Strategi ini menggunakan dua kitaran RSI yang berbeza sebagai isyarat membeli dan menjual untuk mencapai harga rendah dan tinggi dan mendapatkan peluang perdagangan yang dibawa oleh harga saham.

Prinsip Strategi

Strategi ini menggunakan RSI jangka masa cepat (default 55 hari) dan RSI jangka masa perlahan (default 126 hari) untuk membina isyarat perdagangan. Ia menghasilkan isyarat beli apabila RSI jangka masa cepat melintasi RSI jangka masa perlahan, dan sebaliknya menghasilkan isyarat jual apabila RSI jangka masa cepat melintasi RSI jangka masa perlahan. Dengan cara ini, peluang pembalikan trend jangka pendek dan jangka panjang dapat dijumpai dengan membandingkan kekuatan relatif pergerakan harga dalam dua tempoh masa yang berbeza.

Selepas masuk ke isyarat, strategi akan menetapkan titik hentian berhenti. Titik hentian secara default 0.9 kali harga masuk, titik hentian secara default 3% dari harga masuk. Pada masa yang sama, apabila isyarat pembalikan muncul semula, ia akan meratakan kedudukan semasa.

Kelebihan Strategik

  • Perbandingan RSI dua arah untuk mencari titik perubahan dalam trend harga jangka pendek dan jangka panjang untuk menangkap peluang untuk berbalik
  • RSI ganda menghapuskan bising perdagangan yang disebabkan oleh penembusan palsu
  • Mengkonfigurasi titik henti-henti yang boleh mengehadkan kerugian tunggal

Risiko Strategik

  • Sinyal RSI mungkin sering berbalik semasa harga saham bergelombang
  • Stop loss yang terlalu kecil boleh menyebabkan stop loss selepas gempa kecil
  • Parameter RSI berganda tidak betul dan mungkin terlepas daripada perubahan besar

Pengoptimuman Strategi

  • Parameter RSI boleh menguji lebih banyak kombinasi untuk mencari parameter terbaik
  • Penapis penembusan palsu boleh digabungkan dengan petunjuk lain
  • Secara dinamik menyesuaikan peratusan stop-loss untuk menjadikan stop-loss lebih fleksibel

ringkaskan

Strategi ini menggunakan RSI berputar balik pada dua paksi masa dengan membandingkan kedua-dua RSI dalam kitaran yang lebih cepat dan kitaran yang lebih perlahan sebagai isyarat perdagangan, dengan tujuan untuk menangkap peluang perubahan harga dalam jangka pendek. Ia juga menetapkan peraturan stop-loss untuk mengelakkan risiko.

Kod sumber strategi
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Relative Strength Index", shorttitle="RSI")
slen    = input(55, title="Short length")
llen    = input(126, title="Long length")
sup     = ema(max(change(close), 0), slen)
sdown   = ema(-min(change(close), 0), slen)
rsi1    = sdown == 0 ? 100 : sup == 0 ? 0 : 100 - (100 / (1 + sup / sdown))
lup     = ema(max(change(close), 0), llen)
ldown   = ema(-min(change(close), 0), llen)
rsi2    = ldown == 0 ? 100 : lup == 0 ? 0 : 100 - (100 / (1 + lup / ldown))
ob      = input(55, title="Overbought")
os      = input(45, title="Oversold")
tp      = input(.9, title="Take profit level %")*.01
sl      = input(3, title="Stoploss level %")*.01
mid     = avg(ob,os)
plot    (mid, color=#4f4f4f, transp=0)
hline   (ob, color=#4f4f4f)
hline   (os, color=#4f4f4f)
long    = crossover(rsi1,rsi2)
short   = crossunder(rsi1,rsi2)
vall    = valuewhen(long,close,0)
lexit1  = high>=(vall*tp)+vall
lexit2  = low<=vall-(vall*sl)
vals    = valuewhen(short,close,0)
sexit1  = low<=vals - (vals*tp)
sexit2  = high>=vals + (vals*sl)
bgcolor (color=long?lime:na,transp=50)
bgcolor (color=short?red:na, transp=50)
strategy.entry("Long", strategy.long, when=long)
strategy.close("Long", when=lexit1)
strategy.close("Long", when=lexit2)
strategy.close("Long", when=short)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Short", when=sexit1)
strategy.close("Short", when=sexit2)
strategy.close("Short", when=long)
plot    (rsi1, color=orange, transp=0,linewidth=1, title="Short period RSI")
plot    (rsi2, color=aqua  , transp=0,linewidth=1, title="Long period RSI")