Handelssystem zur Trenderfassung mit mehreren gleitenden Durchschnitten und zur gegenseitigen Bestätigung

EMA RSI MACD ATR 趋势跟踪 均线交叉 波动率过滤
Erstellungsdatum: 2025-03-03 10:11:37 zuletzt geändert: 2025-03-03 10:11:37
Kopie: 0 Klicks: 399
2
konzentrieren Sie sich auf
319
Anhänger

Handelssystem zur Trenderfassung mit mehreren gleitenden Durchschnitten und zur gegenseitigen Bestätigung Handelssystem zur Trenderfassung mit mehreren gleitenden Durchschnitten und zur gegenseitigen Bestätigung

Überblick

Das Multiple Average Trend Capture and Cross Confirmation Trading System ist eine quantitative Trading-Strategie, die auf einer Kombination aus mehrperiodischen Index-Moving Averages (EMA) basiert und die relativ starke Relative Strength Index (RSI), Moving Average Trend Differenz (MACD) und Average True Range (ATR) als unterstützende Indikatoren kombiniert. Die Kernstrategie besteht darin, die Markttrendrichtung zu bestimmen, indem man die Position der Mittellinie in verschiedenen Zeitperioden vergleicht.

Strategieprinzip

Das Kernprinzip der Strategie ist die Verwendung von Index-Moving-Averagen (EMA) aus mehreren verschiedenen Perioden, um Markttrends zu beurteilen und Handelschancen zu erfassen. In der Strategie werden fünf EMAs verwendet: die kurzfristige Durchschnittslinie (14 Perioden), die mittlere Durchschnittslinie (25 Perioden), die kurzfristige Durchschnittslinie (50 Perioden), die mittlere Durchschnittslinie (100 Perioden) und die langfristige Durchschnittslinie (200 Perioden).

Die Hauptlogik der Strategie lautet:

  1. Trendbeurteilung:

    • Aufwärtstrendbedingungen: Momentane Mittelwerte über den kurz-, mittleren und langfristigen Mittelwerten und kurzfristige Mittelwerte über den mittleren Mittelwerten
    • Abwärtstrendbedingungen: die kurzfristige Durchschnittslinie liegt unter der kurz-, mittelfristigen und langfristigen und die kurzfristige unter der langfristigen Durchschnittslinie
  2. Eintrittszeichen:

    • Multiple-Entry: Wenn die Aufwärtstrend-Bedingung erfüllt ist und keine aktuelle Position gehalten wird
    • Eintritt auf leere Sicht: Wenn die Bedingungen für einen Abwärtstrend erfüllt sind und keine Position gegenwärtig gehalten wird, und die Mindest-ATR-Bedingung erfüllt ist (ausreichend Marktvolatilität)
  3. Startsignal:

    • Multiple-Even-Positions: Wenn die kurzfristige Durchschnittslinie unter der kurzfristigen Durchschnittslinie liegt
    • Leergewichtung: Wenn die kurzfristige Durchschnittslinie durch die mittlere Durchschnittslinie führt
  4. Risikokontrolle:

    • Mit dem ATR-Indikator als Volatilitätsfilter, nur bei ausreichender Volatilität (ATR ist größer als sein Durchschnitt) für den Leerlaufhandel
    • Integrierte RSI Überkauf-Überverkauf-Level als potenzielle zusätzliche Filterbedingungen (obwohl im Code definiert, aber nicht in der aktuellen Handelslogik verwendet)
  5. Standortverfolgung:

    • Strategie, die mit einer Boolean-Variablen verfolgt, ob eine Position derzeit gehalten wird und in welche Richtung die Position gehalten wird.

