Dynamische Dreilinien-Breakout-Handelsstrategie basierend auf ATR und ADX

ATR ADX SL TP
Erstellungsdatum: 2025-02-21 09:23:20 zuletzt geändert: 2025-02-27 17:20:50
Kopie: 2 Klicks: 405
2
konzentrieren Sie sich auf
319
Anhänger

Dynamische Dreilinien-Breakout-Handelsstrategie basierend auf ATR und ADX Dynamische Dreilinien-Breakout-Handelsstrategie basierend auf ATR und ADX

Überblick

Die Strategie ist ein hochwertiges Handelssystem, basierend auf klassischen Drei-Linie-Breakout-Formen, das eine vollständige Handelslösung durch die Integration von ADX-Trendbestätigungsindikatoren und ATR-dynamischen Stop-Loss-Mechanismen bietet. Der Kern der Strategie ist die Identifizierung von drei aufeinanderfolgenden Breakout-Formen nach den K-Linien und die Kombination von Trendstärke-Bestätigung für die Erstellung eines präzisen Handelssignals.

Strategieprinzip

Die Strategie basiert auf drei zentralen Mechanismen: erstens die Identifizierung der klassischen Drei-Linien-Break-Formen, einschließlich der bullish-Formen ((drei-Linien-Break-Formen nach drei-Linien-Break-Formen) und der bearish-Formen ((drei-Linien-Break-Formen nach drei-Linien-Break-Formen); zweitens die Verwendung von ADX ((Durchschnittlicher Trendindikator) für die Überschreitung der Trendstärke, die nur dann bestätigt wird, wenn der ADX-Wert den festgelegten Threshold überschreitet; und schließlich die Verwendung von ATR ((Real Wavelength)) für die Dynamik, um die Position der Stoppschäden zu berechnen und die Anpassungsfähigkeit des Risikomanagements zu gewährleisten. Die Strategie gewährleistet die Signalqualität technisch durch präzise K-Linien-Farbe und Überprüfungen der Breakoeffizierung.

Strategische Vorteile

  1. Signalbestätigung verbessert: Signalzuverlässigkeit verbessert durch Kombination mehrerer technischer Kennzahlen (K-Linienform, ADX, ATR)
  2. Intelligente Risikomanagement: ATR-basierte dynamische Stop-Loss-Einstellungen, die sich automatisch an die Marktvolatilität anpassen
  3. Hohe Anpassbarkeit: Anpassungsmöglichkeiten für mehrere Schlüsselparameter, einschließlich ADX-Thresholds, ATR-Perioden usw.
  4. Erweiterte Trendverfolgung: ADX-Filterung, die den Einstieg nur bei starken Trends gewährleistet
  5. Klarheit in der Code-Struktur: Modularer Aufbau für einfache Wartung und Erweiterung

Strategisches Risiko

  1. Verzögerung bei der Formerkennung: Die Bestätigung des Drei-Linien-Durchbruchs benötigt vier K-Linien, was zu einer Verzögerung der Einfahrt führen kann.
  2. Falsche Durchbruchgefahr: Falsche Durchbruchsignale können in einem wackligen Markt auftreten
  3. ADX-Rückstand: Der ADX als Trendbestätigungsindikator weist eine gewisse Rückstandsfähigkeit auf
  4. Stop-Loss-Anteil: Die Stop-Loss-Einstellungen basierend auf ATR können bei starken Schwankungen zu groß oder zu klein sein
  5. Abhängigkeit vom Marktumfeld: Strategien können in tendenziell positiven Märkten besser abschneiden als in den turbulenten

Richtung der Strategieoptimierung

  1. Signalfilter-Verstärkung: Umfangsbestätigungsmechanismen können hinzugefügt werden, um die Signalsicherheit zu verbessern
  2. Dynamische Parameteroptimierung: Einführung von Adaptionsmechanismen zur dynamischen Anpassung von ADX-Termins und ATR-Zyklen
  3. Eintrittszeitoptimierung: kann mit der Preisstruktur ((Unterstützungs- / Widerstands-Platz) kombiniert werden, um den Eintrittspunkt zu optimieren
  4. Positionsmanagement verbessert: Erhöhung der dynamischen, auf Volatilität basierenden Positionsmanagementmechanismen
  5. Marktumfelderkennung: Hinzufügung von Marktumfeld-Klassifizierungslogik, mit unterschiedlichen Parameter-Einstellungen unter verschiedenen Marktbedingungen

Zusammenfassen

Diese Strategie erzeugt ein Handelssystem, das sowohl theoretische Grundlagen als auch praktische Funktionen aufweist, indem es die klassische Drei-Linien-Breakthrough-Form mit modernen technischen Indikatoren kombiniert. Ihre Kernvorteile liegen in der Mehrfachsignal-Bestätigungsmechanik und der intelligenten Risikomanagement, wobei jedoch auf die Eignung der Marktumgebung und die Optimierung der Parameter geachtet werden muss. Durch die empfohlene Optimierungsrichtung besteht noch Raum für weitere Steigerung der Strategie.

Strategiequellcode
/*backtest
start: 2024-08-05 00:00:00
end: 2024-12-24 00:00:00
period: 5h
basePeriod: 5h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and ADX Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and ADX Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & ADX')
adxLength = input.int(title='ADX Length', defval=14, group='ATR & ADX')
adxThreshold = input.float(title='ADX Threshold', defval=25, group='ATR & ADX')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate ADX components manually
tr = ta.tr(true)
plusDM = ta.change(high) > ta.change(low) and ta.change(high) > 0 ? ta.change(high) : 0
minusDM = ta.change(low) > ta.change(high) and ta.change(low) > 0 ? ta.change(low) : 0
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)
smoothedTR = ta.rma(tr, adxLength)

plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and adx > adxThreshold
is3LSBullSig = is3LSBull() and adx > adxThreshold

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)