Trend nach einer auf einem gleitenden Durchschnitt basierenden Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-31 15:17:31
Tags:

img

Übersicht

Diese Strategie erzeugt Handelssignale, indem sie verschiedene Arten von gleitenden Durchschnitten (Simple Moving Average SMA, Exponential Moving Average EMA, Hull Moving Average HMA und Weighted Moving Average VWMA) berechnet und Kreuzungspunkte zwischen ihnen erkennt, um den Markttrend zu bestimmen und ihm zu folgen.

Strategie Logik

Die Kernidee dieser Strategie besteht darin, den Markttrend zu beurteilen, indem zwei gleitende Durchschnitte verglichen werden. Insbesondere ermöglicht es die Konfiguration von zwei MA mit verschiedenen Arten und Längen durch Eingabeparameter. Der erste MA hat einen längeren Zeitraum, um den Haupttrend darzustellen, während der zweite MA einen kürzeren Zeitraum für den aktuellen kurzfristigen Trend hat.

Wenn der kurzfristige MA den langfristigen MA von unten überschreitet, signalisiert er, dass sich der kurzfristige Trend stärkt und der Markt in einen Aufwärtstrend eintritt. Daher wird an diesem Übergangspunkt ein Kaufsignal generiert. Umgekehrt, wenn der kurzfristige MA unter den langfristigen MA überschreitet, deutet er darauf hin, dass der kurzfristige Trend schwächt und der Markt nach unten umkehrt. Entsprechend wird dann ein Verkaufssignal generiert.

Durch die Erkennung solcher MA-Kreuzungen folgt diese Strategie dem Markttrend für den Handel.

Vorteile

  • Verwendet klassische und praktische MA-Crossover-Methode, um die wichtigsten Trends zu ermitteln
  • Unterstützt Kombinationen verschiedener Zulassungsarten und bietet Flexibilität
  • Einfache und klare Logik, leicht zu verstehen und zu automatisieren
  • Konfigurierbare Parameter passen sich den unterschiedlichen Marktbedingungen an

Risikoanalyse

  • MAs haben einen Verzögerungseffekt, Signale können an oder nahe an Wendepunkten kommen, wenn die Kursbewegung bereits stattgefunden hat
  • Trendbeurteilungen können ungenau sein und zu unnötigen Verlusten führen
  • Die Ergebnisse variieren signifikant bei unterschiedlichen MA-Parameter-Einstellungen

Lösungen:

  • Verwenden Sie kürzere MA-Perioden für eine bessere Empfindlichkeit
  • Hinzufügen anderer Filter für die Querüberprüfung, um Fehler zu vermeiden
  • Methoden zur Optimierung von Parametern, z. B. Brute Force, maschinelles Lernen, genetische Algorithmen
  • Kontrollposition Größenordnung und Stop-Loss richtig

Verbesserungsrichtlinien

  • Hinzufügen anderer Indikatoren als Filter zur Verbesserung der Genauigkeit
  • Automatisierte Anpassung von MA-Parametern auf der Grundlage veränderter Marktbedingungen
  • Nutzen Sie maschinelles Lernen für die automatisierte Optimierung von Parametern
  • Verfeinerung der Stop-Loss-Strategie

Schlussfolgerung

Diese Strategie basiert auf der klassischen Idee, MA-Crossover für die Erkennung von großen Trends zu verwenden. Mit flexiblen MA-Kombinationen ist sie einfach zu implementieren und für die algorithmische Handelsautomation geeignet.


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

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)


Mehr