Quadratische Momentum-Doppelindikatoren Zeitstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-04 15:53:48
Tags:

img

Übersicht

Diese Strategie vereint den SuperTrend-Indikator mit der Elliott-Wellen-Theorie, um ein robustes technisches Handelswerkzeug zu entwickeln.

Strategieprinzip

Die Kernidee liegt in einem mehrstufigen Ansatz:

  1. Verwenden Sie 4 SuperTrend-Indikatoren mit unterschiedlichen ATR-Längen und Multiplikatoren, um den Trend von kurzfristig bis langfristig zu beurteilen.
  2. Durch die Konvergenz der Indikatoren starke Lang- und Kurzsignale erkennen
  3. Verwenden Sie die Elliott Wave-Mustererkennungsmethode, um ähnliches Marktverhalten zu identifizieren und Handelssignale zu bestätigen

Es verwendet daher mehrere Indikatoren und fügt Mustererkennung hinzu, um die Strategie robuster zu machen.

Analyse der Vorteile

  1. Mehrfachindikatorgestaltung ermöglicht ein umfassendes Urteil
  2. Inspiration aus der Wellenlehre erhöht die Stabilität durch Mustererkennung
  3. Echtzeit-Richtungsanpassung an Marktveränderungen
  4. Konfigurierbare Parameter passen zu verschiedenen Produkten und Zeitrahmen

Risikoanalyse

  1. Die Parameter-Einstellung basiert auf Erfahrung und erfordert eine Abstimmung, um optimale Parameterkombinationen zu bestimmen
  2. Mehrfachindikatorentwicklung ist komplex und erhöht die Rechenlast
  3. Nicht vollständig verhindern kann, dass ein falsches Signal erzeugt wird

Parameter können optimiert werden, um allmählich das Optimale zu bestimmen; Cloud Computing kann die Rechenleistung verbessern; Stop-Losses können das Risiko kontrollieren.

Optimierungsrichtlinien

Optimierungen können in mehreren Aspekten vorgenommen werden:

  1. Hinzufügen eines anpassungsfähigen Parameteranpassungsmoduls zur dynamischen Abstimmung von Parametern basierend auf den Marktbedingungen
  2. Einbeziehung von Modellen für maschinelles Lernen zur Bewertung der Signalzuverlässigkeit
  3. Kombination von Stimmungsindikatoren, Nachrichtenveranstaltungen usw. zur Bestimmung von Marktregimen
  4. Unterstützung von Multi-Produkt-Parametervorlagen zur Verringerung des Testbetriebs

Dies wird die Strategieparameter intelligenter, die Urteile genauer und die praktische Anwendung bequemer machen.

Zusammenfassung

Die Strategie berücksichtigt sowohl Trend- als auch Musterdimensionen umfassend und gewährleistet gleichzeitig eine robuste Urteilsfähigkeit und erhöht die Flexibilität. Mehrfache Indikatoren und Parameter-Einstellungen gewährleisten eine vollständige Marktanwendbarkeit. Mit der weiteren Einbeziehung intelligenter und automatisierter Methoden kann die Praktikabilität der Strategie erheblich verbessert werden. Sie bietet wertvolle Inspiration und Referenz für den Fortschritt des technischen Handels.


/*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")



Mehr