Multi-Time-Frame-Wave-Trend-Follower-Strategie

WT MTF WaveTrend ATR Trailing Stop TREND-FOLLOWING HLC3
Erstellungsdatum: 2025-07-07 16:04:18 zuletzt geändert: 2025-07-07 16:04:18
Kopie: 0 Klicks: 233
2
konzentrieren Sie sich auf
319
Anhänger

Multi-Time-Frame-Wave-Trend-Follower-Strategie Multi-Time-Frame-Wave-Trend-Follower-Strategie

Überblick

Die Multi-Time-Frame-Wellen-Trend-Tracker-Strategie ist ein Multi-Time-Frame-Trend-Tracking-Trading-System, das auf den WaveTrend-Indikatoren basiert. Die Strategie wurde speziell für 15-Minuten-Zeiträume optimiert und verwendet eine dreistufige Zeitrahmen-Alignment-Methode: Der 240-Minuten-WaveTrend dient als Makrotrend-Filter, der 30-Minuten-WaveTrend dient der Dynamikbestätigung, während der 15-Minuten-WaveTrend für die Signalgenerierung zuständig ist. Die Strategie basiert auf der Identifizierung von Ein- und Ausstiegspunkten durch Kreuzung von WaveTrend-Indikatoren auf verschiedenen Zeitrahmen, kombiniert mit einem fortschrittlichen Tracking-Stop-Loss-Mechanismus, einschließlich einer Tracking-Logik basierend auf Maximum-Gewinn und einer prozentualen-basierten Rücknahme-Toleranz, um Gewinne zu maximieren und

Strategieprinzip

Der Kern der Strategie besteht darin, die Synergie der WaveTrend-Indikatoren über mehrere Zeiträume zu nutzen, um Trendrichtungen und Wendepunkte zu identifizieren. Der WaveTrend-Indikator selbst ist ein technischer Indikator, der die Beziehung zwischen dem Preis und seinem Index-Moving Average (EMA) berechnet und dann in Kombination mit Volatilitätsfaktoren den Preisüberkauf-Überverkauf-Zustand misst.

