Mehrstufige quantitative Trendhandelsstrategie basierend auf dem Durchbruch von Unterstützungs- und Widerstandsniveaus und Backtesting

Pivot SR MA BREAKOUT RETEST Trend
Erstellungsdatum: 2025-02-20 16:00:35 zuletzt geändert: 2025-02-20 16:00:35
Kopie: 2 Klicks: 377
2
konzentrieren Sie sich auf
319
Anhänger

Mehrstufige quantitative Trendhandelsstrategie basierend auf dem Durchbruch von Unterstützungs- und Widerstandsniveaus und Backtesting Mehrstufige quantitative Trendhandelsstrategie basierend auf dem Durchbruch von Unterstützungs- und Widerstandsniveaus und Backtesting

Überblick

Es handelt sich um eine quantitative Trading-Strategie, die auf dem Durchbruch und der Rückmessung von Resistenzpunkten basiert. Die Strategie handelt über die Identifizierung von kritischen Preisstützpunkten und Resistenzpunkten, die nach dem Preisbruch an den Rückmessungsbestätigungspunkten gehandelt werden. Die Strategie verwendet die dynamische Positionierung der Bar-Kritikpunkte nach links und rechts und kombiniert die Rückmessungsdifferenz mit der Überprüfung von falschen Durchbrüchen, um die Genauigkeit und Stabilität des Handels zu verbessern.

Strategieprinzip

Die Strategie beinhaltet folgende Kernlogiken:

  1. Identifizieren Sie wichtige Unterstützungs- und Widerstandspivotpunkte, indem Sie eine bestimmte Anzahl von K-Linien nach vorne und hinten schauen
  2. Statusvariablen zur Verfolgung von Durchbrüchen und Rückmessungen von Widerstandspunkten für Kandidatenstützen
  3. Aktualisierung der Kandidaten-Unterstützungswiderstände bei neuen Pivotpoints
  4. Traden Sie, wenn der Preis die Widerstandsstufe der Kandidaten-Unterstützung überschreitet und zurückgeprüft wird:
    • Wenn der Preis unter der Unterstützung fällt und wieder in der Nähe der Unterstützung aufsteigt, tun Sie mehr.
    • Der Preis durchbricht die Resistance und macht frei, wenn er in der Nähe der Resistance zurückfällt
  5. Filterung von Preisschwankungen bei Rückmessungen mit Capacity Parametern zur Verbesserung der Signalqualität

Strategische Vorteile

  1. Die klassische Theorie der Technischen Analyse mit klaren und verständlichen Logiken
  2. Die Anpassungsfähigkeit durch dynamische Identifizierung von Schlüsselpunkten
  3. Kombination von Durchbruch und Rückmeldung zur Doppelbestätigung, um Falschsignale zu reduzieren
  4. Filterung von Geräuschen mit Abweichungsparametern, um die Genauigkeit zu verbessern
  5. Klare Code-Struktur, einfach zu pflegen und zu erweitern
  6. Für mehrere Zeiträume und Sorten

Strategisches Risiko

  1. Häufige Geschäfte in turbulenten Märkten können zu Verlusten führen
  2. Das Falschsignal existiert noch.
  3. Bei der Parameteroptimierung besteht das Risiko einer Überanpassung
  4. Der Stop-Loss ist bei starken Marktschwankungen möglich.
  5. Auswirkungen auf die Transaktionskosten

Richtung der Strategieoptimierung

  1. Hinzufügen von Trendfiltern, um nur in Richtung der Hauptrends zu handeln
  2. Eintritt in die Mengenbestätigung
  3. Optimierung der Zulassungszeit, Erwägung der Erhöhung der Bestätigung technischer Kennzahlen
  4. Verbesserung der Schadensbegrenzungsmechanismen
  5. Positionsmanagement-Logik hinzugefügt
  6. Erwägen Sie die Einbeziehung von Mehrzeitzyklusanalyse

Zusammenfassen

Die Strategie basiert auf der klassischen Resistenz-Theorie der Stützungen und der Break-Back-Logik und verfügt über eine gute theoretische Grundlage. Stabile Handelsergebnisse können durch Parameteroptimierung und Risikokontrolle erzielt werden. Die Strategie-Code-Struktur ist klar, leicht zu verstehen und zu erweitern und hat einen starken praktischen Wert.

Strategiequellcode
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("SR Breakout & Retest Strategy (4hr)", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== USER INPUTS =====
leftBars    = input.int(3, "Left Pivot Bars", minval=1)
rightBars   = input.int(3, "Right Pivot Bars", minval=1)
tolerance   = input.float(0.005, "Retest Tolerance (Fraction)", step=0.001)

// ===== PIVOT CALCULATION =====
pLow  = ta.pivotlow(low, leftBars, rightBars)
pHigh = ta.pivothigh(high, leftBars, rightBars)

// ===== STATE VARIABLES FOR CANDIDATE LEVELS =====
var float candidateSupport  = na
var bool  supportBroken     = false
var bool  supportRetested   = false

var float candidateResistance = na
var bool  resistanceBroken    = false
var bool  resistanceRetested  = false

// ===== UPDATE CANDIDATE LEVELS =====
if not na(pLow)
    candidateSupport := pLow
    supportBroken    := false
    supportRetested  := false

if not na(pHigh)
    candidateResistance := pHigh
    resistanceBroken    := false
    resistanceRetested  := false

// ===== CHECK FOR BREAKOUT & RETEST =====
// -- Support: Price breaks below candidate support and then retests it --
if not na(candidateSupport)
    if not supportBroken and low < candidateSupport
        supportBroken := true

    if supportBroken and not supportRetested and close >= candidateSupport and math.abs(low - candidateSupport) <= candidateSupport * tolerance
        supportRetested := true
        label.new(bar_index, candidateSupport, "Support Retest", 
                  style=label.style_label_up, color=color.green, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a long position on support retest
        strategy.entry("Long_Support", strategy.long)

// -- Resistance: Price breaks above candidate resistance and then retests it --
if not na(candidateResistance)
    if not resistanceBroken and high > candidateResistance
        resistanceBroken := true

    if resistanceBroken and not resistanceRetested and close <= candidateResistance and math.abs(high - candidateResistance) <= candidateResistance * tolerance
        resistanceRetested := true
        label.new(bar_index, candidateResistance, "Resistance Retest", 
                  style=label.style_label_down, color=color.red, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a short position on resistance retest
        strategy.entry("Short_Resistance", strategy.short)

// ===== PLOTTING =====
plot(pLow, title="Pivot Low (Support)", style=plot.style_circles, color=color.green, linewidth=2)
plot(pHigh, title="Pivot High (Resistance)", style=plot.style_circles, color=color.red, linewidth=2)