Bollinger Bands dan RSI Trend Following Strategy

Penulis:ChaoZhang, Tanggal: 2023-12-20 14:32:40
Tag:

img

Gambaran umum

Strategi ini menggunakan Bollinger Bands, indikator RSI dan rata-rata bergerak 200 periode untuk mengidentifikasi arah tren dan melakukan perdagangan kontra-tren di dekat Bollinger Bands ketika arah tren sesuai, untuk menghasilkan keuntungan.

Logika Strategi

Pertama, rata-rata bergerak 200 periode digunakan untuk menentukan arah tren keseluruhan. Uptrend didefinisikan ketika harga berada di atas rata-rata bergerak, dan downtrend didefinisikan ketika harga berada di bawah. Kedua, ketika dalam uptrend, entri panjang dilaksanakan jika indikator RSI menunjukkan oversold dan mendekati Bollinger Lower Band; ketika dalam downtrend, entri pendek dilaksanakan jika RSI menunjukkan overbought dan mendekati Bollinger Upper Band. Akhirnya, indikator ATR digunakan untuk mengatur level stop loss, dan take profit ditetapkan menjadi 2 kali stop loss.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia menggabungkan beberapa indikator untuk menentukan arah tren dan waktu entri. Pertama, rata-rata bergerak 200 hari dapat secara efektif mengidentifikasi tren utama. Kedua, Upper/Lower Bands of Bollinger Bands menunjukkan area di mana harga dapat berbalik. Akhirnya, RSI menunjukkan kemungkinan waktu pembalikan. Penggunaan beberapa indikator menghindari risiko penilaian yang salah dari satu.

Analisis Risiko

Risiko utama dari strategi ini berasal dari identifikasi yang tidak akurat dari tren utama dan sinyal pembalikan. Jika tren salah dinilai, hal itu dapat menyebabkan kerugian berturut-turut. Jika sinyal pembalikan salah, kemungkinan stop loss yang dipicu akan tinggi. Juga, perdagangan kontra-tren itu sendiri memiliki risiko yang lebih tinggi yang membutuhkan operasi yang berhati-hati.

Untuk mengurangi risiko di atas, disarankan untuk menyesuaikan parameter rata-rata bergerak atau menambahkan indikator lain untuk konfirmasi, untuk meningkatkan akurasi.

Arahan Optimasi

Ada banyak ruang untuk mengoptimalkan strategi ini: pertama, sesuaikan parameter rata-rata bergerak untuk meningkatkan akurasi identifikasi tren. Kedua, atur parameter Bollinger Bands atau tambahkan Saluran Kalman untuk lebih menemukan zona pembalikan. Ketiga, tambahkan indikator lain seperti MACD untuk konfirmasi untuk menghindari sinyal yang salah. Keempat, optimalkan pengaturan rasio stop loss untuk menurunkan kemungkinan kejadian stop loss yang sebenarnya.

Kesimpulan

Strategi ini menggabungkan Bollinger Bands, RSI dan Moving Averages untuk menentukan tren dan waktu, dan telah mencapai hasil yang baik.


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

//@version=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)


//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close

//EMA
emaLength=input(200)

//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)


//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)

strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)



  

Lebih banyak