Bollinger Bands RSI Swing Trading Strategy

Penulis:ChaoZhang, Tanggal: 2023-09-16 18:48:44
Tag:

Gambaran umum

Strategi perdagangan swing Bollinger Bands RSI menggabungkan indikator Bollinger Bands dan Relative Strength Index (RSI) untuk perdagangan osilasi kisaran jangka pendek.

Prinsip-prinsip

Pertama, indikator Bollinger Bands menganalisis rentang fluktuasi harga.

Kedua, indikator RSI menentukan kekuatan overbought/oversold. RSI di atas 70 adalah overbought, sedangkan di bawah 30 adalah oversold.

Ketika harga mencapai band bawah dan RSI menunjukkan oversold, pergi panjang. Ketika harga mencapai band atas dan RSI menunjukkan overbought, pergi pendek.

Keuntungan

  • Bollinger Bands secara akurat menemukan tingkat fluktuasi harga.

  • RSI menghindari entri panjang / pendek buta.

  • Tingkat kemenangan tinggi memanfaatkan rata-rata reversi.

  • Perdagangan yang sering memungkinkan keuntungan yang berkelanjutan.

  • Berlaku pada produk dan jangka waktu yang berbeda.

Risiko

  • Parameter BB yang tidak benar gagal mengidentifikasi tingkat kunci.

  • Parameter RSI yang buruk menghasilkan sinyal palsu.

  • Tidak cukup retracement memicu stop loss.

  • Frekuensi perdagangan yang tinggi mengarah pada biaya slippage yang lebih besar.

  • Sulit untuk menaiki tren di pasar yang tidak stabil.

Manajemen Risiko

  • Optimalkan parameter sehingga BBs sesuai volatilitas yang sebenarnya.

  • Sesuaikan periode RSI untuk menyaring suara.

  • Gunakan trailing stop untuk mengurangi laba kembali.

  • Pilih produk cair untuk meminimalkan dampak tergelincir.

  • Tambahkan indikator lain untuk menentukan arah tren.

Ringkasan

Strategi perdagangan swing BB RSI secara efektif menangkap perubahan harga dua arah dalam kisaran. Dengan penyesuaian parameter dan manajemen risiko yang tepat, ini memberikan keuntungan yang stabil. Ini adalah strategi perdagangan kuantitas jangka pendek yang direkomendasikan.


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

//@version=4
strategy("Swing trading strategy FOREX ", shorttitle="BB+RSI", overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2022, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
// 
// 


///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = input(defval = 65, title = "RSIoverSold", minval = 1, maxval = 100)
RSIoverBought = input(defval = 35, title = "RSIoverBought", minval = 1, maxval = 100)
price = close
vrsi = rsi(price, RSIlength)



///////////// Bollinger Bands
BBlength = input(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
//for buy
cond1=crossover(vrsi, RSIoverSold)
cond2=crossover(source, BBlower) 
//for sell
cond3=crossunder(vrsi, RSIoverBought)
cond4=crossunder(source, BBupper)
if (not na(vrsi))

    if (cond1 and cond2 and time_cond)
        strategy.entry("RSI_BB_LONG", strategy.long, stop=BBlower, comment="LONG",alert_message = "long")
    else
        strategy.cancel(id="RSI_BB_LONG")
        
    if (cond3 and cond4 and time_cond)
        strategy.entry("RSI_BB_SHORT", strategy.short, stop=BBupper,  comment="SHORT",alert_message = "short")
        //strategy.close("RSI_BB_LONG")

    else
        strategy.cancel(id="RSI_BB_SHORT")
        
//strategy.exit("closelong", "RSI_BB_LONG" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closelong")
//strategy.exit("closeshort", "RSI_BB_SHORT" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closeshort")


//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Lebih banyak