RSI dan Bollinger Bands Strategi Perdagangan Kuantitatif

Penulis:ChaoZhang, Tanggal: 2024-01-08 10:16:22
Tag:

img

Gambaran umum

Strategi ini menggabungkan Indeks Kekuatan Relatif (RSI) dan Bollinger Bands untuk mengidentifikasi peluang perdagangan, yang merupakan strategi reversi rata-rata dalam perdagangan kuantitatif.

Logika Strategi

  1. Gunakan indikator RSI untuk menilai apakah pasar oversold. RSI di bawah 30 dianggap sinyal oversold.

  2. Gunakan Bollinger Bands untuk menentukan apakah harga mulai bangkit ke atas.

  3. Gabungkan sinyal oversold RSI dan sinyal breakout Bollinger Bands untuk menetapkan titik masuk beli. Beli saat kedua sinyal dipicu dan tutup posisi ketika harga melanggar band tengah untuk mengambil keuntungan.

Analisis Keuntungan

  1. Strategi ini menggabungkan indikator reversi rata-rata RSI dan indikator saluran Bollinger Bands untuk menemukan titik masuk dengan lebih tepat.

  2. Indikator RSI dapat menyaring banyak breakout palsu dan mengurangi perdagangan yang tidak perlu.

  3. Bollinger Bands bertindak sebagai stop loss untuk mengontrol risiko setiap perdagangan.

Analisis Risiko

  1. Indikator RSI dapat memberikan sinyal yang salah, menyebabkan kehilangan peluang beli.

  2. Pengaturan parameter Bollinger Bands yang tidak tepat dapat mengakibatkan stop loss terlalu longgar atau ketat.

  3. Memilih instrumen perdagangan yang tidak tepat, seperti perdagangan saham cap kecil dengan risiko likuiditas yang lebih tinggi.

Arah Optimalisasi

  1. Uji kombinasi parameter yang berbeda seperti periode RSI, periode Bollinger dan multiplier untuk menemukan parameter yang optimal.

  2. Masukkan indikator lain seperti KD, MACD untuk menetapkan kondisi pembelian yang lebih ketat untuk menyaring sinyal.

  3. Setel stop loss berdasarkan volatilitas untuk instrumen perdagangan yang berbeda, seperti menggunakan volatility stop loss.

Kesimpulan

Strategi ini memanfaatkan logika membeli pada titik terendah RSI dan menjual pada titik tertinggi Bollinger, yang termasuk dalam strategi reversi rata-rata. Dibandingkan dengan menggunakan indikator tunggal seperti RSI atau Bollinger Bands, strategi ini dapat menemukan titik masuk dan keluar dengan lebih tepat, sehingga mencapai hasil yang lebih baik. Langkah selanjutnya dapat ditingkatkan melalui optimasi parameter, penyaringan sinyal, strategi stop loss dll.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's BB + RSI Strategy v1.0", shorttitle = "BB+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiuse = input(true, defval = true, title = "Use RSI")
bbuse = input(true, defval = true, title = "Use BB")
showbb = input(true, defval = true, title = "Show BB Overlay")
bbperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "BB period")
bbsource = input(ohlc4, title = "BB source")
bbmult = input(2, defval = 2, minval = 1, maxval = 100, title = "BB Mult")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 1000, title = "RSI period")
rsisource = input(close, title = "RSI source")
rsilimit = input(30, defval = 30, minval = 1, maxval = 49, title = "RSI Limit")
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")

//RSI
rsi = rsi(rsisource, rsiperiod)

//BB
basis = sma(bbsource, bbperiod)
dev = bbmult * stdev(bbsource, bbperiod)
upper = basis + dev
lower = basis - dev

//Overlay
col = showbb ? blue : na
plot(upper, color = col)
plot(basis, color = col)
plot(lower, color = col)

//Signals
up = (rsi < rsilimit or rsiuse == false) and (low < lower or bbuse == false)
cl = close > open

//Trading
lot = 0.0 
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, lot)
if cl
    strategy.entry("Close", strategy.short, 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Lebih banyak