
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.
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.
Risiko dapat dihindari dan dikendalikan dengan cara optimasi parameter, pengurangan posisi yang tepat, intervensi buatan, dan lain-lain.
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.
/*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)