Indeks Kekuatan Relatif dan Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-12-21 11:30:27
Tag:

img

Ringkasan

Indeks Kekuatan Relatif (RSI) dan strategi Crossover Purata Bergerak menggabungkan penunjuk RSI dan purata bergerak untuk membuat keputusan perdagangan kuantitatif. Ia menggunakan tahap overbought dan oversold yang ditunjukkan oleh RSI untuk menentukan entri dan keluar, bersama dengan isyarat salib emas dan salib kematian yang dihasilkan apabila RSI melintasi garis purata bergerak.

Logika Strategi

  1. Mengira nilai penunjuk RSI. RSI mengukur besar perubahan harga baru-baru ini untuk menilai sama ada aset terlalu dibeli atau terlalu dijual.

  2. Mengira garis purata bergerak (MA) RSI, menggunakan purata bergerak eksponen (EMA) atau purata bergerak mudah (SMA).

  3. Apabila RSI melintasi di atas garis MA, isyarat beli silang emas dihasilkan.

  4. Apabila RSI meningkat di atas ambang overbought, aset dianggap overbought dan kedudukan pendek boleh dimulakan. Apabila RSI jatuh di bawah ambang oversold, aset dianggap oversold dan kedudukan panjang boleh dibuka.

Analisis Kelebihan

  1. Menggabungkan isyarat silang penunjuk dengan tahap overbought / oversold RSI meningkatkan ketepatan keputusan perdagangan.

  2. RSI overbought dan oversold ambang menentukan kemasukan dan keluar yang optimum.

  3. Mengesan pembalikan trend dengan bertindak pada isyarat silang penunjuk.

Analisis Risiko

  1. RSI boleh menghasilkan isyarat yang salah semasa pasaran yang bergolak atau sisi.

  2. Tetapan ambang overbought atau oversold yang tidak betul boleh menyebabkan isyarat yang terlalu longgar atau terlalu ketat.

  3. Purata bergerak sensitif terhadap anomali jangka pendek dan lonjakan turun naik, meningkatkan kemungkinan dihentikan lebih awal.

Arahan pengoptimuman

  1. Mengoptimumkan parameter RSI dengan menguji tempoh panjang yang berbeza.

  2. Cari tempoh purata bergerak yang optimum dengan menilai panjang MA yang berbeza.

  3. Uji pelbagai paras ambang overbought dan oversold untuk memperbaiki isyarat kemasukan.

  4. Masukkan penapis tambahan untuk mengesahkan isyarat dan mengelakkan perdagangan palsu.

Kesimpulan

Strategi RSI dan Moving Average Crossover menggabungkan tahap overbought / oversold RSI dengan isyarat crossover MA untuk mengenal pasti titik perubahan pasaran dan menangkap pembalikan. Prestasi dan pengurusan risiko dapat ditingkatkan melalui pengoptimuman parameter dan penapisan isyarat.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//dfurrer45
strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true)
src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential")

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)
// ===  BACKTEST END  ===
backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00))

rsioverbought = input(90, minval=1, title="RSI % start overbought")
rsioversold = input(10, minval=1, title="RSI % start oversold")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen)
rsimacrossup = cross(rsi,ma) and rsi > ma
rsimacrossdown = cross(rsi,ma) and rsi < ma
plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small)
plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small)
plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)
plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)


closetrade = rsimacrossup or rsimacrossdown
strategy.close_all(closetrade)
strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold))
strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange)
strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange)
strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange)
strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)


Lebih lanjut