Dies ist eine Strategie, die potenzielle Preisumkehrungen mit einem angepassten Gaussian Detrended Price Oscillator (GDPO) in Kombination mit glätteten Preiszyklen identifiziert.
Die Strategie berechnet zunächst den Detrended Price Oscillator (DPO), indem der Schlusskurs über einen bestimmten Zeitraum mit einem exponentiellen gleitenden Durchschnitt (EMA) verglichen wird, um kurzfristige Preiszyklen zu identifizieren.
Die Ein- und Ausstiegsregeln werden auf der Grundlage von Crossover-Ereignissen zwischen dem glätteten GDPO und seiner verzögerten Version definiert. Eine Long-Position wird eingegeben, wenn das glättete GDPO über die Verzögerung überschreitet und negativ ist. Die Long-Position wird verlassen, wenn das glättete GDPO unter die Verzögerung oder die Nulllinie überschreitet. Eine Short-Position wird eingegeben, wenn das glättete GDPO unter die Verzögerung überschreitet und positiv ist. Die Short-Position wird verlassen, wenn das glättete GDPO über die Verzögerung oder die Nulllinie überschreitet.
Der glatte GDPO und seine Verzögerung werden in unterschiedlichen Farben dargestellt. Die Nulllinie wird auch als Referenz angezeigt. Die Hintergrundfarbe des Diagramms ändert sich, wenn die Strategie in eine Position eintritt. Kreuzmarker werden an den Crossover-Punkten als Ausstiegssignale dargestellt.
Die Strategie kombiniert Detrending-Techniken und Gaussian-Gleichung, um Umkehrchancen im Vergleich zu anderen Oszillatoren klarer zu identifizieren.
Die Strategie ist empfindlich gegenüber Parameter-Tuning wie Periodenlängen und Glättungsparametern. Um optimale Parameter zu bestimmen, ist umfangreiches Backtesting erforderlich, da sonst übermäßige falsche Signale auftreten können. Die Strategie kann in Trending-Märkten aufeinanderfolgende Verluste hervorrufen. Stop-Loss sollte verwendet werden, um Einzelhandelsverluste zu kontrollieren. Fehlgeschlagene Umkehrungen sind ebenfalls ein großes Risiko. Die Umkehrwahrscheinlichkeit sollte anhand von Chartmustern und Trendstärke bestätigt werden.
Die Optimierung kann durch dynamische Anpassung von Parametern und die Einbeziehung von Trendindikatoren zur Verbesserung der Robustheit erfolgen.
Die Strategie kann in mehreren Aspekten optimiert werden:
Dynamische Anpassung der Glättungsparameter, um die Glättung der Trends zu erhöhen und falsche Signale zu reduzieren.
Verwenden Sie Trendindikatoren wie ADX, um Verluste in Trendmärkten zu vermeiden.
Hinzufügen von Stop-Loss-Mechanismen wie dynamischen oder Trailing-Stops.
Optimieren Sie die Einstiegsbedingungen mit zusätzlichen Indikatoren oder Mustern für eine höhere Einstiegsgenauigkeit.
Optimierung der Kapitalverwaltung durch Anpassung der Positionsgröße und der Stopps anhand der Marktbedingungen.
Testen Sie die Strategie über verschiedene Zeitrahmen wie tägliche oder wöchentliche Daten.
Die Gaussian Detrended Reverssion Strategie identifiziert kurzfristige Zyklen mit Hilfe des GDPO und extrahiert Signale mit Gaussian Filtern, um Umkehrungen unter definierten Ein- und Ausstiegsregeln zu erfassen.
/*backtest start: 2022-10-31 00:00:00 end: 2023-11-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 // © DraftVenture //@version=5 strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15) //Detrended Price Oscillator for price cycles period_ = input.int(50, title="Price Length", minval=1) barsback = period_/2 + 1 ma = ta.ema(close, period_) dpo = close - ma[barsback] // Rounded ALMA Calculations for gaussian smoothing almaSource = dpo almaWindowSize = input(title="Smoothing Length", defval=50) lagLength = input(title="Lag Length", defval=25) almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6) almaLag = almaSmoothed[lagLength] // Reversion entry conditions entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0 exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0) entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0 exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0) // Long entry and exit if entryL strategy.entry("Long", strategy.long) if exitL strategy.close("Long") // Short entry and exit if entryS strategy.entry("Short", strategy.short) if exitS strategy.close("Short") // Plot the oscillator plot(almaSmoothed, title="GDPO", color=color.green) plot(almaLag, title="Lag", color=color.white) hline(0, title="Zero Line", color=color.white) bgcolor(entryL ? color.new(color.green, 40) : na) bgcolor(entryS ? color.new(color.red, 40) : na) plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny) plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny) //Strategy by KP