Die Ressourcen sind geladen. Beförderung...

Fibonacci-Retracement- und Erweiterungsstrategie mit mehreren Indikatoren

Schriftsteller:ChaoZhang, Datum: 2024-11-12
Tags:EMA

img

Übersicht

Diese Strategie ist ein zusammengesetztes quantitatives Handelssystem, das auf Fibonacci-Retracement- und Erweiterungsniveaus basiert, kombiniert mit der EMA-Trendbestimmung. Die Strategie identifiziert wichtige Unterstützungs- und Widerstandsniveaus auf dem Markt und führt Trades auf Basis von Trendsignalen aus. Das System verwendet 20-Perioden- und 50-Perioden-EMAs, um Markttrends zu bestimmen, und nutzt Fibonacci-Retracement-Niveaus, um optimale Handelsmöglichkeiten zu finden.

Strategieprinzipien

Die Kernlogik besteht aus drei Hauptkomponenten: Erstens berechnet es die höchsten und niedrigsten Preise in den letzten 10 Perioden, um die Preisspanne zu bestimmen; Zweitens berechnet es fünf wichtige Fibonacci-Retracement-Level (0,236, 0,382, 0,5, 0,618, 0,786) auf der Grundlage dieser Bandbreite; Schließlich bestimmt es die Trendrichtung durch das Überschreiten von 20- und 50-Perioden-EMAs. Kaufsignale werden erzeugt, wenn der Preis in einem Aufwärtstrend über die Retrake-Levels bricht, während Verkaufssignale ausgelöst werden, wenn der Preis in einem Abwärtstrend unter die Retrake-Levels bricht.

Strategische Vorteile

  1. Kombiniert Trendfolgung und Preisrückführungskonzepte, verbessert die Genauigkeit des Handels
  2. Verwendet Fibonacci-Sequenzen als wichtige Preisniveaus, die eine starke psychologische Bedeutung auf den Märkten haben
  3. Verwendet EMA-Kreuzungen zur Trendenbestimmung und vermeidet häufige Geschäfte in verschiedenen Märkten
  4. Ein sauberes Systemdesign, das leicht zu verstehen und zu pflegen ist
  5. Anpassungsfähig an verschiedene Zeitrahmen und zeigt eine hohe Vielseitigkeit

Strategische Risiken

  1. Kann auf stark volatilen Märkten falsche Signale erzeugen
  2. Verlässt sich auf eine Fortsetzung des Trends, die in verschiedenen Märkten möglicherweise unterdurchschnittlich ist
  3. Die Berechnungen des Rückgriffsniveaus auf der Grundlage historischer Höchst- und Tiefstände können hinter dem Markt zurückbleiben
  4. Die Auswahl des Einstiegspunktes ist möglicherweise nicht präzise genug, was zu größeren Stoppverlusten führt
  5. Das System verfügt nicht über dynamische Positionsmanagementmechanismen

Strategieoptimierungsrichtlinien

  1. Einbeziehung von Volumenindikatoren zur Verbesserung der Trendgenauigkeit
  2. Implementieren dynamischer Stop-Loss-Mechanismen zur besseren Risikokontrolle
  3. Optimierung der Berechnungszeiträume für den Rückkauf, um dem Marktrhythmus besser gerecht zu werden
  4. Hinzufügen von Volatilitätsfiltern, um den Handel in Zeiten hoher Volatilität zu vermeiden
  5. Gestaltung flexibleren Positionsmanagementsystems, die die Bestände anhand der Marktbedingungen anpassen

Zusammenfassung

Die Strategie baut ein relativ vollständiges Handelssystem auf, indem sie klassische technische Analysetools kombiniert. Während es Bereiche für Optimierung gibt, zeigt der Gesamtrahmen eine gute Marktanpassungsfähigkeit. Durch kontinuierliche Optimierung und Verbesserung verspricht die Strategie eine bessere Leistung im tatsächlichen Handel. Es wird empfohlen, vor dem Live-Handel gründliche historische Daten-Backtesting und Parameteroptimierung durchzuführen.


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

Verwandt

Mehr