Mehrstufige Strategie zur Überschreitung des gleitenden Durchschnitts für Quantmasters

Schriftsteller:ChaoZhang, Datum: 2024-01-12 12:11:02
Tags:

img

Übersicht

Diese Strategie nutzt das Prinzip der mehrstufigen gleitenden Durchschnittskreuzung, um mittelfristige Trends zu erfassen und stabile Gewinne zu erzielen. Sie verwendet drei Sätze von gleitenden Durchschnitten mit unterschiedlichen Parametern und trifft Handelsentscheidungen auf der Grundlage ihrer Kreuzungen. Im Vergleich zu traditionellen Strategien mit nur zwei Sätzen gleitenden Durchschnittskreuzungen kann diese mehrstufige gleitende Durchschnittskreuzungsstrategie mehr falsche Signale filtern und die Gewinnrate der Strategie verbessern.

Strategie Logik

Die Strategie verwendet drei Sätze von gleitenden Durchschnitten: den schnellen gleitenden Durchschnitt MAshort, den mittleren Geschwindigkeitsgleitenden Durchschnitt MAmid und den langsamen gleitenden Durchschnitt MAlong. MAshort hat einen Parameter von 9, reagiert am schnellsten und wird verwendet, um kurzfristige Signale zu erfassen; MAmid hat einen Parameter von 50, hat eine mittlere Geschwindigkeit und wird verwendet, um den Trend zu bestätigen; MAlong hat einen Parameter von 100, reagiert am langsamsten und wird verwendet, um die langfristige Trendrichtung zu bestimmen.

Die spezifische Handelslogik der Strategie ist: Wenn die mittlere Geschwindigkeit gleitende Durchschnittslinie MAmid über die langsame gleitende Durchschnittslinie MAlong kreuzt, zeigt dies an, dass sich der Aufwärtstrend des Aktienkurses bildet. Zu diesem Zeitpunkt geht die Strategie lang; wenn der schnelle gleitende Durchschnittswert MAshort unter den mittleren Geschwindigkeitsgleitenden Durchschnittswert MAmid kreuzt, zeigt dies an, dass eine kurzfristige Trendumkehr stattgefunden hat, und die Strategie tritt zu diesem Zeitpunkt aus ihrer Position.

Der größte Vorteil dieser Strategie besteht darin, dass sie durch die Kombination mehrerer gleitender Durchschnitte falsche Signale effektiv herausfiltern und nur relativ starke Ausbrüche während eines mittelfristigen Aufwärtstrends wählen kann, um Long-Positionen zu eröffnen.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Die Strategieparameter sind so optimiert, dass sie den mittelfristigen und langfristigen Trends mit einer relativ hohen Gewinnrate effektiv entsprechen.
  2. Das mehrstufige gleitende Durchschnittsdesign filtert Lärm und falsche Signale.
  3. Es eignet sich für alle Arten von Aktien und Kryptowährungen mit relativ guten historischen Backtest-Ergebnissen.
  4. Die Operationsfrequenz ist gering, jede Eröffnungsposition nimmt 30% der Fonds ein und das Risiko ist kontrollierbar.
  5. Der Zeitraum ist konfigurierbar, was für den Live-Handel Flexibilität bietet.

Risikoanalyse

Diese Strategie birgt außerdem folgende Risiken:

  1. Die Wahrscheinlichkeit von langfristigen Trendumkehrungen ist relativ gering, aber wenn dies geschieht, kann die Stop-Loss-Größe groß sein.
  2. Die Handelsfrequenz ist gering und hat daher das Problem einer ineffizienten Kapitalnutzung.
  3. Die Parameter der Strategie müssen für verschiedene Handelsarten optimiert werden, was den Anwendungsbereich einschränkt.

Um diesen Risiken entgegenzuwirken, werden wir die Anwendbarkeit der Strategie weiter ausbauen und gleichzeitig den maximalen Drawdown mit Stop-Loss-Techniken kontrollieren.

Optimierungsrichtlinien

Diese Strategie kann auch auf folgende Weise optimiert werden:

  1. Optimieren Sie den Parameter Tage des gleitenden Durchschnitts, um die beste Parameterkombination zu finden
  2. Hinzufügen von Lautstärkenindikatoren zur Bestätigung und Vermeidung von Problemen mit der Kurvenanpassung
  3. Festlegen Sie den maximalen Verlust für die Strategie, z. B. 20% Max Drawdown, um einen Stop Loss zu erzwingen
  4. Einbeziehung von Modellen des maschinellen Lernens zur Beurteilung von Trends und Verbesserung der Anpassungsfähigkeit der Strategie

Zusammenfassung

Diese Strategie gehört zu einer typischen mittelfristigen quantitativen Strategie, die mit der Prämisse der Kontrolle von Handelsrisiken kontinuierlich Gewinne erzielt, indem mehrstufige gleitende Durchschnitte mit mittelfristigen Trends abgeglichen werden. Im Vergleich zu einem einzigen Indikator enthält diese Strategie mehrere Parameter und kann starke mittelfristige und langfristige Trendsignale effektiv identifizieren. Durch weitere Optimierung kann diese Strategie auf mehr Sorten angewendet werden und spielt eine wichtige Rolle im quantitativen Handel.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=4
strategy(shorttitle='Multi Moving Average Crossing',title='Multi Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//MA inputs and calculations
inlong=input(100, title='MAlong')
inmid=input(50, title='MAmid')
inshort=input(9, title='MAfast')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)
MAmid= sma(close, inmid)


//Entry 
bullish = crossover(MAmid, MAlong)

strategy.entry(id="long", long = true, when = bullish and window())

//Exit
bearish = crossunder(MAshort, MAmid)

strategy.close("long", when = bearish and window())

plot(MAshort, color=color.orange, linewidth=2)
plot(MAmid, color=color.red, linewidth=2)
plot(MAlong, color=color.blue, linewidth=2)


Mehr