Handelsstrategie für Volatilitätsbreakouts

Schriftsteller:ChaoZhang, Datum: 2023-10-30 16:58:03
Tags:

img

Übersicht

Die Volatility Breakout Trading Strategie zielt darauf ab, Preisbreaks zu erfassen, die durch erhöhte Marktvolatilität entstehen. Die Strategie verwendet den Indikator Average True Range (ATR), um die Volatilität eines Vermögenswertes über einen bestimmten Zeitraum zu messen.

Strategie Logik

Die Strategie berechnet zunächst den ATR über einen ausgewählten Zeitraum. Dann verwendet sie den ATR, um einen oberen und unteren Breakout-Level zu berechnen. Wenn der Schlusskurs über den oberen Niveau bricht, wird ein langes Signal generiert. Wenn der Schlusskurs unter den unteren Niveau bricht, wird ein kurzes Signal generiert. Um die Signale weiter zu bestätigen, muss die aktuelle Bar für ihren Körperteil geschlossen werden.

Wenn der Schlusskurs die oberen oder unteren Ebenen durchbricht, wird die Breakout-Zone mit einer Farbe gefüllt, die die Breakout-Richtung anzeigt.

Wenn ein langes Signal erzeugt wird und es keine aktuelle Position gibt, geht die Strategie lang.

Der Längeneingang bestimmt den Zeitraum, über den die Volatilität gemessen wird. Ein höherer Längeneinfluss bedeutet, sich auf längere Kursbewegungen zu konzentrieren.

Durch die Senkung des Längenwerts können kurzfristige Kursbewegungen und eine möglicherweise erhöhte Handelsfrequenz angestrebt werden. Es gibt keine strikte Korrelation zwischen dem Längeneingang und der durchschnittlichen Handelslänge.

Analyse der Vorteile

Der ATR-Indikator berechnet die Breakout-Level dynamisch anstelle von festen Parametern.

Die Verwendung von Festbalkenschließungen zur Bestätigung von Signalen filtert falsche Ausbrüche aus.

Die Eingabe der Länge bietet Flexibilität, um die Strategie für spezifische Marktbedingungen zu optimieren.

Risikoanalyse

Ein Breakout-Handel birgt das Risiko, dass er gestoppt wird. Stop-Losses können Verluste bei einzelnen Trades kontrollieren.

Breakout-Signale können falsche Signale erzeugen, die zu einem Überhandel führen.

Die Optimierung von Parametern erfordert ausreichende Handelsdaten. Schlechte Anfangsparameter können zu einer unterdurchschnittlichen Leistung führen.

Optimierungsmöglichkeiten

Bollinger-Bänder können innerhalb der ATR-Periode eingeführt werden, um neue Breakout-Levels zu berechnen.

Trends können nach Ausbrüchen weiter verfolgt werden, anstatt sofort zu stoppen.

Auf den Märkten mit Bandbreite können verschiedene Parameter oder die Vermeidung von Trades insgesamt in Betracht gezogen werden, um Whipsaws zu vermeiden.

Schlussfolgerung

Die Volatility Breakout Trading Strategie profitiert von der erhöhten Marktvolatilität, um Trends zu erreichen, wenn die Preise signifikant durchbrechen. Der ATR-Indikator setzt dynamisch Breakout-Levels und solide Balken filtern falsche Breakouts. Der Längeneingabe bietet Flexibilität zur Anpassung der Strategies Periode. Die Strategie eignet sich für mittelfristige bis langfristige Trendfolgen, aber Breakout-Risiken müssen durch Parameteroptimierung verwaltet werden.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/

//@version=5
strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true)

// Inputs
length = input(title="Length", defval=20)

// Calculate the average true range (ATR)
atr = ta.atr(length)

// Plot the ATR on the chart
plot(atr, color=color.blue, linewidth=2, title="ATR")

// Calculate the upper and lower breakouts
upper_breakout = high + atr
lower_breakout = low - atr

// Plot the upper and lower breakouts on the chart
ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level")
ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level")

// Create the signals
long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed
short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed

active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ? 
   color.new(color.green,85) : color.new(color.red,85)

// Plot the signals on the chart
plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup, 
   color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green)
plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown, 
   color=color.red, size=size.normal,text = "Bearish breakout",  textcolor = color.red)

// Fill the space between the upper and lower levels with the color that indicates the latest signal direction
fill(ul,ll, color=active_signal_color)   

long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed
short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed

if long_condition
    strategy.entry("Volatility Breakout Long", strategy.long)


if short_condition
    strategy.entry("Volatility Breakout Short", strategy.short)


Mehr