Fraktal- und Musterbasierte quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-19 14:32:45
Tags:

img

Übersicht

Dieser Artikel stellt eine quantitative Handelsstrategie vor, die Fraktalanalyse und Kerzenmuster kombiniert.

Strategieprinzip

Diese Strategie basiert auf einer detaillierten Preisbewegungsanalyse, bei der eine Kombination aus Fraktalanalyse und Kerzenmustererkennung verwendet wird, um eine klare Eintritts- und Stop-Loss-Logik für die Erfassung des Trends zu definieren.

Die Eintrittsbedingung ist: der Preis bricht über das Hoch der vorherigen 2 Bars und ein fraktaler Breakout oder ein bullishes Engulfing oder ein Hammer-Muster tritt auf. Diese Kombination bestätigt langen Signale. Die Stop-Loss-Logik, die den Ausgang bei Preisbruch unter dem Tief der vorherigen 2 Bars definiert, sorgt für schnelle und effektive Stopps.

Für die Mustererkennung verwendet diese Strategie die häufig verwendete Fraktaltheorie, um wichtige Umkehrpunkte zu identifizieren, sowie Algorithmen, um die 3 klassischen Leuchterumkehrmuster zu erkennen.

Die Codierung erfolgt in Pine-Schrift. Fraktal High/Low wird identifiziert, wenn der Preis ein neues 3-Bar-Hoch/Tief erzeugt, und strenge Regeln für Öffnungs-/Schließpreise werden für Engulfing-Muster verwendet.

Vorteile

Hauptvorteile dieser Strategie:

  1. Genaues Signal, das Fraktalen und Muster kombiniert
  2. Klarer Einstiegs- und Stop-Loss-Logik
  3. Reife Theorien verhindern Überanpassung.
  4. Pine-Skript ermöglicht Backtesting

Risiken

Es gibt noch einige Risiken:

  1. Subjektivität bei Fraktal- und Mustererkennung
  2. Whipsaws, die möglicherweise nachfolgend Verlustgeschäfte erzeugen
  3. Die Stop-Loss-Größe muss für den Hochfrequenzhandel angepasst werden

Methoden wie optimierte Stopps, Trendfilterung und Walk-Forward-Analyse können helfen, die oben genannten Risiken zu kontrollieren.

Verbesserungen

Bereiche für weitere Verbesserungen:

  1. Feinstimmungsparameter für die Robustheit
  2. Hinzufügen von Trend-Bias-Filter, um Whipsaws zu vermeiden
  3. Einführung von maschinellem Lernen für die automatische Optimierung von Parametern

Diese Verbesserungen werden die Stabilität und Rentabilität der Strategie weiter stärken.

Schlussfolgerung

Dieser Artikel befasst sich gründlich mit einer Preis-Aktions-Handelsstrategie, die Fraktalen und Kerzenmuster kombiniert. Mit genauer Signalisierung, einfacher Implementierung und effektiver Trendverfolgung kann diese Strategie sowohl systematischen Händlern als auch diskretionären Händlern großen Nutzen bringen. Kontinuierliche Verbesserungen und Verifizierung werden ihre Leistung für den praktischen Handel weiter verbessern.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Mehr