Strategi Ganda RSI dan Bollinger Bands


Tanggal Pembuatan: 2023-12-12 11:53:49 Akhirnya memodifikasi: 2023-12-12 11:53:49
menyalin: 0 Jumlah klik: 685
1
fokus pada
1621
Pengikut

Strategi Ganda RSI dan Bollinger Bands

Ringkasan

Gagasan inti dari strategi ini adalah kombinasi antara indikator yang relatif kuat (RSI) dan dua indikator teknis Brinet untuk memfilter sinyal perdagangan ganda, meminimalkan gangguan dari sinyal palsu, dan meningkatkan kualitas sinyal.

Ketika indikator RSI menunjukkan sinyal overbought atau oversold, dan pada saat yang sama harga menembus atau membalikkan Bollinger Bands ke bawah, peluang perdagangan akan terbentuk. Ini menggabungkan keunggulan dari dua indikator yang berbeda, baik mempertimbangkan karakteristik statistik dari fluktuasi pasar, dan juga memperhatikan situasi yang lebih terbuka dari para peserta pasar, untuk membentuk dasar penilaian yang komprehensif.

Prinsip Strategi

Pada bagian RSI, kita melihat dua indikator RSI yang berbeda pada periode yang sama, yang lebih pendek digunakan untuk menangkap sinyal overbought dan oversold, dan yang lebih panjang digunakan untuk mengkonfirmasi pembalikan tren. Ketika RSI periode pendek menunjukkan overbought dan oversold dan RSI periode panjang menunjukkan pembalikan, dianggap sebagai peluang perdagangan.

Pada bagian Bollinger Bands, kita memperhatikan apakah harga akan menembus tren naik atau turun. Menembus tren naik Bollinger Bands adalah titik jual, dan tren turun adalah titik beli. Kita juga memperhatikan apakah harga akan kembali ke Bollinger Bands, sehingga kita dapat menangkap peluang untuk berbalik tepat waktu.

Ketika sinyal RSI dan sinyal Bollinger Bands muncul secara bersamaan, kita menganggap bahwa peluang perdagangan telah terbentuk, dan mengeluarkan instruksi perdagangan.

Analisis Keunggulan

  • Filter ganda indikator, keandalan yang lebih tinggi, menghindari transaksi berlebihan
  • Mengambil Trend dan Reversal dan Mengambil Kesempatan di Berbagai Tahap Pasar
  • Parameter yang dapat dikonfigurasi dan dapat disesuaikan sesuai kebutuhan
  • Pengelolaan waktu dan dana internal

Analisis risiko

  • Setting parameter Brin band yang tidak tepat dapat menyebabkan sinyal palsu
  • Tidak mampu menghadapi situasi ekstrim di pasar yang sangat bergejolak
  • RSI mungkin menunjukkan sinyal yang salah saat beredar
  • Parameter yang perlu dioptimalkan untuk varietas dan siklus yang berbeda

Risiko dapat dihindari dan dikendalikan dengan cara optimasi parameter, pengurangan posisi yang tepat, intervensi buatan, dan lain-lain.

Arah optimasi

  • Adaptasi parameter RSI untuk mengoptimalkan penilaian overbought dan oversold
  • Adaptasi Bandwidth Brin, Optimalisasi Strategi Penembusan Brin
  • Menambahkan mekanisme manajemen posisi
  • Meningkatkan strategi stop loss
  • Model multi-faktor dengan lebih banyak indikator

Meringkaskan

RSI dan Bollinger Bands strategi ganda memanfaatkan keunggulan dari kedua indikator untuk menghasilkan sinyal berkualitas tinggi, dengan asumsi optimasi parameter dan manajemen risiko di tempat, dapat memperoleh laba atas investasi yang stabil.

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

//@version=4
strategy("Ezieh Str.v2", shorttitle="Ezieh Str.v2", overlay=true, pyramiding=10, currency=currency.USD, slippage=3, commission_type=strategy.commission.cash_per_order, commission_value=0.04, initial_capital=1000)



UseDateFilter  = input(title="Enable Date Filter"         ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off date filter")
StartDate      = input(title="Start Date Filter"          ,type=input.time    ,defval=timestamp("1 Jan 2000 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to start excluding trades")
EndDate        = input(title="End Date Filter"            ,type=input.time    ,defval=timestamp("1 Jan 2100 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to stop excluding trades")
UseTimeFilter  = input(title="Enable Time Session Filter" ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off time session filter")
TradingSession = input(title="Trading Session"            ,type=input.session ,defval="1000-2200:1234567"                 ,group="Date & Time" ,tooltip="No trades will be taken outside of this range")

In(t)      => na(time(timeframe.period, t)) == false
TimeFilter = (UseTimeFilter and not In(TradingSession)) or not UseTimeFilter
DateFilter = time >= StartDate and time <= EndDate

DateTime = (UseDateFilter ? not DateFilter : true) and (UseTimeFilter ? In(TradingSession) : true) 

///////////// RSI
L_RSI_Length     = input(7  , title="L_Length")
L_RSI_OverSold   = input(45 , title="L_OverSold")
S_RSI_Length     = input(14 , title="S_Length")
S_RSI_OverBought = input(65 , title="S_OverBought")

price = close
Lvrsi = rsi(price, L_RSI_Length)
Svrsi = rsi(price, S_RSI_Length)

///////////// Bollinger Bands
BBlength = input(title="Bollinger Period Length", type=input.integer, defval=100, minval=2)
BBmult = 2.1 // 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
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?")



///////////// Condition
LongCondition  = crossover(Lvrsi, L_RSI_OverSold)    and crossover(close  ,BBlower)
ShortCondition = crossunder(Svrsi, S_RSI_OverBought) and crossunder(close,BBupper)
Longexcon      = crossunder(low, BBupper)
Shortexcon     = crossover(low, BBlower)

qt = round(strategy.equity/price, 3)

///////////// RSI + Bollinger Bands Strategy
if (not na(Lvrsi))

    if LongCondition and DateTime
        strategy.entry("RSI_BB_L", strategy.long, qty=qt,  comment="Long")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if Longexcon
        strategy.close("RSI_BB_L", qty_percent = 100, comment = "L_exit")
    
    if ShortCondition and DateTime
        strategy.entry("RSI_BB_S", strategy.short, qty=qt,  comment="Short")
    else
        strategy.cancel(id="RSI_BB_S")
        
    if Shortexcon
        strategy.close("RSI_BB_S", qty_percent = 100, comment = "S_exit")
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)