Schnelle und langsame gleitende Durchschnitte

Schriftsteller:ChaoZhang, Datum: 2024-02-27 16:06:30
Tags:

img

Übersicht

Der schnelle und langsame gleitende Durchschnitt ist eine einfache gleitende Durchschnittsbasierte Strategie. Er verwendet zwei gleitende Durchschnitte, einen schnellen und einen langsamen. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt von unten kreuzt, geht er lang, was darauf hinweist, dass die Preise steigen können. Wenn der schnelle gleitende Durchschnitt unter den langsamen gleitenden Durchschnitt von oben kreuzt, tritt er aus seiner Position, was darauf hinweist, dass die Preise fallen können. Dies kann als Indikator dienen, um zukünftige Preisbewegungen vorherzusagen.

Grundsätze

Die Strategie verwendet zwei gleitende Durchschnitte, einen schnellen und einen langsamen. Insbesondere sind die Standardlängen 25 Perioden für den schnellen gleitenden Durchschnitt und 62 Perioden für den langsamen. Die Strategie ermöglicht die Auswahl verschiedener Arten von gleitenden Durchschnitten, einschließlich SMA, EMA, WMA, RMA und VWMA.

Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt von unten überschreitet, signalisiert er, dass die kurzfristigen Preise begonnen haben, die langfristigen Preise zu durchbrechen, was ein typisches goldenes Kreuzsignal ist, das darauf hinweist, dass die Preise einen Aufwärtstrend betreten können. Die Strategie geht an diesem Punkt lang. Wenn der schnelle gleitende Durchschnitt unter den langsamen gleitenden Durchschnitt von oben überschreitet, signalisiert er, dass die kurzfristigen Preise begonnen haben, die langfristigen Preise zu brechen, was ein Todeskreuzsignal ist, das darauf hinweist, dass die Preise einen Abwärtstrend betreten können. Die Strategie tritt an diesem Punkt aus ihrer Position.

Durch die Verwendung des Crossovers von schnellen und langsam gleitenden Durchschnitten zur Bestimmung der Kursentwicklung und -richtung und der entsprechenden Long- oder Close-Positionen können Gewinne erzielt werden.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Idee ist einfach und leicht zu verstehen und umzusetzen
  2. Flexible Parameter-Einstellungen mit anpassbaren Perioden und Arten gleitender Durchschnittswerte
  3. Zuverlässiger Indikator zur genauen Bestimmung der Preisentwicklung unter Verwendung eines gleitenden Durchschnitts
  4. Automatisierung realisiert, der Einfluss psychologischer Faktoren ohne manuelles Urteilen reduziert
  5. Anwendbar auf mehrere Produkte, kann weit verbreitet für Indizes, Forex, Kryptowährungen usw. verwendet werden
  6. Einfach zu optimieren, Parameter können angepasst werden, um bessere Konfigurationen zu finden
  7. Starke Erweiterbarkeit, kann mit anderen Indikatoren oder Strategien kombiniert werden

Zusammenfassend kann mit dem schnellen und langsamen gleitenden Durchschnitts-Crossover als Kern-Handelssignal die Strategie eine starke Fähigkeit zur Beurteilung zukünftiger Preistrends haben.

Risikoanalyse

Die Strategie birgt auch einige potenzielle Risiken:

  1. Crossover-Signale können falsche Signale geben, wobei die Preise nur kurzfristige Korrekturen und nicht langfristige Trendumkehrungen aufweisen
  2. Eine unsachgemäße Auswahl von kurzen und langen gleitenden Durchschnittslängen kann zu einem zu häufigen Handel oder zu fehlenden guten Gelegenheiten führen
  3. Bei starken Kursschwankungen sind Crossover-Signale möglicherweise nicht signifikant
  4. Hohe Handelskosten können die Gewinne beeinträchtigen, wenn Crossover-Signale zu häufigen Handel auslösen
  5. Eine starke Erweiterbarkeit führt auch zu Risiken einer Überoptimierung

