Gandalf Mean Reversion Quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-30 10:27:40
Tags:

img

Übersicht

Die Gandalf Quantitative Trading Strategie ist eine durchschnittliche Umkehrstrategie, die auf Median-Preislinien basiert. Sie bestimmt die aktuelle Trendrichtung, indem sie den gewichteten Durchschnittspreis, die Median-Preislinie und den Body-Middle-Preis berechnet, um optimale Einstiegspunkte zu finden.

Strategie Logik

Die Kernlogik der Gandalf-Strategie besteht darin, den Größenverhältnis zwischen dem gewichteten Durchschnittspreis, der Medianpreislinie und dem Körpermittelpreis zu vergleichen, um die aktuelle Trendrichtung und -stärke zu beurteilen.

Insbesondere berechnet sie folgende Preise:

  • Gewichteter Durchschnittspreis: (höchster Preis + niedrigster Preis + Schlusskurs + Schlusskurs) / 4
  • Medianpreislinie: (Höchster Preis + Tiefster Preis) / 2
  • Durchschnittlicher Kurs des Körpers: (Eröffnungspreis + Schließpreis) / 2

Beim Eintritt in eine Position vergleicht sie die Größenordnung des Verhältnisses zwischen dem gewichteten Durchschnittspreis, der Medianpreislinie und dem mittleren Körperpreis der letzten beiden Balken, um festzustellen, ob er den Merkmalen eines Ausgangstrends entspricht.

Wenn beispielsweise der gewichtete Durchschnittspreis unterhalb der Medianpreislinie liegt und der Gesamtdurchschnittspreis ebenfalls unterhalb des gewichteten Durchschnittspreises liegt, zeigt dies an, dass der Preis sinkt, was eine Kurzlaufmöglichkeit darstellt.

Wenn der gewichtete Durchschnittspreis über dem Körpermittelpreis liegt und die Medianpreislinie unter dem gewichteten Durchschnittspreis liegt, deutet dies auf eine Trendumkehr hin und sollte den Verlust sofort reduzieren.

Durch den Vergleich der Preisgrößenverhältnisse realisiert die Gandalf-Strategie das Urteilen und die Verfolgung von Trends. Sie kann optimale Eintrittszeiten finden und auch schnell Trendumkehrungen erkennen, um Verluste zu stoppen.

Vorteile

Die Gandalf-Strategie hat folgende Vorteile:

  1. Die Verwendung der mittleren Preislinie zur Bestimmung der Trendrichtung kann Marktlärm effektiv filtern und den Haupttrend verriegeln.

  2. Die Einstiegsbedingung, die mehrere Preisvergleiche kombiniert, kann den Beginn eines Trends zuverlässiger bestimmen.

  3. Die Stop-Loss-Bedingung verwendet auch den Preisvergleich, um eine Trendumkehr zu beurteilen, was einen schnellen Stop-Loss und eine Risikokontrolle ermöglicht.

  4. Durch die Annahme bedingter Eintrittsbefehle kann man zu idealen Preisen eintreten.

  5. Vorgegebene maximale Gewinnentnahmezeiten und Höchstgrenze für die Haltedauer können die Gewinne sichern und einheitliche Handelsrisiken kontrollieren.

  6. Die Code-Struktur ist klar und einfach, leicht zu verstehen und zu ändern.

  7. Die Parameter können anhand der persönlichen Risikopräferenzen angepasst werden, leicht zu optimieren.

  8. Anwendbar auf Trendprodukte, die Trending-Gewinne erzielen können.

Zusammenfassend lässt sich sagen, dass die Gandalf-Strategie die mittlere Linie nutzt, um den Trend zu bestimmen, die Bedingungen für die Gewinn- und Stop-Loss-Aufnahme festlegt und Risiken effektiv kontrollieren kann, während Trends verfolgt werden, was sie zu einer zuverlässigen Trend-Nachfolge-Strategie macht.

Risiken

Die Gandalf-Strategie birgt auch einige Risiken:

  1. Als Trend-Folge-Strategie erzeugt sie kleinere Verluste, wenn der Trend unklar ist oder sich häufig umkehrt.

  2. Die Unfähigkeit, die Trendumkehrpunkte effektiv zu bestimmen, kann zu zunehmenden Verlusten führen.

  3. Sie sind anfällig für die Gefahr, in den Märkten mit begrenztem Marktumfang gefangen zu werden.

  4. Die Parameter müssen für verschiedene Produkte angepasst werden.

  5. Einseitige Beteiligung, die nicht von umgekehrten Trends profitieren kann.

  6. Hohe Ausfallrate von bedingten Aufträgen, kann lange warten für den Einstieg.

Risikomanagementmaßnahmen:

  1. Die Positionen werden mit einer kleinen Größe und einem teilweisen Einstieg verglichen, um einen einzigen Verlust zu kontrollieren.

  2. Setzen Sie Stop-Loss-Linie, schnellen Stop-Loss oder übernehmen Sie beweglichen Stop-Loss oder Trailing Stop-Loss.

  3. Optimieren Sie die Parameter für das aktuelle Produkt. Verwenden Sie andere Indikatoren, um das Trendbeurteilen zu unterstützen.

  4. Betrachten Sie Martingale auf Basis niedrigerer Kosten.

  5. Handel mit Produkten mit offensichtlichen Trends, höhere Gewinnsicherheit.

  6. Eintrittskriterien entsprechend lockern, um die Eintrittswahrscheinlichkeit zu erhöhen.

Verbesserungsrichtlinien

Die Gandalf-Strategie kann auch in folgenden Aspekten verbessert werden:

  1. Erstellen von Trendbeurteilungsindikatoren, um den Zeitpunkt der Trendumkehrungen zu bestimmen, z. B. durch Hinzufügen von MACD, Bollinger Bands usw.

  2. Fügen Sie diskrete Optimierungsfunktionen hinzu, um die Parameter automatisch zu optimieren und sich an mehr Produkte anzupassen.

  3. Erhöhen Sie die Maschinellen Lernalgorithmen, trainieren Sie neuronale Netzwerke oder SVM-Modelle auf historischen Daten, um Trends zu beurteilen.

  4. Fügen Sie mehr Profit-Taking-Methoden, wie bewegliche Profit-Take, parabolische Profit-Take.

  5. Kombination von verwandten Produkten für den Spread-Handel oder für Stat-Arb-Strategien.

  6. Hinzufügen von Zustandsprognosen basierend auf dem versteckten Markov-Modell, um das Marktregime zu beurteilen.

  7. Konstruieren Sie kombinierte Strategien, wie die Kombination mit gleitenden Durchschnittsstrategien für das Multi-Strategie-Management.

  8. Erforschen Sie die Optimierung von Handelsstrategie-Kombinationen, um optimale Portfoliogewichte zu finden.

Zusammenfassend kann die Gandalf-Strategie in mehreren Dimensionen erweitert und optimiert werden, wie Trendbeurteilung, automatische Optimierung, Risikomanagement, um die Strategie robuster und zuverlässiger zu machen.

Schlussfolgerung

Die Gandalf-quantitative Strategie ist eine einfache, aber effektive Strategie, die auf dem Preisvergleich basiert, um Trends zu bestimmen. Sie kombiniert die Ideen des Trendfolgens und des schnellen Stop-Loss und kann Risiken effektiv kontrollieren. Die Strategielogik ist klar und leicht zu verstehen, die Parameter können basierend auf persönlichen Risikopräferenzen angepasst werden.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)


Mehr