Ide inti dari strategi ini adalah untuk menggabungkan Indeks Kekuatan Relatif (RSI) dan Bollinger Bands, dua indikator teknis, untuk menyaring sinyal perdagangan ganda dan meminimalkan gangguan dari sinyal palsu sebanyak mungkin, meningkatkan kualitas sinyal.
Ketika indikator RSI menunjukkan sinyal overbought atau oversold sementara harga menembus atau menarik kembali rel atas dan bawah Bollinger Bands, peluang perdagangan akan muncul. Ini menggabungkan keuntungan dari dua indikator yang berbeda, dengan mempertimbangkan karakteristik statistik fluktuasi pasar dan posisi panjang / pendek peserta pasar untuk membentuk dasar penilaian yang komprehensif.
Untuk bagian RSI, kami memantau dua indikator RSI dengan panjang siklus yang berbeda pada saat yang sama. Yang satu dengan siklus yang lebih pendek digunakan untuk menangkap sinyal overbought dan oversold, sementara yang satu dengan siklus yang lebih lama digunakan untuk mengkonfirmasi pembalikan tren. Ketika RSI siklus pendek menunjukkan overbought / oversold dan RSI siklus panjang menunjukkan pembalikan, kami percaya bahwa peluang perdagangan telah terbentuk.
Untuk bagian Bollinger Bands, kami memantau apakah harga menembus rel atas dan bawah. Menembus rel atas Bollinger Bands adalah titik jual, dan menembus rel bawah adalah titik beli. Pada saat yang sama, kami juga memantau apakah harga menarik kembali ke Bollinger Bands sehingga peluang pembalikan dapat ditangkap secara tepat waktu.
Ketika sinyal RSI dan Bollinger Bands muncul secara bersamaan, kami percaya bahwa peluang perdagangan telah terbentuk dan pesanan perdagangan dikeluarkan.
Risiko dapat dihindari dan dikendalikan melalui optimasi parameter, pengurangan posisi yang tepat, intervensi manual, dll.
Strategi ganda RSI dan Bollinger Bands sepenuhnya memanfaatkan kekuatan kedua indikator untuk menghasilkan sinyal berkualitas tinggi. Dengan optimasi parameter yang tepat dan manajemen risiko, dapat mencapai pengembalian 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)