Dieser Artikel erklärt detailliert eine quantitative Handelsstrategie, die den RSI-Indikator verwendet, um Handelssignale zu generieren.
I. Strategische Logik
Die wichtigste Handelslogik ist folgende:
Der RSI-Indicator wird berechnet und mit Hilfe des EMA-Indicators (28) glättet, um den verarbeiteten Oszillator zu erhalten.
Berechnen Sie Bollinger Bands auf dem verarbeiteten RSI, um obere/untere Bands zu erhalten.
Wenn der verarbeitete RSI unterhalb der Einstiegslinie kreuzt, wird ein Kaufsignal generiert.
Wenn der Indikator in die Überkauf-/Überverkaufszonen eintritt, wird ein Schlusssignal erzeugt.
Auf diese Weise können die Merkmale des RSI zur Erfassung von Umkehrchancen genutzt werden.
II. Vorteile der Strategie
Der größte Vorteil ist der erhöhte Parameter-Tuning-Raum durch die Indikatorverarbeitung, der eine strengere Kontrolle der Handelsfrequenz ermöglicht und Überhandelungen verhindert.
Ein weiterer Vorteil sind die intuitiven Einstiegskriterien, die auf klaren numerischen Werten des Indikators basieren.
Schließlich trägt der Überkauf/Überverkauf-Bereich auch zur rechtzeitigen Gewinngewinnung und zur Risikokontrolle pro Handel bei.
III. Mögliche Schwächen
Die Strategie birgt jedoch auch folgende Risiken:
Erstens konzentriert sich der RSI auf Umkehrtrades, die während der Trends falsche Signale erzeugen können.
Zweitens kann eine unsachgemäße Einstellung der Parameter auch zu einer Überoptimierung und einer Nichtanpassung an veränderte Marktbedingungen führen.
Schließlich setzt die relativ geringe Gewinnrate die Strategie auch einem Abzugrisiko aus.
IV. Zusammenfassung
Zusammenfassend stellt dieser Artikel hauptsächlich eine quantitative Handelsstrategie vor, die den RSI-Indikator verwendet. Er steuert die Handelsfrequenz über Parameter-Tuning und hat klare Ein-/Ausgangsregeln. Während die Parameter optimiert werden, müssen auch die Risiken des Umkehrhandels verwaltet werden. Insgesamt bietet er einen einfachen und intuitiven RSI-Strategie-Rahmen.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //----------------------------------------------------------------- //This simple strategy base on RSI, EMA, Bollinger Bands to get Buy and Sell Signal with detail as below: //----------------------------------------------------------------- //1.Define Oscillator Line //+ Oscillator Line is smoothed by ema(28) of RSI(14) on H1 Timeframe //2.Define Overbought and Oversold //+ Apply Bollinger Bands BB(80,3) on Oscillator Line and calculate %b //+ Overbought Zone marked above level 0.8 //+ Oversold Zone marked below level 0.2 //3.Buy Signal //+ Entry Long Positon when %b crossover Point of Entry Long //+ Deafault Point of Entry Long is 0.2 //+ Buy signal marked by Green dot //4.Sell Signal //+ Entry Short Position when %b crossunder Point of Entry Short //+ Deafault Point of Entry Short is 0.8 //+ Sell signal marked by Red dot //5.Exit Signal //+ Exit Position (both Long and Short) when %b go into Overbought Zone or Oversold Zone //+ Exit signal marked by Yellow dot //----------------------------------------------------------------- strategy(title="RSI %b Signal [H1 Backtesting]", overlay=false) //RSI rsi_gr="=== RSI ===" rsi_len = input(14, title = "RSI",inline="set",group=rsi_gr) smoothed_len = input(28, title = "EMA",inline="set",group=rsi_gr) rsi=ta.ema(ta.rsi(close,rsi_len),smoothed_len) //rsi's BOLLINGER BANDS pb_gr="=== %b ===" length = input(80, title = "Length",inline="set1",group=pb_gr) rsimult = input(3.0, title = "Multiplier",inline="set1",group=pb_gr) ovb = input(0.8, title = "Overbought",inline="set2",group=pb_gr) ovs = input(0.2, title = "Oversold",inline="set2",group=pb_gr) et_short = input(0.8, title = "Entry Short",inline="set3",group=pb_gr) et_long = input(0.2, title = "Entry Long",inline="set3",group=pb_gr) [rsibasis, rsiupper, rsilower] = ta.bb(rsi, length, rsimult) //rsi's %B rsipB = ((rsi - rsilower) / (rsiupper - rsilower)) plot(rsipB, title="rsi's %B", color=rsipB>math.min(ovb,et_short)?color.red:rsipB<math.max(ovs,et_long)?color.green:color.aqua, linewidth=1) h1=hline(1,color=color.new(color.red,100)) h4=hline(ovb,color=color.new(color.red,100)) h0=hline(0,color=color.new(color.green,100)) h3=hline(ovs,color=color.new(color.green,100)) h5=hline(0.5,color=color.new(color.silver,0),linestyle=hline.style_dotted) fill(h1,h4, title="Resistance", color=color.new(color.red,90)) fill(h0,h3, title="Support", color=color.new(color.green,90)) //Signal rsi_buy= rsipB[1]<et_long and rsipB>et_long rsi_sell= rsipB[1]>et_short and rsipB<et_short rsi_exit= (rsipB[1]>ovs and rsipB<ovs) or (rsipB[1]<ovb and rsipB>ovb) plotshape(rsi_buy?rsipB:na,title="Buy",style=shape.circle,color=color.new(color.green,0),location=location.absolute) plotshape(rsi_sell?rsipB:na,title="Sell",style=shape.circle,color=color.new(color.red,0),location=location.absolute) plotshape(rsi_exit?rsipB:na,title="Exit",style=shape.circle,color=color.new(color.yellow,0),location=location.absolute) //Alert strategy.entry("Long",strategy.long,when=rsi_buy) strategy.close("Long",when=rsi_exit) strategy.entry("Short",strategy.short,when=rsi_sell) strategy.close("Short",when=rsi_exit) //EOF