Supertrend-Momentum-Volatilität – Dual-Indikator-Timing-Strategie


Erstellungsdatum: 2024-02-04 15:53:48 zuletzt geändert: 2024-02-04 15:53:48
Kopie: 0 Klicks: 598
1
konzentrieren Sie sich auf
1617
Anhänger

Supertrend-Momentum-Volatilität – Dual-Indikator-Timing-Strategie

Überblick

Die Strategie kombiniert Hypertrend-Indikatoren und Elliott-Wellen-Theorie, um ein robustes technisches Handelsinstrument zu erstellen. Es verwendet mehrschichtige Trendanalyse, um eine umfassendere Sicht auf den Markt zu bieten, um potenzielle Trendwende und wichtige Preisänderungen in den Märkten zu erfassen.

Strategieprinzip

Die Kernidee liegt in der vielschichtigen Methode:

  1. 4 Hypertrend-Indikatoren mit unterschiedlichen ATR-Längen und Multiplikatoren werden verwendet, um Trends von kurz- bis langfristiger zu beurteilen
  2. Durch die Zusammenführung der Indikatoren kann ein stabiler Mehr-und-Null-Signal gefunden werden.
  3. Verweise auf die Methode zur Patternerkennung von Elliott-Wellen, identifiziere ähnliche Muster des Marktverhaltens und bestätige Handelssignale

So werden mehrere Kennzahlen genutzt und die Mustererkennung erweitert, um die Strategie zu stabilisieren.

Analyse der Stärken

  1. Mehrindikator-Design für eine umfassende Beurteilung
  2. Die Wellenlehre inspiriert, die Mustererkennung erhöht die Stabilität
  3. Umstellung auf Veränderungen im Markt in Echtzeit
  4. Die Parameter sind konfigurierbar für verschiedene Sorten und Zeiträume

Risikoanalyse

  1. Die Einstellung der Parameter ist erfahrungsbedingt und erfordert Anpassungen, um die optimale Kombination der Parameter zu bestimmen.
  2. Mehrfaches Design ist komplizierter und erhöht die Rechenlast
  3. Die Erstellung von Fehlsignalen kann nicht vollständig vermieden werden.

Die Optimierung der Parameter kann schrittweise durchgeführt werden, um die optimalen Parameter zu ermitteln. Die Verwendung von Cloud-Computing erhöht die Rechenleistung. Die Stop-Loss-Einstellung dient zur Risikokontrolle.

Optimierungsrichtung

Die Optimierung kann in folgenden Bereichen erfolgen:

  1. Erweiterung des Moduls zur Anpassung der Anpassungsparameter und dynamische Anpassung der Parameter an die Marktlage
  2. Hinzufügen von maschinellen Lernmodellen, um die Zuverlässigkeit von Handelssignalen zu beurteilen
  3. Beurteilung von Marktmustern in Kombination mit externen Faktoren wie Stimmungsindikatoren und Nachrichtenereignissen
  4. Unterstützung für mehrere Varianten von Parameter-Templates, reduziert den Test-Aufwand

Das macht die Strategie-Parameter intelligenter, die Beurteilung genauer und die praktische Anwendung einfacher.

Zusammenfassen

Die Strategie-Synthese berücksichtigt die beiden Dimensionen von Trend und Modell und gewährleistet sowohl die Stabilität der Beurteilung als auch die Flexibilität der Strategie. Eine Vielzahl von Indikatoren und Parameter-Einstellungen garantieren die Marktausstattung.

Strategiequellcode
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")