Die Momentum-Breakout-Strategie basiert auf dem von Richard Bookstaber 1984 vorgeschlagenen Konzept, dass der Markt, sobald es eine große volatile Bewegung gibt, dazu neigt, ihr zu folgen. Somit verwendet sie den ATR, um die Volatilität zu messen, und erteilt Aufträge, wenn die aktuelle Änderung des Schlusskurses den Schwellenwert übersteigt, der durch Multiplikation des ATR mit einer konfigurierbaren Konstante berechnet wird.
Die Strategie berechnet zunächst den ATR-Indikator, um die Marktvolatilität zu messen. Dann berechnet sie den absoluten Wert der täglichen Schlusskursänderung. Wenn die Schlusskursänderung den ATR-Wert um mehrere Vielfache übersteigt, werden Handelssignale generiert. Insbesondere, wenn der Schlusskurs mehr als die ATR-Oberbahn steigt, gehen Sie lang; wenn der Schlusskurs mehr als die ATR-Oberbahn fällt, gehen Sie kurz.
Die Strategie verwendet den ATR-Indikator, um dynamisch die Breakout-Schwelle zu bestimmen. Wenn die Marktvolatilität steigt, steigt die Schwelle, um fehlerhafte Trades zu reduzieren. Wenn die Marktvolatilität abnimmt, sinkt die Schwelle, um Breakout-Möglichkeiten rechtzeitig zu erfassen.
Sie können auch andere Indikatoren kombinieren, um Handelsmöglichkeiten auszuwählen, um die Effizienz zu verbessern.
Die Momentum-Breakout-Strategie ist einfach und direkt und erzeugt Handelssignale aus Breakouts. Der ATR-Stop-Loss ermöglicht es, sich an die Marktvolatilität anzupassen. Die Strategie beruht auf Parameteroptimierung für anständige Ergebnisse. Es gibt aber auch einige Probleme wie fehlende anfängliche Breakouts, häufiges Trading usw. Für stabile Gewinne in komplexen Märkten sind weitere Verbesserungen durch Kombination mit anderen Techniken erforderlich.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 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 at https://mozilla.org/MPL/2.0/ // © EduardoMattje //@version=5 strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, process_orders_on_close=true, initial_capital=20000) // Inputs var averageLength = input.int(14, "Average length", 2) var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1) // Calculations atr = ta.atr(averageLength) * multiplier closingChange = ta.change(close, 1) atrPenetration(int signal) => res = closingChange * signal > atr[1] longCondition = atrPenetration(1) shortCondition = atrPenetration(-1) // Order calls if (longCondition) strategy.entry(strategy.direction.long, strategy.long) if (shortCondition) strategy.entry(strategy.direction.short, strategy.short) // Visuals plot(atr, "ATR", color.white, 2) plot(math.abs(closingChange), "Absolute close change", color.red)