Mehrfache bedingte Trendverfolgungs-Strategie für quantitativen Handel basierend auf Fibonacci-Retracement-Levels

SL MA TP ATR
Erstellungsdatum: 2024-12-20 15:55:57 zuletzt geändert: 2024-12-20 15:55:57
Kopie: 1 Klicks: 420
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrfache bedingte Trendverfolgungs-Strategie für quantitativen Handel basierend auf Fibonacci-Retracement-Levels

Überblick

Die Strategie ist eine Trendverfolgung basierend auf Fibonacci-Rücktrittsniveaus. Die Strategie nutzt hauptsächlich die Fibonacci-Rücktrittsniveaus, die für die Berechnung der Höchst- und Tiefstpreise des vorangegangenen Handelstages entscheidend sind, um mehrere Eintrittsbedingungen in Verbindung mit der Öffnungspreisposition und dem Zeitfenster einzurichten und die entsprechenden Stop-Loss-Positionen für verschiedene Bedingungen einzurichten, um die Tendenz zu erfassen und die Risiken zu kontrollieren.

Strategieprinzip

Die Strategie berechnet zunächst sechs wichtige Fibonacci-Rücktrittsniveaus: 0, 23,6%, 38,2%, 50%, 61,8% und 100%. Je nachdem, wo sich der Eröffnungspreis in Bezug auf diese Niveaus befindet, werden die Einstiegsbedingungen in drei Situationen unterteilt: 1) der Eröffnungspreis liegt zwischen 23,6%-50%; 2) der Eröffnungspreis liegt bei 61,8% und in einem bestimmten Zeitfenster; 3) der Eröffnungspreis liegt unter 23,6% und unter dem Vortagstief.

Strategische Vorteile

  1. Die Fibonacci-Rückziehungsebenen werden als wichtige Unterstützungswiderstände verwendet, die in den Märkten eine starke Orientierungskraft haben.
  2. In Verbindung mit der Zeitfenster und der Preissituation, die mehrere Bedingungen beurteilt, erhöht die Genauigkeit der Strategie.
  3. Die Anpassung der Stop-Loss-Position an die jeweiligen Situationen zeigt die Flexibilität des Risikomanagements.
  4. Die Strategie ist klar und die Parameter sind anpassbar, sodass sie sich an unterschiedlichen Marktsituationen anpassen lassen.

Strategisches Risiko

  1. Die Wirksamkeit der Fibonacci-Widerrufsstufe kann durch die Marktumstände beeinträchtigt werden.
  2. Die Einstellung eines festen Zeitfensters kann gute Chancen für andere Zeiträume verpassen.
  3. Die Einstellungen der Stop-Loss-Position können bei starken Schwankungen leicht berührt werden.
  4. Die Strategie berücksichtigt nicht die Gesamttrends des Marktes und kann häufig in schwankenden oder schwankenden Märkten gehandelt werden.

Richtung der Strategieoptimierung

  1. Die Einführung von Trend-Anzeigen (z. B. mittlere Linien), die nur dann ausgeführt werden, wenn ein Trend eindeutig ist.
  2. Erhöhung der Volatilitätsindikatoren (z. B. ATR) und dynamische Anpassung der Stop-Loss-Position.
  3. Die Analyse der Transaktionsvolumina erhöht die Glaubwürdigkeit von Preis- und Preis-Breakthroughs.
  4. Optimierung der Zeitfenster-Einstellungen, um die optimale Handelszeit zu berücksichtigen, basierend auf der Analyse der historischen Daten.
  5. Das Ziel ist es, die Gewinnziele zu erhöhen und die Profit-Knapp-Mechanismen zu verbessern.

Zusammenfassen

Die Strategie kombiniert Fibonacci-Rücktrittsniveaus, Zeitfenster und mehrere Bedingungen, um ein vollständiges Handelssystem zu erstellen. Die Strategie hat den Vorteil, dass sie logisch klar und risikokontrollierbar ist, aber immer noch optimiert und verbessert werden muss, je nach Marktsituation. Durch die zusätzliche Optimierung von Trendurteilen, dynamischen Stop-Loss- und Handelsvolumenanalysen können die Stabilität und Profitabilität der Strategie weiter verbessert werden.

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

//@version=6
strategy("Fibonacci Retracement Strategy", overlay=true)

// Get the high and low of the previous day
previousHigh = request.security(syminfo.tickerid, "D", high[1])
previousLow = request.security(syminfo.tickerid, "D", low[1])

// Fibonacci levels for the previous day (from high to low)
fib0 = previousHigh
fib236 = previousHigh - (previousHigh - previousLow) * 0.236
fib382 = previousHigh - (previousHigh - previousLow) * 0.382
fib50 = previousHigh - (previousHigh - previousLow) * 0.5
fib618 = previousHigh - (previousHigh - previousLow) * 0.618
fib1 = previousHigh - (previousHigh - previousLow) * 1

// Current open price (for the current day)
openPrice = open

// Time for 9:15 AM check
timeStart = timestamp(year, month, dayofmonth, 9, 15)
timeClose = timestamp(year, month, dayofmonth, 9, 30) // Time window to allow for opening range

// Entry Conditions
buyCondition1 = openPrice >= fib236 and openPrice <= fib50
buyCondition2 = openPrice == fib618 and time >= timeStart and time <= timeClose
buyCondition3 = openPrice < fib236 and openPrice < previousLow

// Stop Loss based on conditions
stopLoss1 = fib618
stopLoss2 = fib618 - (fib618 - fib1) / 2
stopLoss3 = fib382

// Plot Fibonacci levels with calculated values
plot(fib0, color=color.green, linewidth=1, title="Fib 0")
plot(fib236, color=color.red, linewidth=1, title="Fib 0.236")
plot(fib382, color=color.blue, linewidth=1, title="Fib 0.382")
plot(fib50, color=color.yellow, linewidth=1, title="Fib 0.5")
plot(fib618, color=color.purple, linewidth=1, title="Fib 0.618")
plot(fib1, color=color.orange, linewidth=1, title="Fib 1")

// Plot labels for Fibonacci levels with actual values
label.new(x=bar_index, y=fib0, text="Fib 0: " + str.tostring(fib0), style=label.style_label_right, color=color.green, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib236, text="Fib 0.236: " + str.tostring(fib236), style=label.style_label_right, color=color.red, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib382, text="Fib 0.382: " + str.tostring(fib382), style=label.style_label_right, color=color.blue, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib50, text="Fib 0.5: " + str.tostring(fib50), style=label.style_label_right, color=color.yellow, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib618, text="Fib 0.618: " + str.tostring(fib618), style=label.style_label_right, color=color.purple, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib1, text="Fib 1: " + str.tostring(fib1), style=label.style_label_right, color=color.orange, textcolor=color.white, size=size.small, yloc=yloc.abovebar)

// Entry conditions and strategy execution
if (buyCondition1)
    strategy.entry("Buy", strategy.long, stop=stopLoss1)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

if (buyCondition2)
    strategy.entry("Buy", strategy.long, stop=stopLoss2)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

if (buyCondition3)
    strategy.entry("Buy", strategy.long, stop=stopLoss3)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

// Show exit signals and labels
if (buyCondition1)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss1)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

if (buyCondition2)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss2)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

if (buyCondition3)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss3)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)