Bollinger Bands RSI Swing Trading Strategy

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

Ringkasan

Strategi perdagangan swing Bollinger Bands RSI menggabungkan penunjuk Bollinger Bands dan Indeks Kekuatan Relatif (RSI) untuk perdagangan osilasi julat jangka pendek.

Prinsip-prinsip

Pertama, penunjuk Bollinger Bands menganalisis julat turun naik harga. Harga berhampiran band atas terlalu banyak dibeli, sementara harga berhampiran band bawah terlalu banyak dijual.

Kedua, penunjuk RSI menentukan kekuatan overbought / oversold. RSI di atas 70 adalah overbought, sementara di bawah 30 adalah oversold.

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

Kelebihan

  • Bollinger Bands dengan tepat mencari tahap turun naik harga.

  • RSI mengelakkan entri panjang / pendek buta.

  • Kadar kemenangan yang tinggi memanfaatkan pembalikan purata.

  • Perdagangan yang kerap membolehkan keuntungan yang berterusan.

  • Berlaku untuk produk dan jangka masa yang berbeza.

Risiko

  • Parameter BB yang tidak betul gagal mengenal pasti tahap utama.

  • Parameter RSI yang buruk menghasilkan isyarat palsu.

  • Tidak mencukupi retracement mencetuskan stop loss.

  • Frekuensi perdagangan yang tinggi membawa kepada kos seluncur yang lebih besar.

  • Sukar untuk menaiki trend di pasaran yang tidak stabil.

Pengurusan Risiko

  • Mengoptimumkan parameter supaya BBs sepadan dengan turun naik sebenar.

  • Sesuaikan tempoh RSI untuk menapis bunyi bising.

  • Gunakan hentian untuk mengurangkan keuntungan.

  • Pilih produk cecair untuk meminimumkan kesan kebocoran.

  • Tambah penunjuk lain untuk menentukan arah trend.

Ringkasan

Strategi perdagangan swing BB RSI berkesan menangkap perubahan harga dua hala dalam julat. Dengan penyesuaian parameter dan pengurusan risiko yang betul, ia memberikan keuntungan yang stabil. Ini adalah strategi perdagangan kuant jangka pendek yang disyorkan.


/*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 lanjut