Strategie für die Verlagerung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-11-23 13:38:02
Tags:

img

Übersicht

Die Moving Average Crossover Strategie ist eine Handelsstrategie, die auf gleitenden Durchschnitten basiert. Sie verwendet das Crossover eines schnellen gleitenden Durchschnitts und eines langsamen gleitenden Durchschnitts als Kauf- und Verkaufssignale. Wenn der schnelle MA über den langsamen MA von unten kreuzt, wird ein Kaufsignal generiert. Wenn der schnelle MA unter den langsamen MA von oben kreuzt, wird ein Verkaufssignal generiert.

Strategie Logik

Die Strategie verwendet die Funktion sma, um einfache gleitende Durchschnitte eines bestimmten Zeitraums wie den schnellen MA und den langsamen MA zu berechnen.

Wenn der schnelle MA über den langsamen MA von unten kreuzt, erkennt die Crossunder-Funktion das Crossover-Signal und erzeugt ein Kaufsignal.

Die Strategie realisiert automatisierten Handel durch Track-Signale und Exit-Signale. Long-Entry wird ausgelöst, wenn der schnelle MA über den langsamen MA überschreitet, und Short-Entry ausgelöst, wenn der schnelle MA unter dem langsamen MA überschreitet. Die entsprechenden Exit-Signale werden auch bei umgekehrten Crossovers generiert.

Analyse der Vorteile

  • Gleitende Durchschnitte können Trends effektiv verfolgen und die Kursdynamik erfassen
  • Die MA-Strategien sind einfach und unkompliziert, leicht zu verstehen und umzusetzen
  • Parameter können optimiert werden, um sich an verschiedene Marktumgebungen anzupassen
  • Die Strategie automatisiert den Handel ohne manuelles Eingreifen und senkt die Handelskosten

Risiken und Lösungen

  • Preisschwankungen können mehrere falsche Signale und eine hohe Handelsfrequenz verursachen.
  • Die Optimierung von Parametern ist entscheidend und kann die Leistung erheblich beeinflussen.
  • Es besteht die Gefahr, dass keine Signale vorliegen, und andere Indikatoren können kombiniert werden, um Handelssignale zu filtern oder zu ergänzen.
  • Stop-Loss kann Einzelhandelsverluste kontrollieren.

Optimierungsrichtlinien

  • Adaptive gleitende Durchschnitte können zur dynamischen Anpassung der MA-Parameter zur besseren Verfolgung verwendet werden.
  • Zusätzliche Filter wie Handelsvolumen können falsche Signale vermeiden, wenn der Trend unklar ist.
  • Die Kombination anderer Indikatoren wie Bollinger Bands als Filter oder zusätzliche Bedingungen kann die Strategieleistung verbessern.
  • Die Stop-Loss-Strategie kontrolliert Einzelhandelsverluste innerhalb akzeptabler Niveaus.

Schlussfolgerung

Die MA-Crossover-Strategie ist eine klassische und einfache Trendfolgestrategie. Sie verwendet hauptsächlich MA-Crossovers als Handelssignale mit einfacher Logik und Implementierung. Sie kann durch Parameter-Tuning angepasst werden. Aber sie hat auch Nachteile wie Anfälligkeit für Schwankungen und Trendumkehrungen, hohe Signalfrequenz usw. Diese können durch Filter, dynamische Parameter, Stop-Loss usw. verbessert werden.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Mehr