Zur Kontrolle und Minderung dieser Risiken können folgende Methoden angewendet werden:

  1. Verwenden Sie andere Indikatoren, um Signale zu filtern und falsche Signale zu vermeiden, z. B. Preis-Volumen-Divergenzindikatoren
  2. Anpassung der gleitenden Durchschnittsparameter, um optimale Kombinationen zu finden und fehlerhaften Handel zu reduzieren
  3. Vorübergehende Einstellung der Strategie bei starken Marktschwankungen
  4. Entspannen Sie den Stop-Loss-Bereich angemessen, um unnötige Verluste zu reduzieren
  5. Durchführung von Robustheitstests für mehrere Produkte zur Bewertung von Risiken und zur Vermeidung von Überoptimierungen

Optimierungsrichtlinien

Zu den wichtigsten Richtungen für die Optimierung der Strategie gehören:

  1. Auswahl der Perioden für schnelle und langsame gleitende Durchschnitte: Standardparameter sind möglicherweise nicht optimal, verschiedene Perioden können getestet werden, um die beste Konfiguration zu finden

  2. Auswahl von gleitenden Durchschnittsarten: Mehrere Arten werden zur Verfügung gestellt und kann geprüft werden, welche für bestimmte Produkte am besten geeignet ist

  3. Kombination mit anderen Indikatoren oder Strategien: kann versucht werden, mit Volatilitätsindikatoren, Volumenpreisindikatoren oder Trendfolgestrategien zu kombinieren, um die Leistung zu verbessern

  4. Adaptive Optimierung der Parameter: ermöglicht die automatische Anpassung von gleitenden Durchschnittszeiten an Basis von Marktvolatilität und Liquidität zur Verbesserung der Stabilität

  5. KI-Modellunterstützung: Verwendung von Algorithmen für maschinelles Lernen zur Analyse großer Datenmengen und automatische Suche nach optimalen Handelsregeln

Durch diese Optimierungsmethoden ist eine weitere Verbesserung der Rentabilität und Stabilität der Strategie zu erwarten.

Zusammenfassung

Zusammenfassend ist die schnelle und langsame gleitende Durchschnitts-Crossover-Strategie eine sehr praktische Trendfolgestrategie. Sie erfasst die Preisänderungsmuster über verschiedene Zeitrahmen hinweg und verwendet den schnellen gleitenden Durchschnitts-Crossover des langsamen gleitenden Durchschnitts, um den wahrscheinlichen zukünftigen Preistrend und die Richtung zu bestimmen. Die Strategieidee ist einfach und klar, leicht zu verstehen und umzusetzen, bietet flexible anpassbare Parameter und verfügt auch über hohe Zuverlässigkeit, Automatisierungsgrad, breite Anwendbarkeit und starke Erweiterbarkeit. Natürlich bestehen Risiken für falsche Signale, die mit anderen Indikatoren kombiniert werden müssen, um maximale Wirkung zu erzielen. Mit kontinuierlichem Testen und Optimieren hat die Strategie das Potenzial, anständige stetige Gewinne im Live-Handel zu erzielen.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

fastBars = input.int(25, "Fast moving average length", minval=1)
slowBars = input.int(62, "Slow moving average length", minval=1)
strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"])

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1
    "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1
    "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1
    "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

fastMA = switch strategy
    "EMA" => ta.ema(close, fastBars)
    "SMA" => ta.sma(close, fastBars)
    "RMA" => ta.rma(close, fastBars)
    "WMA" => ta.wma(close, fastBars)
    "VWMA" => ta.vwma(close, fastBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
slowMA = switch strategy
    "EMA" => ta.ema(close, slowBars)
    "SMA" => ta.sma(close, slowBars)
    "RMA" => ta.rma(close, slowBars)
    "WMA" => ta.wma(close, slowBars)
    "VWMA" => ta.vwma(close, slowBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)

Mehr