Strategische Vorteile

  1. Mehrfach-Gleichgewicht bestätigt: Durch die gemeinsame Bestätigung von Trends durch mehrere Durchschnittslinien mit unterschiedlichen Perioden reduziert sich die Anzahl der Falschbrüche und Fehlsignale und die Signalqualität wird verbessert.

  2. Trends werden genau erkannt.Mehrline-Systeme sind in der Lage, die Wendepunkte von Markttrends genauer zu identifizieren als ein einziges, lineares System, insbesondere wenn sich die relative Position der Momentanzone gegenüber anderen Linie ändert.

  3. Flexible RisikomanagementDie unterschiedlichen Ein- und Ausstiegskriterien für die Mehr- und die Leerwerte zeigen eine differenzierte Behandlung des Risikos in unterschiedlichen Marktrichtungen, wobei der Leerwert zusätzlich zur Fluktuationsfilterung verwendet wird.

  4. Visualisierung von HandelssignalenStrategie: Kauf-, Verkauf- und Ausstiegspositionen werden durch grafische Markierungen klar angezeigt, um Rückverfolgungsanalysen und Echtzeitüberwachung zu ermöglichen.

  5. Trends im Hintergrund visualisierenDie Verwendung von Hintergrundfarben, um Auf- und Abwärtstrends zu unterscheiden, zeigt die Marktumgebung intuitiv an und hilft den Händlern, den aktuellen Marktzustand schnell zu beurteilen.

  6. Potenzielle SkalierbarkeitEs wurden bereits die Berechnungen der RSI- und MACD-Indikatoren integriert, die die Grundlage für die zukünftige Optimierung der Strategie bilden, obwohl sie derzeit nicht in der Handelslogik verwendet werden.

  7. Anpassbarkeit der ParameterAlle wichtigen Parameter sind durch Eingabekontrolle anpassbar, einschließlich der Mittelwert-Periode, des RSI-Schwellenwerts, der MACD-Parameter und der ATR-Einstellungen, um die Optimierung für verschiedene Marktbedingungen und Handelsarten zu erleichtern.

Strategisches Risiko

  1. DurchschnittsverzögerungDie Lösung besteht darin, den Mittelwertzyklus anzupassen oder zusätzliche Filterbedingungen für den Schwingungsmarkt hinzuzufügen.

  2. ÜberhändlerrisikenIn einem schwankenden Markt kann die kurzfristige Durchschnittslinie häufig durchschritten werden, was zu Überhändlungen führt. Sie können ungültige Geschäfte reduzieren, indem Sie die Mindesthaltungszeit erhöhen oder zusätzliche Filter hinzufügen.

  3. Unterschiedliche AnpassungsproblemeDie Einheitsstrategie mit festen Parametern hat unterschiedliche Auswirkungen auf verschiedene Marktumgebungen und Handelsarten. Die Parameter sollten für bestimmte Märkte optimiert oder die Verwendung von Anpassungsparametern in Betracht gezogen werden.

  4. SignalkonflikteDer RSI und der MACD sind zwar im Code berechnet, aber nicht effektiv in die Handelslogik integriert, was zu potentiellen Signalkonflikten oder verpassten Optimierungschancen führen kann.

  5. Mehrköpfige VoreingenommenheitDie aktuelle Strategie verwendet unterschiedliche Standards für die Mehrköpfe und die Leerköpfe. Die Mehrköpfe haben keine Fluktuationsfilterung, während die Leerköpfe die Mindest-ATR-Konditionen erfüllen müssen. Dies könnte die Strategie in den steigenden Märkten aggressiver machen und die Risikolocke erhöhen.

  6. Feste AusstiegsmechanismenDie Strategie nutzt die Kreuzung festgelegter technischer Indikatoren als Ausgangspunkt. Die fehlende Stop-Loss-Mechanismus, der sich an die dynamischen Marktbedingungen anpasst, kann nicht effektiv sein, um Gewinne zu sichern oder Risiken zu kontrollieren.

  7. ParameterempfindlichkeitDie Strategie beruht auf mehreren Parametern für die Durchschnittsphase. Kleine Änderungen dieser Parameter können zu erheblichen Unterschieden in den Handelsergebnissen führen und das Risiko einer Überfusion erhöhen.

