Fibonacci-Retracement und -Extension-Mehrfachindikator – quantitative Handelsstrategie

EMA
Erstellungsdatum: 2024-11-12 10:51:02 zuletzt geändert: 2024-11-12 10:51:02
Kopie: 1 Klicks: 514
1
konzentrieren Sie sich auf
1617
Anhänger

Fibonacci-Retracement und -Extension-Mehrfachindikator – quantitative Handelsstrategie

Überblick

Die Strategie ist ein komplexes quantitatives Handelssystem, das auf Fibonacci-Rückzug- und Verlängerungsebenen basiert, kombiniert mit EMA-Gleichgewichts-Trendbeurteilungen. Die Strategie handelt durch die Identifizierung wichtiger Unterstützungswiderstände auf dem Markt, kombiniert mit Trendsignalen. Das System verwendet 20-Zyklus- und 50-Zyklus-EMA-Gleichgewichte, um Markttrends zu ermitteln und auf dieser Grundlage die Fibonacci-Rückzugsebenen zu nutzen, um die besten Handelsmöglichkeiten zu finden.

Strategieprinzip

Die Kernlogik der Strategie besteht aus drei Hauptteilen: Zuerst berechnen Sie Höchst- und Tiefstpreise für fast 10 Zyklen, um die Preisschwankungsbreite zu bestimmen; anschließend berechnen Sie fünf wichtige Fibonacci-Rücktrittsniveaus basierend auf dieser Spanne: 0,236, 0,382, 0,5, 0,618, 0,786; und schließlich bestimmen Sie die Trendrichtung durch die Kreuzung von 20- und 50-Zyklen-EMA. In einem Aufwärtstrend gibt es mehrere Signale, wenn der Preis die Rücktrittsgrenze überschreitet; in einem Abwärtstrend gibt es ein Hohlsignal, wenn der Preis die Rücktrittsgrenze überschreitet.

Strategische Vorteile

  1. Die Kombination von Trend-Tracking und Preis-Retracing erhöht die Genauigkeit des Handels.
  2. Die Verwendung der Fibonacci-Reihen als Schlüsselpreisniveaus, die in den Märkten eine starke psychologische Bedeutung haben
  3. Trends anhand der EMA-Gleichgewichtung zu beurteilen, um häufige Transaktionen in OTC-Märkten zu vermeiden
  4. Systemkonzeption ist einfach zu verstehen und zu pflegen
  5. Sie können für verschiedene Zeiträume verwendet werden und sind sehr anpassungsfähig.

Strategisches Risiko

  1. In einem stark schwankenden Markt können falsche Signale erzeugt werden.
  2. Der Trend ist abhängig von der Dauerhaftigkeit des Trends und kann in einem wackligen Markt schlecht abschneiden.
  3. Die Berechnung des Rückzugspegels basiert auf historischen Höhen und Tiefen und könnte den Märkten hinterherhinken.
  4. Eintrittspunkte können nicht genau genug ausgewählt werden, was zu weit entfernten Stopppositionen führt.
  5. Das System fehlt an dynamischen Positionsmanagementmechanismen

Richtung der Strategieoptimierung

  1. Die Einführung von Transaktionsindikatoren zur Verbesserung der Genauigkeit von Trendbewertungen
  2. Erhöhung der dynamischen Stop-Loss-Mechanismen und bessere Risikokontrolle
  3. Optimierung der Berechnungszyklen für die Rücknahme, um sie besser mit dem Markt zu verbinden
  4. Einsatz eines Volatilitätsfilters, um den Handel während hoher Volatilität zu vermeiden
  5. Entwurf eines flexibleren Positionsmanagementsystems, das die Positionen an die Marktbedingungen anpasst

Zusammenfassen

Die Strategie baut ein relativ vollständiges Handelssystem auf, indem sie klassische technische Analyse-Tools kombiniert. Obwohl es einige Optimierungsbedürfnisse gibt, ist das Gesamt-Framework gut anpassungsfähig für den Markt. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie in der Lage sein, bessere Ergebnisse im realen Handel zu erzielen.

Strategiequellcode
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")