Nullverzögerung Volatilitätsbreakout EMA-Trendstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-15 12:00:25
Tags:

img

Übersicht

Dies ist eine einfache Breakout-Strategie, die die Differenz zwischen zwei verschiedenen Nullverzögerungs-EMAs verwendet, um den Aufwärts- oder Abwärtsmomentum eines Instruments zu verfolgen.

Strategie Logik

Die Strategie verwendet zwei speziell berechnete EMA-Indikatoren, um die Volatilitätsdifferenz zu ermitteln, wie in den folgenden Formeln dargestellt:

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))  
dif = (hJumper / lJumper) - 1

Die Differenz reagiert sofort ohne Verzögerung auf starke Preisänderungen.

Wenn die Diff über das obere Bollinger-Band geht, wird ein Einstiegssignal ausgelöst. Wenn die Diff unter das mittlere Bollinger-Band geht, wird ein Ausstiegssignal ausgelöst.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die schnelle Reaktion auf Breakout-Signale ohne Verzögerung. Dies wird durch die Verwendung von zwei speziell berechneten Null-Lag-EMAs erreicht. Dies ermöglicht es der Strategie, Preis-Breakout-Ereignisse sofort zu erfassen und frühzeitig in aufstrebende Trends einzutreten.

Ein weiterer Vorteil ist die Einfachheit dieser Strategie. Sie hat nur einen Parameter lx. Weniger Parameter erleichtern die Optimierung und reduzieren das Risiko einer Überanpassung.

Risikoanalyse

Das Hauptrisiko dieser Strategie ist ein möglicher falscher Ausbruch der Signale. Es können während von verschiedenen Perioden aufeinanderfolgende falsche Ausbrüche auftreten. Um dieses Risiko zu mindern, können wir das Bollinger-Band-Multiplikator erhöhen, um die Signale stabiler zu machen.

Ein weiteres Risiko sind häufige kleine Gewinne/Verluste während unruhiger Märkte, die durch Anpassung der Exit-Mechanismen, beispielsweise durch Festlegen von Stop-Loss- oder Take-Profit-Preisniveaus, gemildert werden können.

Optimierungsrichtlinien

Im Folgenden sind einige Richtungen aufgeführt, in denen diese Strategie optimiert werden kann:

  1. Hinzufügen von Filterindikatoren zur Validierung von Eingangssignalen und zur Verringerung falscher Signale.

  2. Einbeziehen Sie Stop Loss und Take Profit, um Trades besser zu verwalten.

  3. Nach einer Handelsvolumenbestätigung suchen, um falsche Ausbrüche ohne Volumenbindung zu vermeiden.

  4. Anpassung von Bollinger-Bändern zur Anpassung von Parametern anhand der Marktvolatilität.

  5. Optimieren von Parametern dynamisch auf Basis von maschinellem Lernen.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass diese EMA-Strategie mit Nullverzögerungsvolatilität die Kursdynamik schnell erfasst, indem speziell berechnete EMAs ohne Verzögerung verwendet werden.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("Zero-lag Volatility-Breakout EMA Trend Strategy",overlay=false)

tt1 = "If selected, the strategy will not close long or short positions until the opposite signal is received. This"+
 " exposes you to more risk but potentially could generate larger returns."

src = input.source(close,"Source")
lx = input.int(200,"EMA Difference Length")
bbmult = input.float(2.0,"Standard Deviation Multiple")
useBinaryStrategy = input.bool(true,"Use Binary Strategy",tooltip = tt1)

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))

dif = (hJumper / lJumper) - 1

[bbm,bbu,bbl] = ta.bb(dif,lx,bbmult)

plot(dif,color=color.white,title="Zero lag EMA Difference")
plot(bbu,color=color.lime,title="Bollinger Top")
plot(bbl,color=color.red,title="Bollinger Bottom")
plot(bbm,color=color.yellow,title="Bollinger Middle")

sigEnter = ta.crossover(dif,bbu)
sigExit = ta.crossunder(dif,bbm)
emaBase = ta.ema(src,lx)
enterLong = sigEnter and emaBase > emaBase[1]
enterShort = sigEnter and emaBase < emaBase[1]

plotshape(enterLong,style=shape.labelup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(enterShort,style=shape.labeldown,location=location.top,color=color.red,size=size.tiny)

if enterLong
    strategy.entry("Long",strategy.long)
if enterShort
    strategy.entry("Short",strategy.short)
if not useBinaryStrategy and sigExit
    strategy.close("Long")
    strategy.close("Short")

Mehr