Die Kernidee dieser Strategie besteht darin, den Relative Strength Index (RSI) und die Bollinger Bands, zwei technische Indikatoren, zu kombinieren, um doppelte Handelssignale zu filtern und die Störungen durch falsche Signale so weit wie möglich zu minimieren und die Signalqualität zu verbessern.
Wenn der RSI-Indikator überkaufte oder überverkaufte Signale zeigt, während der Preis die oberen und unteren Schienen der Bollinger-Bänder durchbricht oder zurückzieht, entstehen Handelsmöglichkeiten.
Für den RSI-Teil überwachen wir zwei RSI-Indikatoren mit unterschiedlichen Zykluslängen gleichzeitig. Einer mit einem kürzeren Zyklus wird verwendet, um überkaufte und überverkaufte Signale zu erfassen, während ein anderer mit einem längeren Zyklus zur Bestätigung von Trendumkehrungen verwendet wird. Wenn der Kurzzyklus-RSI überkauft/überverkauft und der Langzyklus-RSI umgekehrt zeigt, glauben wir, dass sich eine Handelsmöglichkeit gebildet hat.
Für den Bollinger Bands Teil überwachen wir, ob der Preis durch die oberen und unteren Schienen bricht. Durchbrechen der oberen Schiene der Bollinger Bands ist der Verkaufspunkt, und durchbrechen der unteren Schiene ist der Kaufpunkt. Gleichzeitig überwachen wir auch, ob der Preis zurück zu den Bollinger Bands zieht, so dass Umkehrmöglichkeiten rechtzeitig erfasst werden können.
Wenn die RSI- und Bollinger Bands-Signale gleichzeitig erscheinen, glauben wir, dass die Handelsmöglichkeit Gestalt angenommen hat und eine Handelsanordnung ausgegeben wird.
Risiken können durch Parameteroptimierung, angemessene Reduzierung der Positionen, manuelle Eingriffe usw. vermieden und kontrolliert werden.
Die RSI- und Bollinger Bands-Doppelstrategie nutzt die Stärken der beiden Indikatoren voll aus, um qualitativ hochwertige Signale zu generieren.
/*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)