Strategie für einen doppelten gleitenden Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2024-01-17 17:45:45
Tags:

img

Übersicht

Diese Strategie verwendet doppelte gleitende Durchschnitte, insbesondere 8-Perioden- und 21-Perioden-Durchschnitte.

Die Strategie beinhaltet auch die Neigung der gleitenden Durchschnittslinie, um einige nicht-trendige Perioden auszufiltern und nur dann Signale zu erzeugen, wenn ein Trend deutlicher ist.

Grundsätze

Der Kern dieser Strategie liegt in der Überschneidung der kurzfristigen und langfristigen gleitenden Durchschnitte. Der kürzere MA kann Trendänderungen schneller erfassen, während der längere MA bessere Geräuschfilterungseffekte hat. Die Einrichtung eines Aufwärtstrends wird vorgeschlagen, wenn der kürzere MA den längeren MA überschreitet, was zu einem langen Signal führt; die Einrichtung eines Abwärtstrends wird vorgeschlagen, wenn der kürzere MA unter dem längeren MA überschreitet, was zu einem kurzen Signal führt.

Die Strategie legt auch eine Steigungsschwelle fest. Nur wenn die Steigung größer als der positive Schwellenwert ist, wird ein langes Signal erzeugt. Nur wenn die Steigung kleiner als der negative Schwellenwert ist, wird ein kurzes Signal erzeugt. Dies hilft, Zonen auszufiltern, in denen kein ausgeprägter Trend besteht, was zu qualitativ hochwertigeren Handelssignalen führt.

Insbesondere ist die Logik für die Erzeugung von Handelssignalen folgende:

  1. Berechnen Sie die einfachen gleitenden Durchschnitte für 8 und 21 Perioden
  2. Erkennung von Crossover-Signalen zwischen den beiden
  3. Berechnen Sie die Steigung der gleitenden Durchschnittslinie mit 21 Perioden unter Verwendung der Arctangentfunktion atan
  4. Nur lange Signale erzeugen, wenn die Steigung einen vorgegebenen positiven Schwellenwert übersteigt
  5. Nur kurze Signale erzeugen, wenn die Steigung unter einen vorgegebenen negativen Schwellenwert fällt

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Strategieidee ist einfach und leicht zu verstehen/umzusetzen
  2. Die Einbeziehung des Neigungsindex hilft, nicht-trendige Perioden auszufiltern und die Signalqualität zu verbessern
  3. Durch die Verwendung doppelter gleitender Durchschnitte können beide ihre Stärken nutzen und die Robustheit verbessern
  4. Die Parameter können an verschiedene Handelsinstrumente angepasst werden
  5. Eine einfache Programmdurchführung erleichtert eine weitere Optimierung

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Bei starken Marktschwankungen können mehr falsche Signale auftreten
  2. Crossover selbst neigt dazu, einige falsche Signale zu erzeugen
  3. Es gibt ein gewisses Maß an Verzögerung, unfähig, sofort Trendumkehrungen zu erfassen

Einige Optimierungsmöglichkeiten basierend auf diesen Risiken:

  1. Anpassung der MA-Parameter an die Merkmale des Marktes
  2. Optimierung der Steigungsschwelle zur Verbesserung der Robustheit
  3. Hinzufügen von Stop-Loss-Mechanismen zur Kontrolle einzelner Verluste
  4. Einbeziehung anderer Indikatoren zum Filtern von Signalen
  5. Anpassbare Parameter Einstellung zur Verbesserung der Robustheit verwenden

Optimierungsrichtlinien

Einige Richtungen zur Optimierung der Strategie:

  1. Anpassungsfähige MAs verwenden, die Parameter anhand der Volatilität anpassen
  2. Einbeziehung einer Volumenanalyse zur Vermeidung von Fehlern bei der Konsolidierung
  3. Hinzufügen eines Volatilitätsindex zur Verbesserung der Qualität und Aktualität
  4. Hinzufügen von maschinellem Lernen für die automatische Optimierung von Parametern
  5. Nutzen Sie Deep Learning, um komplexere nichtlineare Muster aufzudecken

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass diese Dual-MA-Strategie einfach und praktisch ist. Sie erfasst verschiedene Trendmerkmale durch die beiden Periodenparameter und kombiniert sie, um Handelssignale zu erzeugen.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)

ma1= sma(close,8)
ma2= sma(close,21)

angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)

i_lookback   = input(2,     "Angle Period", input.integer, minval = 1)
i_atrPeriod  = input(10,    "ATR Period",   input.integer, minval = 1)
i_angleLevel = input(6,     "Angle Level",  input.integer, minval = 1)
i_maSource   = input(close, "MA Source",    input.source)

f_angle(_src, _lookback, _atrPeriod) =>
    rad2degree = 180 / 3.141592653589793238462643  //pi 
    ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
    ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)

plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)

crosso=crossover(ma1,ma2) 
crossu=crossunder(ma1,ma2)

_lookback = 15

f_somethingHappened(_cond, _lookback) =>
    bool _crossed = false
    for i = 1 to _lookback
        if _cond[i]
            _crossed := true
    _crossed
    
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)

long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)


if(long)
    strategy.entry("Long",strategy.long)
if(short)
    strategy.entry("short",strategy.short)
    


Mehr