Richtung der Strategieoptimierung

  1. Integration der berechneten IndikatorenDie Strategie berechnet die RSI und MACD-Indikatoren, nutzt sie jedoch nicht ausreichend. RSI kann verwendet werden, um extreme Marktbedingungen zu filtern, MACD wird verwendet, um die Trendrichtung zu bestätigen und die Signalqualität zu verbessern. Zum Beispiel kann verlangt werden, dass der RSI bei einem Mehrkopf-Eintritt nicht in der Überkaufzone ist und der RSI bei einem Leerkopf-Eintritt nicht in der Überverkaufszone ist.

  2. Dynamische SchadensbegrenzungDie Einführung eines dynamischen Stop-Loss-Mechanismus auf der Grundlage von ATR, der die Stop-Loss-Distanz automatisch an die Marktvolatilität anpasst, um die Risikomanagementfähigkeit zu verbessern. Dies kann durch die Berechnung von ATR-Werten mit Einstiegspunkten und Abzügen von bestimmten Multiplikatoren erreicht werden.

  3. Klassifizierung der MarktsituationEs wird ein System zur Beurteilung der Marktlage eingeführt, das verschiedene Handelsstrategien für verschiedene Marktsituationen anwendet. Zum Beispiel kann die Stärke der Markttrends anhand der Schräglage der langfristigen Durchschnittslinie oder des ADX-Indikators beurteilt werden.

  4. Mehrfache ZeitrahmenanalyseDas Ziel ist es, Trends aus höheren Zeiträumen zu integrieren und nur dann zu handeln, wenn die Trends aus höheren Zeiträumen übereinstimmen, was die Gewinnquote erhöht.

  5. Optimierung der MittellinienparameterDie aktuelle Strategie verwendet eine festgelegte Durchschnittsphase ([14, 25, 50, 100, 200]), um die optimale Parameter zu finden, die für einen bestimmten Markt besser geeignet sind, indem verschiedene Parameterkombinationen zurückgetestet werden.

  6. Hinzufügen der Transaktionsbestätigung: Kombination von Umsatzindikatoren zur Bestätigung der Trendstärke, Handel nur in Trends, die durch Umsatz unterstützt werden, um die Verluste durch False Breaks zu reduzieren.

  7. EintrittsbedingungenOptimierung der Eintrittslogik von Mehrkopf- und Leerköpfen, um sie symmetrischer zu machen, oder eine feinere Anpassung an die Merkmale der verschiedenen Marktrichtungen. Zum Beispiel kann man darüber nachdenken, die Fluktuationsratefilter auch bei Mehrkopf-Eingängen zu erhöhen oder die Strenge der Trendbestätigung anzupassen.

  8. Filterzeit erhöhenDie Aktienmärkte sind in der Lage, die Aktienmärkte zu überwachen und zu bewerten, um die Aktienmärkte zu überwachen.

Zusammenfassen

Das Multiple-Even-Trend-Capture-and-Cross-Confirmation-Trading-System ist eine quantitative Handelsstrategie, die auf der technischen Analyse basiert, um die Markttrends durch eine Kombination von Even-Linien in verschiedenen Perioden zu beurteilen und Positionen zu eröffnen, wenn der Trend klar ist, und Positionen zu platzieren, wenn der Trend schwächer wird. Der Kernvorteil der Strategie besteht darin, den Trend der Multiple-Even-Line-Cross-Confirmation zu nutzen, falsche Signale zu reduzieren und die Handelsqualität zu verbessern.

Die Strategie funktioniert gut in trendschaffenden Märkten, kann aber in turbulenten Märkten mit einem Risiko übertrieben werden. Die Strategie kann durch die Integration von berechneten RSI- und MACD-Indikatoren, die Einführung eines dynamischen Stop-Loss-Mechanismus, die Optimierung der Mittelwert-Parameterkombination und die Erhöhung der Marktstatus-Klassifizierung weiter verbessert werden.

Für praktische Anwendungen empfiehlt es sich, zuerst die Parameter an die spezifischen Merkmale des Marktes anzupassen und die einzelnen Transaktionsrisiken in Verbindung mit einer Kapitalmanagementstrategie zu steuern. Darüber hinaus kann es in Erwägung gezogen werden, die Strategie als Teil eines Portfolios zu verwenden und in Verbindung mit anderen komplementären Strategien zu verwenden, um das Transaktionsrisiko zu diversifizieren und die Stabilität des gesamten Portfolios zu verbessern.

Strategiequellcode
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs 
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant 
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts 
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm 
pricetype = input(close, title="Source de prix pour les moyennes mobiles")

// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")

// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")

// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")

// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")

// Calcul de l'ATR
atr = ta.atr(atr_length)

// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod)  // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod)  // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod)    // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)

// Calcul du RSI
rsi = ta.rsi(close, rsi_length)

// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)

// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)

// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length)  // ATR supérieur à sa moyenne

// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma   // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma  // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought  // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold  // RSI n'est pas en survente pour une vente

// === Gestion des positions ===
var bool in_position = false  // Variable pour suivre si une position est ouverte
var bool is_long = false      // Variable pour suivre si la position est longue ou courte

// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false  // Signal d'ouverture d'une position longue
bool close_signal = false  // Signal de fermeture d'une position longue
bool sell_signal = false  // Signal d'ouverture d'une position courte
bool close_short_signal = false  // Signal de fermeture d'une position courte


// Ouvrir une position longue
if (trending_up and not in_position)
    strategy.entry("Long", strategy.long)
    in_position := true
    is_long := true
    buy_signal := true  // Signal d'ouverture
else
    buy_signal := false

// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
    strategy.close("Long")
    in_position := false
    is_long := false
    close_signal := true  // Signal de fermeture
else
    close_signal := false

// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
    strategy.entry("Short", strategy.short)
    in_position := true
    is_long := false
    sell_signal := true  // Signal d'ouverture
else
    sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
    strategy.close("Short")
    in_position := false
    close_short_signal := true  // Signal de fermeture
else
    close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)

// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)

// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")