Dynamisch bewegliche EMAS-Kombination Quantitative Strategie


Erstellungsdatum: 2024-01-22 12:34:33 zuletzt geändert: 2024-01-22 12:34:33
Kopie: 1 Klicks: 536
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamisch bewegliche EMAS-Kombination Quantitative Strategie

Überblick

Die Strategie ist eine dynamische Moving Average-Kombinationsstrategie mit mehreren Zeiträumen. Sie verwendet Indicator Moving Averages (EMA) unterschiedlicher Länge, um Trends zu beurteilen und Ein- und Ausgänge zu erzielen. Der Name der Strategie, die MAX-Reihe, zeigt an, dass mehrere EMAs verwendet werden, und die Dynamische Reihe zeigt an, dass die EMA-Längen angepasst werden können.

Strategieprinzip

Die Strategie verwendet sieben EMAs mit verschiedenen Geschwindigkeiten, von der schnellsten bis zur langsamsten: 3 EMAs mit 15 Zyklen, 19 Zyklen, 50 Zyklen, 100 Zyklen, 150 Zyklen und 200 Zyklen. Die sieben EMAs bilden eine Abfolge, in der der Schlusskurs die sieben EMAs in Folge durchbrechen muss, um ein Signal für eine Long- und eine Short-Position zu ermitteln.

Darüber hinaus kombiniert die Strategie die beiden Bedingungen für die Bestätigung von Long-Position-Signalen mit einem Innovationshoch und einem historischen Breakout-Hoch bei der Schließung, und verwendet Innovations-Low und einen historischen Breakout-Low bei der Schließung, um ein Short-Signal zu bestätigen, um einen Falschbruch zu vermeiden.

Die Bilanzbedingungen erfordern, dass der Schlusskurs von einem schnellen EMA in eine langsame EMA wechselt, was eine Trendwende bedeutet; oder dass der niedrigste oder höchste Preis der neuesten K-Linie 4 EMAs durchbricht, was darauf hindeutet, dass der Handel sofort platziert werden sollte.

Analyse der Stärken

  • Mit sieben EMAs mit unterschiedlichen Geschwindigkeiten, die eine Abfahrt bilden, kann ein Trendwendepunkt besser beurteilt werden
  • Kombination von innovativen Höhen und historischen Höhen, um eine hohe Position zu beurteilen, und innovative Tiefen und historische Tiefen, um eine kurze Position zu beurteilen, um falsche Durchbrüche zu vermeiden
  • Doppel-Platz-Bedingungen sind strenger festgelegt und ermöglichen eine zeitnahe Stop-Loss.

Risikoanalyse

  • Keine Stop-Loss-Einstellung, ein hohes Risiko für Verluste
  • Doppelte Ausgleichsbedingungen könnten zu einem vorzeitigen Ausstieg führen
  • Kurzzeit-EMA sind anfällig für mehr Lärm, erhöhte Handelsfrequenzen und Gebühren

Die Lösung:

  1. Setzen Sie Stand- und Bewegungsstopp
  2. Anpassung der EMA-Längen zur Verringerung der Doppel-Plating-Bedingungen
  3. Erhöhung der EMA-Länge und Verringerung der Handelsfrequenz

Optimierungsrichtung

  • Erhöhung der Stop-Loss-Strategie, wie z. B. Stop-Loss mit festen Prozentsätzen oder Stop-Loss mit beweglichen Schritten
  • Anpassung der EMA-Parameter auf die optimale Kombination
  • Hinzufügen von Filtern für andere Indikatoren wie MACD, ATR, KDJ usw., um die Signalqualität zu verbessern
  • In Kombination mit einer Bandbreite-Strategie, um Sub-Schwankungen in Trends zu erfassen
  • Erwägen Sie ein Modul für die Vermögensverwaltung

Zusammenfassen

Die Strategie hat eine klare Gesamtkonzeption, die die Trends mit 7 verschiedenen Geschwindigkeiten EMAs beurteilt und eine Doppel-Bliss-Bedingung enthält, die für die Trendwende empfindlicher ist. Die Strategie selbst hat jedoch keine Stop-Loss-Einstellung, besteht ein erhebliches Verlustrisiko und ist außerdem anfällig für vorzeitige Ausstiegsprobleme. In Zukunft müssen die Strategien in mehreren Dimensionen wie Stop-Loss, Parameteroptimierung und Indexfilter verbessert werden, um ein stabiles und zuverlässiges quantitatives Handelssystem zu werden.

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

//@version=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true  )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)

xPrice = input(close)

xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)

// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



long = close >  xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3  and xEMA3 > xEMA4  and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6  and xEMA6> xEMA66  and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3  and xEMA3 < xEMA4  and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and  xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond

notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)


exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)

strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2)