Die Umsetzung der Strategie erfolgt wie folgt:

  1. Als erstes definieren wir die WaveTrend-Funktion, die zwei Hauptwerte berechnet (wt1 und wt2):

    • Berechnung des Preises (in der Regel als HLC3)
    • EMA, die absolute Differenz zwischen dem Preis und der EMA als Maß für Volatilität berechnet
    • Abweichung von den relativen Preisen bei der Konstruktion der Regeneration (ci)
    • Berechnen Sie den EMA von ci als wt1 und den SMA von wt1 als wt2
  2. Die Strategie umfasst die Anwendung der WaveTrend-Indikatoren in drei Zeiträumen:

    • 15-Minuten-Diagramm (aktueller Zeitrahmen) für spezifische Signalgenerierung
    • 30-Minuten-Diagramm zur Bestätigung der mittleren Bewegungsrichtung
    • Der 60-Minuten-Chart bietet einen längerfristigen Trendhintergrund
  3. Teilnahmebedingungen:

    • Mehr machen: Wenn wt1 auf dem 15-Minuten-Chart nach oben durch wt2 fährt und wt1 größer als 60 ist, tritt der 30-Minuten-Chart nach oben ((wt1 > wt2)
    • Leerstellung: Wenn wt1 auf dem 15-Minuten-Chart nach unten durch wt2 fährt und wt1 weniger als 20 ist, während wt1 < wt2 auf dem 30-Minuten-Chart nach unten tritt
  4. Die Stop-Loss- und Ausstiegsmechanismen sind kombiniert:

    • Marginal Stop mit festen Prozentzahlen
    • Trailing Stop auf Basis von Gewinn ausgelöst
    • Maximum Drop Stop basierend auf maximaler Gewinnrücknahme
  5. Die Strategie erfasst und verfolgt den Einstiegspreis, die Einstiegspfeiler und die maximale Rendite für jeden Handel, um den Ausstiegspunkt dynamisch anzupassen.

Strategische Vorteile

  1. Synergie in mehreren ZeitrahmenDurch die Analyse der WaveTrend-Indikatoren in verschiedenen Zeitrahmen kann die Strategie die Markttrends umfassender erfassen, die Falschsignal-Störung reduzieren und die Handelsgenauigkeit verbessern. Die niedrigen Zeitrahmen bieten einen genauen Einstiegspunkt, während die hohen Zeitrahmen sicherstellen, dass die Handelsrichtung mit den Haupttrends übereinstimmt.

  2. Dynamische SchadensbegrenzungDie Strategie verwendet ein dreifaches Stop-Loss-Schutzsystem, bestehend aus einem festen Prozentsatz Stop-Loss, einem gewinnbasierten Tracking-Stop-Loss und einem Maximum-Ertrag-Schutzmechanismus. Diese Komplex-Stop-Strategie ermöglicht es, die Erträge aus dem Trend zu maximieren, während gleichzeitig das Kapital geschützt wird.

  3. Visuelle RückmeldungDie Ein- und Ausstiegspunkte sind durch farbige Etiketten ((🔴) sichtbar auf der Grafik markiert und enthalten Informationen über die Pfeiler, um die Rückverfolgung und die Aufschlüsselung zu erleichtern.

  4. Die Parameter sind flexibelDie Strategie bietet mehrere anpassbare Parameter, darunter die Stop-Loss-Trigger-Prozent-Tracking, die Tracking-Follow-Prozent-Tracking und die maximal zulässige Rücknahme-Prozent-Tracking, die der Benutzer an seine eigenen Risikopräferenzen und die Marktsituation anpassen kann.

  5. Code ist klar.Strategie: Funktionalisierte Konstruktion, logische Unterscheidung der einzelnen Teile, einfache Verständnis und Wartung, aber auch Optimierung und Erweiterung.

Strategisches Risiko

  1. Trendwende-Reaktionen im HintergrundAls eine Trendfollowing-Strategie kann es zu einer Verzögerung der Reaktion an Trendwendepunkten kommen, die zu einem größeren Rückzug bei einer Marktumkehr führt. Die Lösung besteht darin, die Stop-Loss-Parameter anzupassen oder zusätzliche Trendwendeindikatoren als Hilfsmittel hinzuzufügen.

  2. Schwache MarktentwicklungDie Strategie wird empfohlen, nur zu aktivieren, wenn die Markttrends bestätigt werden.

  3. ParameterempfindlichkeitDie Strategie ist sehr sensibel für die Parameter-Einstellungen der WaveTrend (n1=10, n2=21) und für die Stop-Loss-Parameter. Eine zu lockere Parameter kann zu spät zum Stoppen führen, eine zu strenge Parameter kann zu früh aus dem profitablen Trend aussteigen. Diese Parameter müssen durch historische Rückmessungen optimiert werden.

  4. LiquiditätsrisikenDer Code verwendet standardmäßig die relative Kapitalmenge ((10%) für den Handel, was jedoch zu einem erhöhten Schlupfpunkt oder Schwierigkeiten bei der Transaktion in einem niedrig liquiden Markt führen kann. Die Positionsgröße sollte entsprechend der Liquidität der tatsächlich gehandelten Variante angepasst werden.

  5. Anforderung einer externen DatenabhängigkeitStrategie: Die Funktion request.security (() wird verwendet, um Daten über höhere Zeiträume zu erhalten, was auf einigen Handelsplattformen zu einem Risiko von Verzögerungen oder Nichtverfügbarkeit von Daten führen kann. Es muss sichergestellt werden, dass die Handelsumgebung mehrere Datenanfragen über mehrere Zeiträume unterstützt.

Richtung der Strategieoptimierung

  1. Anpassung der dynamischen ParameterEs kann in Betracht gezogen werden, diese Parameter dynamisch an die Marktvolatilität (z. B. ATR) anzupassen. Zum Beispiel, die Stop-Distance in einem hoch-volatilen Umfeld zu erhöhen und den Stop-Loss in einem niedrig-volatilen Umfeld zu verschärfen, um sich an unterschiedliche Marktbedingungen anzupassen.

  2. Zunahme der TrendstärkeDie ADX oder ein ähnlicher Indikator kann hinzugefügt werden, um die Trendstärke zu messen. Der Handel kann nur ausgeführt werden, wenn die Trendstärke einen bestimmten Tiefpunkt überschreitet, um zu viele Geschäfte in schwachen Trends oder Querkursen zu vermeiden.

  3. Optimierung der ZeitrahmenDie aktuelle Strategie verwendet 15-minütige, 30-minütige und 60-minütige Zeitrahmen, um die optimale Kombination von Zeitrahmen durch Rücklaufanalyse zu ermitteln oder die Zeitrahmen an die Eigenschaften der verschiedenen Handelsarten anzupassen.

  4. Anmeldung der TransaktionsmengeDie Einbindung von Transaktionsindikatoren in die Einstiegsbedingungen, um sicherzustellen, dass nur Trends, die durch Transaktionsmengen unterstützt werden, eingeschlossen werden, und die Verbesserung der Signalqualität.

  5. Verbesserte SpielmöglichkeitenDerzeitige Ausgänge sind hauptsächlich abhängig von Stop-Loss-Triggern. Es kann in Betracht gezogen werden, ein Gewinnziel hinzuzufügen oder ein Umkehrsignal auf der Grundlage des WaveTrend-Indikators selbst als aktive Ausgangsbedingungen zu verwenden, anstatt nur auf passiven Stop-Loss zu vertrauen.

  6. Positionsmanagement-Logik hinzugefügtDie derzeitige Strategie nutzt eine Geldverwaltung mit festen Prozentsätzen, wobei die Positionsgröße aufgrund von Volatilität oder Signalstärke dynamisch angepasst werden kann, um Positionen bei sichereren Geschäften zu erhöhen und die Risikolocke bei unsichereren Geschäften zu verringern.

Zusammenfassen

Die Multi-Time-Frame-Wellen-Trend-Tracker-Strategie ist ein gut gestaltetes Trend-Tracking-System, das durch die Synergie der Multi-Time-Frame-WaveTrend-Indikatoren, kombiniert mit einem flexiblen Stop-Loss-Mechanismus, Markttrends effektiv erfasst und Risiken kontrolliert. Die Hauptvorteile der Strategie liegen in ihrer umfassenden Marktperspektive und dynamischen Risikomanagement-Methode, die jedoch in schwankenden Märkten herausgefordert werden kann. Durch die weitere Optimierung der Zeit-Frame-Auswahl, die Anpassung der dynamischen Parameter und die Hinzufügung zusätzlicher Filterbedingungen hat die Strategie das Potenzial, ein stabileres und anpassungsfähigeres Handelssystem zu werden.

Strategiequellcode
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-28 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("WT-FLOW: MTF WaveTrend Trend-Follower", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === WaveTrend Fonksiyonu ===
waveTrend(_src, _n1, _n2) =>
    esa = ta.ema(_src, _n1)
    d = ta.ema(math.abs(_src - esa), _n1)
    ci = (_src - esa) / (0.015 * d)
    wt1 = ta.ema(ci, _n2)
    wt2 = ta.sma(wt1, 4)
    [wt1, wt2]

// === Giriş Fiyatı ve Maksimum Kazanç Değişkenleri ===
var float longEntryPrice = na
var float shortEntryPrice = na
var float maxGainLong = 0.0
var float maxGainShort = 0.0
var int longEntryBar = na
var int shortEntryBar = na
var string currentPosition = ""

// === WT Değerlerini Al (Farklı Zaman Dilimleri) ===
var int n1 = 10
var int n2 = 21
ap = hlc3
[wt1_15, wt2_15] = waveTrend(ap, n1, n2)
[wt1_30, wt2_30] = request.security(syminfo.tickerid, "30", waveTrend(ap, n1, n2))
[wt1_60, wt2_60] = request.security(syminfo.tickerid, "60", waveTrend(ap, n1, n2))

// === Kullanıcı Girdileri: Trailing Stop Parametreleri ===
marginStopPerc = input.float(2.0, "Marjinal Stop (%)")
trailTriggerPerc = input.float(1.5, "Trailing Tetikleyici (%)")
trailFollowPerc = input.float(0.8, "Trailing Takip (%)")
trailMaxDropPerc = input.float(3.0, "Maksimum Düşüş (%)")

// === ATR için tr hesaplaması ===
tr = ta.tr(true)

// === Sinyal Koşulları ===
trendUp = wt1_30 > wt2_30
trendDown = wt1_30 < wt2_30
entryLong = ta.crossover(wt1_15, wt2_15) and wt1_15 > -60 and trendUp
entryShort = ta.crossunder(wt1_15, wt2_15) and wt1_15 < 20 and trendDown

// === Pozisyon Girişleri ===
if entryLong and currentPosition != "Long"
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    maxGainLong := 0.0
    longEntryBar := bar_index
    currentPosition := "Long"
    label.new(bar_index, high + 2 * tr, "🟢 Giriş Long #" + str.tostring(bar_index), style=label.style_label_up, color=color.green, textcolor=color.white)

if entryShort and currentPosition != "Short"
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close
    maxGainShort := 0.0
    shortEntryBar := bar_index
    currentPosition := "Short"
    label.new(bar_index, low - 2 * tr, "🔴 Giriş Short #" + str.tostring(bar_index), style=label.style_label_down, color=color.red, textcolor=color.white)

// === Trailing Stop ve Marjinal Stop Seviyeleri ===
if currentPosition == "Long" and not na(longEntryPrice)
    gainFromEntry = (close - longEntryPrice) / longEntryPrice * 100
    maxGainLong := math.max(maxGainLong, gainFromEntry)
    trailTriggerReached = gainFromEntry >= trailTriggerPerc
    trailStop = close * (1 - trailFollowPerc / 100)
    dropStop = longEntryPrice * (1 + (maxGainLong - trailMaxDropPerc) / 100)
    finalStop = trailTriggerReached ? math.max(trailStop, dropStop) : longEntryPrice * (1 - marginStopPerc / 100)
    if close <= finalStop
        strategy.close("Long")
        label.new(bar_index, low - 2 * tr, "❅ Çıkış Long #" + str.tostring(longEntryBar), style=label.style_label_down, color=color.red, textcolor=color.white)
        longEntryPrice := na
        longEntryBar := na
        currentPosition := ""

if currentPosition == "Short" and not na(shortEntryPrice)
    gainFromEntryShort = (shortEntryPrice - close) / shortEntryPrice * 100
    maxGainShort := math.max(maxGainShort, gainFromEntryShort)
    trailTriggerReachedShort = gainFromEntryShort >= trailTriggerPerc
    trailStopShort = close * (1 + trailFollowPerc / 100)
    dropStopShort = shortEntryPrice * (1 - (maxGainShort - trailMaxDropPerc) / 100)
    finalStopShort = trailTriggerReachedShort ? math.min(trailStopShort, dropStopShort) : shortEntryPrice * (1 + marginStopPerc / 100)
    if close >= finalStopShort
        strategy.close("Short")
        label.new(bar_index, high + 2 * tr, "❄ Çıkış Short #" + str.tostring(shortEntryBar), style=label.style_label_up, color=color.green, textcolor=color.white)
        shortEntryPrice := na
        shortEntryBar := na
        currentPosition := ""