Handelsstrategie für den Ausbruch der Volatilitätsspanne

Schriftsteller:ChaoZhang, Datum: 2023-09-21 20:38:29
Tags:

Übersicht

Diese Strategie erzeugt Handelssignale basierend auf der historischen Volatilitätsspanne des Preises. Sie berechnet die Differenz zwischen den höchsten und niedrigsten Preisen über einen bestimmten Zeitraum und bildet einen Volatilitätsspanne unter Verwendung gleitender Durchschnitte. Handelssignale werden ausgelöst, wenn der Preis die oberen oder unteren Bands des Bereichs durchbricht. Sie gehört zu den Trend-nachfolgenden Breakout-Strategien.

Strategie Logik

Der Kernindikator ist die historische Preisvolatilität.

  1. Berechnen Sie die Differenz zwischen den höchsten und niedrigsten Preisen über die letzten N-Barren, genannt HL

  2. Berechnen Sie den Durchschnitt der höchsten und niedrigsten Preise über N Balken, avg ((H, L)

  3. Volatilität = HL / Durchschnitt ((H, L)

Hierbei ist N der Parameter Volatility Length.

Nach Erfassung der Volatilität werden die Bands berechnet:

Obergrenze = Laufende Schließung + Laufende Schließung * Volatilität

Unterer Band = aktueller Abschluss - aktueller Abschluss * Volatilität

Die Bänder werden dann durch WMA mit Periode als Durchschnittslänge glättet.

Wenn der Preis über das obere Band bricht, gehen Sie lang. Wenn der Preis unter das untere Band bricht, gehen Sie kurz.

Ausgangssignale werden durch Ausgangstyp definiert:

  1. Wenn der Ausgangstyp Volatilität MA ist, wird der Ausgang durchgeführt, wenn der Preis wieder unter die WMA fällt.

  2. Wenn der Ausgangstyp Range Crossover ist, treten Sie aus, wenn der Preis wieder unter die Bands fällt.

Vorteile

  • Die Volatilität fängt die Trendbewegungen gut ein
  • WMA macht die Bands stabiler und zuverlässiger
  • Breakout-Signale fangen Trendwechsel rechtzeitig an
  • Ausgänge auf Basis von WMA/Bändern senken Verluste schnell
  • Viel Spielraum für die Anpassung von Parametern für verschiedene Märkte

Risiken

  • Ausbrüche können mit einer Preisumkehr einhergehen
  • Risiken großer Verluste bei Trendumkehr
  • Die WMA ist manchmal zu spät beim Erkennen von Trendwende
  • Parameteroptimierung ist nicht einfach, erfordert viel Versuch und Fehler
  • Größere Abzüge erfordern ein gutes Risikomanagement

Die Risiken können verringert werden, indem

  • Optimierung der Parameter für zuverlässigere Bands
  • Hinzufügen anderer Indikatoren, um Probleme zu vermeiden
  • Kleinere Größen und besseres Risikomanagement
  • Überlegungen zur Wiedereinreise

Optimierungsrichtlinien

Die Strategie kann verbessert werden, indem

  1. Einstellung der Parameter

Verschiedene Längenwerte testen, um optimale Kombinationen zu finden.

  1. Hinzufügen weiterer Indikatoren

Überprüfen Sie beispielsweise, ob der MACD auch goldene Kreuzungen zeigt, wenn der Preis über das obere Band bricht.

  1. Besser Stop-Loss

Optimierung für Hinterhalt statt einfacher Range Break Stops.

  1. Wiedereingänge

Regeln für den Wiedereintritt festlegen, um Trends nach dem Stoppen wieder zu erfassen.

  1. Positionsgrößen

Dynamische Anpassung der Größen anhand der Marktvolatilität.

Zusammenfassung

Diese Strategie funktioniert gut für Trending-Märkte im Allgemeinen, indem sie volatilitätsbasierte Bands verwendet, um die Trendstärke und die WMA zu messen, um zuverlässige Handelsbereiche für Breakout-Signale zu bilden.


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//@version=5
strategy("Volatility Range Breakout Strategy [wbburgin]", shorttitle = "VRB Strategy [wbburgin]", overlay=true,
 pyramiding=20,max_bars_back=2000,initial_capital=10000)

wma(float priceType,int length,float weight) =>
    norm = 0.0
    sum = 0.0
    for i = 0 to length - 1
        norm := norm + weight
        sum := sum + priceType[i] * weight
    sum / norm

// This definition of volatility uses the high-low range divided by the average of that range.
volatility(source,length) =>
    h = ta.highest(source,length)
    l = ta.lowest(source,length)
    vx = 2 * (h - l) / (h + l)
    vx

vm1 = input.int(100,"Average Length")
volLen = input.int(100,"Volatility Length")
vsrc = input.source(close,"Volatility Source")
cross_type = input.source(close,"Exit Source")
exit_type = input.string("Volatility MA",options=["Volatility MA","Range Crossover"],title="Exit Type")

volatility = volatility(vsrc,volLen)

highband1 = close + (close * volatility)
lowband1 = close - (close * volatility)
hb1 = wma(highband1,vm1,volatility)
lb1 = wma(lowband1,vm1,volatility)
hlavg = math.avg(hb1,lb1)

upcross = ta.crossover(high,hb1)    //Crossing over the high band of historical volatility signifies a bullish breakout
dncross = ta.crossunder(low,lb1)    //Crossing under the low band of historical volatility signifies a bearish breakout

vlong = upcross
vshort = dncross
vlong_exit = switch
    exit_type == "Volatility MA" => ta.crossunder(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossunder(cross_type,hb1)
vshort_exit = switch
    exit_type == "Volatility MA" => ta.crossover(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossover(cross_type,lb1)

if vlong
    strategy.entry("Long",strategy.long)
if vlong_exit
    strategy.close("Long")
if vshort
    strategy.entry("Short",strategy.short)
if vshort_exit
    strategy.close("Short")

plot(hlavg,color=color.white,title="Weighted Volatility Moving Average")
t = plot(hb1,color=color.new(color.red,50),title="Volatility Reversal Band - Top")
b = plot(lb1,color=color.new(color.green,50),title="Volatility Reversal Band - Bottom")

alertcondition(vlong,"Volatility Long Entry Signal")
alertcondition(vlong_exit,"Volatility Long Exit Signal")
alertcondition(vshort,"Volatility Short Entry Signal")
alertcondition(vshort_exit,"Volatility Short Exit Signal")

fill(t,b,color=color.new(color.aqua,90))

Mehr