Die Doppelfraktal-Breakout-Strategie ist eine quantitative Handelsstrategie, die auf der technischen Mustererkennung basiert. Sie identifiziert potenzielle Trendumkehrungen durch das Erkennen von Doppelboden- und Doppeloberfraktalarmen und erzeugt Kauf- und Verkaufssignale, wenn die Preise aus diesen Fraktalen ausbrechen.
Die Kernidee hinter dieser Strategie liegt in der Fraktaltheorie. Die Entstehung von M- oder W-förmigen kurzfristigen Wendepunkten deutet auf eine mögliche Umkehr des vorherrschenden Trends hin. Insbesondere bilden sich unterste oder oberste Fraktalen, wenn 5 aufeinanderfolgende Balken bestimmte hohe/niedrige Kombinationen relativer größerer/niedrigerer Höhen/Tiefste erzeugen. Zum Beispiel bildet sich ein oberstes Fraktal, wenn die höchsten Preise der ersten 2 Balken über denen der letzten 3 Balken liegen.
Die Strategie erzeugt lange und kurze Signale, wenn die Preise unterhalb der unteren und über den oberen Fractal brechen, da solche Breakouts eine höhere Wahrscheinlichkeit einer Trendumkehr anzeigen.
Der Hauptvorteil dieser Strategie besteht in der Fähigkeit, potenzielle Trendumkehrpunkte zu erkennen, was für trendfolgende Handelssysteme sehr nützlich sein kann.
Das größte Risiko besteht darin, dass die Fraktaldetektion keine Preisumkehrungen mit voller Gewissheit garantiert. Manchmal können die Preise nur kurzfristige Korrekturen ohne echte Trendänderungen vornehmen. Falsche Signale können in solchen Fällen zu unnötigen Verlusten führen. Um dieses Risiko zu mindern, können andere Indikatoren wie Handelsvolumen verwendet werden, um die Gültigkeit von Umkehrsignalen zu überprüfen.
Möglichkeiten zur Verbesserung dieser Strategie sind:
Filter wie Lautstärke hinzufügen, um falsche Umkehrungen zu vermeiden.
Tuning-Parameter, um größere Doppelfraktale zu erkennen und große Trendwende zu erfassen.
Einbeziehung von beweglichen Stop Loss, um Verluste durch schlechte Trades zu reduzieren.
Die Doppelfraktal-Breakout-Strategie identifiziert potenzielle Preisumkehrungen, indem spezifische technische Muster erkannt werden. Als technischer Indikator-gesteuerter Ansatz kann sie kurz- und mittelfristige Trends auf dem Markt effektiv verfolgen und respektable Risiko-Rendite-Ergebnisse bieten.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ceyhun strategy("Fractal Breakout Strategy", overlay=true) FUp = high[4] < high[2] and high[3] < high[2] and high[1] < high[2] and high < high[2] or high[5] < high[2] and high[4] < high[2] and high[3] <= high[2] and high[1] < high[2] and high < high[2] or high[6] < high[2] and high[5] < high[2] and high[4] <= high[2] and high[3] <= high[2] and high[1] < high[2] and high < high[2] or high[7] < high[2] and high[6] < high[2] and high[5] <= high[2] and high[4] <= high[2] and high[3] <= high[2] and high[1] < high[2] and high < high[2] or high[8] < high[2] and high[7] < high[2] and high[6] <= high[2] and high[5] <= high[2] and high[4] <= high[2] and high[3] <= high[2] and high[1] < high[2] and high < high[2] FractalUp = valuewhen(FUp, high[2], 1) plot(FractalUp, color=#0000FF,title="FractalUp") FDown = low[4] > low[2] and low[3] > low[2] and low[1] > low[2] and low > low[2] or low[5] > low[2] and low[4] > low[2] and low[3] >= low[2] and low[1] > low[2] and low > low[2] or low[6] > low[2] and low[5] > low[2] and low[4] >= low[2] and low[3] >= low[2] and low[1] > low[2] and low > low[2] or low[7] > low[2] and low[6] > low[2] and low[5] >= low[2] and low[4] >= low[2] and low[3] >= low[2] and low[1] > low[2] and low > low[2] or low[8] > low[2] and low[7] > low[2] and low[6] >= low[2] and low[5] >= low[2] and low[4] >= low[2] and low[3] >= low[2] and low[1] > low[2] and low > low[2] FractalDown = valuewhen(FDown, low[2], 1) plot(FractalDown, color=#FF0000,title="FractalDown") if crossover(close, FractalUp) strategy.entry("Long", strategy.long, comment="Long") if crossunder(close, FractalDown) strategy.entry("Short", strategy.short, comment="Short")