Diese Strategie verwendet hauptsächlich den Relative Strength Index (RSI) in Kombination mit Bollinger Bands für das Handelssignalbeurteilen. Insbesondere geht es lang, wenn der RSI über das Überverkaufsniveau und unterhalb des unteren Bollinger Bands überschreitet, und geht kurz, wenn der RSI unterhalb des Überkaufniveaus und über dem oberen Bollinger Band überschreitet.
Die Strategie berechnet zunächst den RSI-Indikator und Bollinger-Bänder. Der RSI-Indikator spiegelt die relative Stärke des Handelsinstruments wider. Wenn der RSI unter der Überverkaufszone (Standard 30) liegt, bedeutet dies, dass das Instrument überverkauft ist und kaufen sollte. Bollinger-Bänder umfassen Oberband, Mittelfeld und Unterband, was die Preisschwankungen gut widerspiegelt. Kauf in der Nähe des unteren Bandes und Verkauf in der Nähe des oberen Bandes können relativ zuverlässige Signale liefern. Diese Strategie kombiniert den RSI-Indikator und Bollinger-Bänder für das Handelssignalbeurteilen. Es erzeugt ein Kaufsignal, wenn der RSI von der Überverkaufszone nach oben steigt (Standard 30), und der Preis von der unteren Bands nach oben steigt; es erzeugt ein Verkaufssignal, wenn der RSI von der Überkaufszone nach unten fällt (Standardpreis 70), und von der oberen Bands nach unten
Lösungen:
Die Gesamtstrategie ist robust, kombiniert effektiv RSI und Bollinger Bands für Stop Loss. Eine weitere Verbesserung kann durch Testen und Optimieren von Parametern erreicht werden.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BB + RSI 20MIN,", shorttitle="BBRSI 20MIN", overlay=true ) // Strategy Tester Start Time sYear = input(2019, title = "Start Year") sMonth = input(04, title = "Start Month", minval = 01, maxval = 12) sDay = input(01, title = "Start Day", minval = 01, maxval = 31) sHour = input(00, title = "Start Hour", minval = 00, maxval = 23) sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = true ///////////// RSI RSIlength = input(9,title="RSI Period Length") RSIoverSold = input(30, minval=1,title="RSIL") RSIoverBought = input(69, minval=1,title="RSIh") price = open vrsi = rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input(60, minval=1,title="Bollinger Period Length") BBmult = input(2.0, minval=0.001, maxval=50,title="Bb") BBbasis = sma(price, BBlength) BBdev = BBmult * stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close buyEntry = crossover(source, BBlower) sellEntry = crossunder(source, BBupper) plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line") p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line") p2 = plot(BBlower, 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?") TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na barcolor(switch1?TrendColor:na) bgcolor(switch2?TrendColor:na,transp=50) ///////////// RSI + Bollinger Bands Strategy if (not na(vrsi)) if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower)) strategy.entry("RSI_BB_L", strategy.long and startTime, stop=BBlower, comment="RSI_BB_L") else strategy.cancel(id="RSI_BB_L") if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper)) strategy.entry("RSI_BB_S", strategy.short and startTime, stop=BBupper,comment="RSI_BB_S") else strategy.cancel(id="RSI_BB_S") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)