RSI dan Bollinger Bands Strategi Perdagangan Kuantitatif

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

img

Ringkasan

Strategi ini menggabungkan Indeks Kekuatan Relatif (RSI) dan Bollinger Bands untuk mengenal pasti peluang perdagangan, yang tergolong dalam strategi pembalikan purata dalam perdagangan kuantitatif. Ia membeli apabila RSI berada di bawah ambang dan menutup kedudukan apabila harga melanggar di atas jalur tengah Bollinger Bands. Tidak ada peluang pendek.

Logika Strategi

  1. Gunakan penunjuk RSI untuk menilai sama ada pasaran terlalu laris. RSI di bawah 30 dianggap isyarat terlalu laris.

  2. Gunakan Bollinger Bands untuk menentukan sama ada harga mula melonjak ke atas. Apabila harga melonjak dari band bawah dan pecah di atas band tengah, arah panjang berakhir.

  3. Gabungkan isyarat oversold RSI dan isyarat breakout Bollinger Bands untuk menetapkan titik masuk beli. Beli apabila kedua-dua isyarat mencetuskan dan tutup kedudukan apabila harga memecahkan di atas jalur tengah untuk mengambil keuntungan.

Analisis Kelebihan

  1. Strategi ini menggabungkan penunjuk pembalikan rata-rata RSI dan penunjuk saluran Bollinger Bands untuk mencari titik masuk dengan lebih tepat.

  2. Penunjuk RSI boleh menapis banyak kegagalan palsu dan mengurangkan perdagangan yang tidak perlu.

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

Analisis Risiko

  1. Indikator RSI boleh memberikan isyarat yang salah, menyebabkan peluang membeli hilang.

  2. Tetapan parameter Bollinger Band yang tidak betul boleh menyebabkan stop loss terlalu longgar atau ketat.

  3. Memilih instrumen dagangan yang tidak betul, seperti dagangan stok cap kecil dengan risiko kecairan yang lebih tinggi.

Arah pengoptimuman

  1. Uji kombinasi parameter yang berbeza seperti tempoh RSI, tempoh Bollinger dan pengganda untuk mencari parameter yang optimum.

  2. Menggabungkan penunjuk lain seperti KD, MACD untuk menetapkan syarat beli yang lebih ketat untuk menapis isyarat.

  3. Tentukan stop loss berdasarkan turun naik untuk instrumen dagangan yang berbeza, seperti menggunakan stop loss turun naik.

Kesimpulan

Strategi ini menggunakan logik membeli pada tahap terendah RSI dan menjual pada tahap tertinggi Bollinger, yang tergolong dalam strategi pembalikan purata. Berbanding dengan menggunakan penunjuk tunggal seperti RSI atau Bollinger Bands, strategi ini dapat mencari titik masuk dan keluar dengan lebih tepat, dengan itu mencapai hasil yang lebih baik. Langkah seterusnya boleh ditingkatkan melalui pengoptimuman parameter, penapisan isyarat, 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 lanjut