FNGU-Quantitative Handelsstrategie auf Basis von Bollinger-Bändern und RSI

Schriftsteller:ChaoZhang, Datum: 2024-01-29 14:53:47
Tags:

img

Übersicht

Diese Strategie wird FNGU Quantitative Trading Strategy Based on Bollinger Bands and RSI genannt. Es ist eine speziell für die FNGU-Aktie entwickelte Long-Only-Strategie.

Strategie Logik

Die Kernlogik dieser Strategie basiert auf der Kombination von Bollinger Bands und RSI-Indikatoren.

Erstens enthalten Bollinger-Bänder drei Linien: mittlere Linie, obere Linie und untere Linie. Die mittlere Linie ist der einfache gleitende Durchschnitt von n Tagen, während die obere Linie und untere Linie k mal Standardabweichung über und unter der mittleren Linie sind. Wenn der Preis die obere oder untere Linie erreicht oder berührt, zeigt dies an, dass sich die Aktie im Überkauf oder Überverkauf befindet.

In dieser Strategie beträgt die Periodenlänge der Bollinger Bands mittlere Linie 235 Tage und der Parameter k-Wert ist 2. Sie erzeugt Kaufsignale, wenn der Preis unter die Bollinger-Unterlinie fällt oder über die mittlere Linie geht, und Verkaufssignale, wenn der Preis über die Bollinger-Oberlinie steigt.

Zweitens spiegelt der RSI-Indikator das überkaufte/überverkaufte Niveau einer Aktie wider. RSI über 70 deutet auf einen überkauften Status hin, während unter 30 ein überverkaufter Status liegt. Die Parameterperiode für den RSI in dieser Strategie beträgt 2.

In dieser Strategie werden Bollinger Bands und RSI-Indikatoren zusammen verwendet: Kaufsignale werden erzeugt, wenn der RSI durch das Überverkaufsniveau bricht, während der Preis die Bollinger-Unterlinie berührt oder unter sie fällt. Verkaufssignale werden erzeugt, wenn der RSI vom Überkaufsniveau bricht, während der Preis über die Bollinger-Oberlinie steigt.

Vorteile der Strategie

Diese Strategie hat folgende Vorteile:

  1. Die Kombination von Bollinger Bands und RSI macht Kauf-/Verkaufssignale genauer und zuverlässiger.
  2. Bollinger-Bänder identifizieren überkaufte/überverkaufte Preiszonen, während der RSI gefälschte Signale filtert.
  3. Es führt nur Long-Trading durch, es ist nicht nötig, kurzfristiges Risiko zu berücksichtigen.
  4. Durch die optimierten Parameter eignet es sich speziell für den hochvolatilen FNGU-Bestand.
  5. Es implementiert automatisierte Stop-Loss, um Verlustrisiken zu senken.
  6. Die Codierung ist einfach und klar, leicht zu verstehen und zu ändern.

Risiken und Lösungen

Diese Strategie birgt auch einige Risiken:

  1. Sowohl Bollinger-Bänder als auch RSI können gefälschte Signale erzeugen, was leicht zu einer Überanpassung führt.
  2. FNGU selbst hat eine hohe Volatilität. Eine unsachgemäße Stop-Loss-Einstellung kann die Verluste erhöhen.
  3. Die Strategie gilt nur für hochvolatile Aktien wie FNGU und nicht für andere.
  4. Obwohl die Parameter optimiert sind, können sie mit den Marktveränderungen veraltet werden und eine kontinuierliche Überwachung und Optimierung erfordern.

Richtungen für die Optimierung der Strategie

Es gibt mehrere Richtungen zur weiteren Optimierung dieser Strategie:

  1. Hinzu kommen andere technische Indikatoren wie KDJ und MACD, um genauere Signale zu erzeugen.
  2. Optimierung der Parameter von Bollinger Bands und RSI, um mehr Aktienarten anzupassen.
  3. Einbeziehung von Modellen für maschinelles Lernen zur Unterstützung der Entscheidungsfindung mit mehr Daten.
  4. Einführung von interperiodischen Handelsgeschäften unter Verwendung höherer Zeitrahmen.
  5. Kombinieren Sie Stimmungsanalysen mit Social-Media-Daten, um Handelssignale zu generieren.
  6. Entwicklung eines quantitativen Backtesting-Systems zur schnellen Prüfung verschiedener Parameter-Einstellungen.

Schlussfolgerung

Dies ist eine langfristige Strategie, die besonders für hochvolatile Aktien wie FNGU geeignet ist. Durch die Kombination von Bollinger Bands und RSI erzeugt sie Handelssignale rund um überkaufte/überverkaufte Preisniveaus, mit dem Ziel, Preisumkehrmöglichkeiten zu erfassen.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
BBtarget38 = BBbasis + 0.38 * BBdev  // Line at 38% of Bollinger Band width
BBtarget50 = BBbasis + 0.50 * BBdev  // Line at 50% of Bollinger Band width

///////////// EMA
emaLength = input(20, title="EMA Period Length")
ema = ema(close, emaLength)

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width")  // Line at 38%
plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width")  // Line at 50%
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
longCondition = crossover(vrsi, RSIoverSold) and buyEntry
sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper

close_long = close > BBbasis
close_short = close < BBbasis

if (not na(vrsi))
    if longCondition
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")

if (sellCondition)
    strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell")
else
    strategy.cancel(id="Sell")

if close_short
    strategy.close("Sell")


Mehr