Strategi Dwi RSI dan Bollinger Bands


Tarikh penciptaan: 2023-12-12 11:53:49 Akhirnya diubah suai: 2023-12-12 11:53:49
Salin: 0 Bilangan klik: 395
1
fokus pada
1166
Pengikut

Strategi Dwi RSI dan Bollinger Bands

Gambaran keseluruhan

Gagasan utama strategi ini adalah menggabungkan indikator teknikal yang agak kuat ((RSI) dan Brin untuk memfilter isyarat perdagangan ganda, meminimumkan gangguan isyarat palsu dan meningkatkan kualiti isyarat.

Apabila RSI menunjukkan isyarat overbought atau oversold, peluang perdagangan akan terbentuk apabila harga menembusi atau membalikkan Bollinger Bands ke bawah. Ia menggabungkan kelebihan dua petunjuk yang berbeza, mempertimbangkan ciri statistik turun naik pasaran dan memberi perhatian kepada keadaan bebas pelaku pasaran, untuk membentuk asas penilaian yang menyeluruh.

Prinsip Strategi

Bahagian RSI, kita melihat dua RSI pada masa yang sama dalam tempoh yang berbeza, satu tempoh yang lebih pendek digunakan untuk menangkap isyarat overbought dan oversold, satu tempoh yang lebih lama digunakan untuk mengesahkan trend reversal. Apabila RSI jangka pendek menunjukkan overbought dan RSI jangka panjang menunjukkan reversal, ia dianggap sebagai peluang perdagangan.

Pada bahagian Brin, kita menumpukan perhatian pada apakah harga akan menembusi ke atas atau ke bawah. Menembusi Brin ke atas adalah titik jual dan ke bawah adalah titik beli.

Apabila isyarat RSI dan isyarat Bollinger Bands muncul pada masa yang sama, kita menganggap bahawa peluang perdagangan telah terbentuk dan mengeluarkan arahan perdagangan.

Analisis kelebihan

  • Penapisan ganda, kebolehpercayaan yang lebih tinggi, mengelakkan perdagangan berlebihan
  • Mengambil peluang di peringkat pasaran yang berlainan
  • Parameter boleh dikonfigurasikan dan boleh disesuaikan mengikut keperluan
  • Pengurusan masa dan wang dalaman

Analisis risiko

  • Penetapan parameter Brin yang tidak betul boleh menyebabkan isyarat palsu
  • Tidak mampu menghadapi keadaan yang melampau apabila pasaran bergelora
  • RSI mungkin menunjukkan isyarat yang salah
  • Parameter yang perlu dioptimumkan untuk pelbagai jenis dan kitaran

Risiko boleh dielakkan dan dikawal melalui pengoptimuman parameter, pengurangan kedudukan yang sesuai, dan intervensi buatan.

Arah pengoptimuman

  • Menyesuaikan parameter RSI untuk mengoptimumkan penilaian overbought dan oversold
  • Menyesuaikan lebar jalur Brin dan mengoptimumkan strategi penembusan Brin
  • Menambah mekanisme pengurusan kedudukan
  • Meningkatkan strategi hentikan kerugian
  • Mempunyai model multi-faktor yang menggabungkan lebih banyak petunjuk

ringkaskan

RSI dan strategi ganda Bollinger Bands memanfaatkan kelebihan kedua-dua indikator untuk menghasilkan isyarat berkualiti tinggi, dengan syarat parameter yang dioptimumkan dan pengurusan risiko berada di tempat, untuk mendapatkan pulangan pelaburan yang stabil. Gabungan lebih banyak isyarat dan model adalah arah yang mungkin di masa depan.

Kod 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)