Diese Strategie verwendet die Kreuzung der Steigungen von zwei EMAs mit unterschiedlicher Länge, um einen Trend nach Signalen zu erzeugen.
Die Voraussetzungen für den Markteintritt der Strategie sind:
Wenn sich die einfachen Steigungen in entgegengesetzter Richtung kreuzen, schließt er die Position.
Die Strategie funktioniert am besten bei Bitcoin und den liquiden und kapitalisiertesten Altcoins, funktioniert aber auch bei volatilen Vermögenswerten, insbesondere wenn sie oft in den Trend treten. Funktioniert am besten im 4-Stunden-Zeitrahmen.
Es gibt auch einen optionalen Volatilitätsfilter, der die Position nur öffnet, wenn die Differenz zwischen den beiden Steigungen mehr als einen bestimmten Wert beträgt.
Genießen Sie es!
Der Kern dieser Strategie besteht darin, die Neigungen von zwei EMA mit unterschiedlichen Längen zu vergleichen.
Zuerst werden EMAs mit Längen von 130 und 400 berechnet, dann werden die Steigungen von jedem berechnet, dann werden EMAs mit Länge 3 für jeden Steigungsgrad berechnet, um glatte Steigungskurven zu erhalten.
Wenn die schnelle EMA-Spannung über die langsame EMA-Spannung kreuzt, wird ein Kaufsignal erzeugt.
Um Lärm zu filtern, kann ein 200-Perioden-EMA als Trendfilter verwendet werden, wobei nur lange Signale berücksichtigt werden, wenn der Preis über der EMA liegt, und nur kurze Signale, wenn er darunter liegt.
Darüber hinaus kann ein Volatilitätsfilter verwendet werden, der nur dann Signale erzeugt, wenn der Unterschied zwischen den beiden Steigungen größer als ein Schwellenwert ist, um Fälle zu vermeiden, in denen sich die Steigungen kreuzen, aber die Volatilität unzureichend ist.
Wenn sich die schnellen und langsamen Steigungen umgekehrt kreuzen, werden Positionen geschlossen, um Gewinne/Verluste zu stoppen.
Die Verwendung von Steigungskreuzungen zur Erzeugung von Signalen kann Trends effektiv verfolgen
Anpassung von EMA-Periodenkombinationen an unterschiedliche Marktbedingungen
Der Trendfilter vermeidet, durch unbeständige Kursbewegungen irregeführt zu werden
Der Volatilitätsfilter filtert falsche Signale aus.
Einfache und klare Logik, leicht zu verstehen und umzusetzen
Kann in mehreren Zeitrahmen verwendet werden
Häufige Öffnungen und Schließungen können in großen Märkten auftreten
Unangemessene EMA-Perioden könnten Trendwendepunkte verpassen
Die Parameter sollten an die sich ändernden Marktbedingungen angepasst werden
Wie bei MA-Systemen können sich große Trends bei Extremen umkehren
Versuchen Sie verschiedene Kombinationen von EMA-Perioden, um optimale Parameter zu finden
Auswahl der Parameter nach den Merkmalen des Vermögenswerts und den Marktbedingungen
Erwägen Sie die Einführung von Stop-Loss-Strategien zur Risikokontrolle
Dynamische Anpassung von EMA-Perioden
Verschiedene Schwellungsschwellenwerte testen
Testwirksamkeit in Zeitrahmen
Die Strategie verfügt über eine klare, leicht verständliche Logik, die EMA-Spannungskreuzungen verwendet, um Signale zu generieren und Trends effektiv zu verfolgen. Die Trend- und Volatilitätsfilter reduzieren laute Trades. Das Tuning von EMA-Periodenkombinationen passt sie an unterschiedliche Marktbedingungen an. Insgesamt eine einfache und praktische Trend-Nachstrategie, die es wert ist, im Live-Handel getestet und optimiert zu werden.
/*backtest start: 2023-10-09 00:00:00 end: 2023-10-16 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy(title="Slopes",initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.06, slippage = 2, default_qty_value=30, overlay=false) //definizione input start = timestamp(input(2018, "start year"), input(1, "start month"), input(1, "start day"), 00, 00) end = timestamp(input(2020, "end year"), input(1, "end month"), input(1, "end day"), 00, 00) average = input (title="Source MA Type", type=input.string, defval="EMA",options=["EMA","SMA"]) len1=input(130,title="Fast MA Length") len2=input(400,title="Slow MA Length") smoothingavg = input (title="Smoothing MAs Type", type=input.string, defval="EMA",options=["EMA","SMA"]) smoothingavglen = input (3,title="Smoothing MAs Length") trendfilter=input(true,title="Trend Filter") trendfilterperiod=input(200,title="Trend Filter MA Period") trendfiltertype=input (title="Trend Filter MA Type", type=input.string, defval="EMA",options=["EMA","SMA"]) volatilityfilter=input(false,title="Volatility Filter") volatilitydelta=input(0.0003,step=0.0001,title="Delta Slopes EMA") //variabili m1 = if average == "EMA" ema(close,len1) else sma(close,len1) m2=if average == "EMA" ema(close,len2) else sma(close,len2) slp1=(m1-m1[1])/m1 slp2=(m2-m2[1])/m2 e1=if smoothingavg == "EMA" ema(slp1,smoothingavglen) else sma(slp1,smoothingavglen) e2=if smoothingavg == "EMA" ema(slp2,smoothingavglen) else sma(slp2,smoothingavglen) plot(e1,color=color.yellow) plot(e2,color=color.red) //plot (abs(e1-e2),color=color.white) //plot (ema(e1-e2,9),color=color.yellow) //variabili accessorie e condizioni TrendConditionL=if trendfiltertype =="EMA" close>ema(close,trendfilterperiod) else close>sma(close,trendfilterperiod) TrendConditionS=if trendfiltertype =="EMA" close<ema(close,trendfilterperiod) else close<sma(close,trendfilterperiod) VolatilityCondition = abs(e1-e2) > volatilitydelta ConditionEntryL= if trendfilter == true if volatilityfilter == true e1>e2 and TrendConditionL and VolatilityCondition else e1>e2 and TrendConditionL else if volatilityfilter == true e1>e2 and VolatilityCondition else e1>e2 ConditionEntryS= if trendfilter == true if volatilityfilter == true e1<e2 and TrendConditionS and VolatilityCondition else e1<e2 and TrendConditionS else if volatilityfilter == true e1<e2 and VolatilityCondition else e1<e2 ConditionExitL=crossunder(e1,e2) ConditionExitS=crossover(e1,e2) if true if ConditionExitS if strategy.position_size < 0 strategy.close("SLPShort") if true if ConditionExitL if strategy.position_size > 0 strategy.close("SLPLong") if true if ConditionEntryL strategy.entry ("SLPLong",long=true) if true if ConditionEntryS strategy.entry("SLPShort",long=false)