Kombination von dynamisch beweglichen EMAs

Schriftsteller:ChaoZhang, Datum: 2024-01-22 12:34:33
Tags:

img

Übersicht

Diese Strategie ist eine dynamische gleitende Durchschnittskombinationsstrategie, die auf mehreren Zeitrahmen arbeitet. Sie verwendet exponentielle gleitende Durchschnitte (EMA) unterschiedlicher Länge für das Trendbeurteilen und Ein-/Ausgangssignale.

Strategie Logik

Die Strategie verwendet 7 EMAs, die sich mit unterschiedlichen Geschwindigkeiten bewegen, von der schnellsten bis zur langsamsten: 3-Perioden-EMA, 15-Perioden-EMA, 19-Perioden-EMA, 50-Perioden-EMA, 100-Perioden-EMA, 150-Perioden-EMA und 200-Perioden-EMA. Diese 7 EMAs sind in einer trapezförmigen Formation angeordnet. Um lange und kurze Signale zu erzeugen, muss der Schlusskurs diese EMAs sukzessiv durchbrechen, um einen starken Trendbeitrag nach der Umkehr zu gewährleisten.

Darüber hinaus beinhaltet die Strategie auch den Preisbruch der jüngsten Höchstwerte und den Preisbruch der nahen historischen Höchstwerte, um lange Signale zu bestätigen, und verwendet den Preisbruch der jüngsten niedrigen und nahen historischen Tiefs, um kurze Signale zu bestätigen. Dies hilft, falsche Ausbrüche zu vermeiden.

Die Ausstiegsregeln verlangen, dass der Schlusskurs die schnelleren EMAs sukzessive in Richtung der langsameren EMAs durchbricht, was auf eine Trendumkehr hinweist.

Analyse der Vorteile

  • Die Verwendung von 7 EMAs mit unterschiedlichen Geschwindigkeiten, die eine Trapezform bilden, kann Trendumkehrpunkte genauer erkennen
  • Die Einbeziehung neuer Höchst-/Tief- und historischer Höchst-/Tiefwerte verhindert falsche Ausbruchssignale
  • Die strikten Doppel-Exit-Regeln ermöglichen einen zeitnahen Stop-Loss

Risikoanalyse

  • Kein Stop-Loss-Mechanismus führt zu enormen Verlustpotentialen
  • Die Doppel-Austrittsregeln können zu einem vorzeitigen Ausstieg führen
  • Zu viele schnelle EMAs verursachen mehr Lärm und erhöhen die Handelsfrequenz und die Provisionskosten

Lösungen:

  1. Hinzufügen von festen Prozentsatz Stop-Loss und Trailing Stop-Loss
  2. Anpassung der EMA-Längen für den Ausgang, um die Strenge der Doppel-Ausgangsregeln zu senken
  3. Erhöhung der EMA-Längen zur Verringerung der Handelshäufigkeit

Optimierungsrichtlinien

  • Hinzufügen von Stop-Loss-Mechanismen wie fester Prozentsatz Stop-Loss, Trailing Stop-Loss usw.
  • Optimieren Sie die EMA-Parameter, um die beste Kombination zu finden
  • Hinzufügen anderer Indikatoren wie MACD, ATR, KDJ usw. zum Filtern von Signalen
  • Kombinieren Sie diese mit den Strategien für den Bereich/Kanal, um sekundäre Trends zu erfassen
  • Erwägen Sie die Hinzufügung von Positionsgrößenregeln

Schlussfolgerung

Die Strategie hat eine klare Logik der Verwendung von 7 EMAs unterschiedlicher Geschwindigkeiten zur Bestimmung von Trends und doppelten Ausstiegsregeln zur Erkennung von Umkehrungen. Aber es gibt keinen Stop-Loss-Mechanismus, der zu einem großen Verlustrisiko führt, und es kann vorzeitig aussteigen. Verbesserungen können in Aspekten wie Hinzufügen von Stop-Loss, Parameter-Tuning, Indikatorfilterung vorgenommen werden, um es in ein solides Handelssystem zu verwandeln.


/*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) 






 


Mehr