
Die Strategie nutzt die Schräglage der Kreuzung zweier unterschiedlicher Länge Indices Moving Averages (EMA) zur Erzeugung eines Trend-Tracking-Signals. Die Kombination der beiden Parameter funktioniert sehr gut, wenn die EMA der Standardlänge 130 und 400 verwendet wird.
Wenn die schnelle EMA-Schrägseite die langsame EMA-Schrägseite überschreitet und der Preis höher als 200-Zyklen-EMA ist, machen Sie einen Plus; wenn die schnelle EMA-Schrägseite die langsame EMA-Schrägseite unterschreitet und der Preis niedriger als 200-Zyklen-EMA ist, machen Sie einen Minus.
Gleiche Position bei Kreuzung in der entgegengesetzten Richtung der Neigung.
Diese Strategie funktioniert am besten bei Bitcoin und den stark liquiden Altcoins mit hoher Marktkapitalisierung, aber auch bei sehr volatilen Vermögenswerten, insbesondere wenn sie häufig in Trends sind.
Das ist die beste Zeit für einen 4-Stunden-Rahmen.
Es ist auch mit einem optionalen Fluktuationsfilter ausgestattet, der nur dann eingeht, wenn die Differenz zwischen den beiden Verläufen größer als ein bestimmter Tiefpunkt ist, um zu vermeiden, dass bei einer horizontalen Preisschwankung der Lärm viel größer als das Signal ist.
Die Wirkung ist erstaunlich, genießen Sie!
Im Mittelpunkt der Strategie steht die Schräglage zweier EMAs unterschiedlicher Länge.
Zuerst berechnen wir die EMA mit der Länge 130 und 400, dann berechnen wir die Schräglage der beiden EMAs, dann berechnen wir die EMA mit der Länge 3 der beiden EMAs und erhalten die geschliffene Schräglage.
Ein Kaufsignal wird erzeugt, wenn die Schnelllinie über der EMA-Schräglage durch die Langlinie EMA-Schräglage geht. Ein Verkaufsignal wird erzeugt, wenn die Schnelllinie unter der EMA-Schräglage durch die Langlinie EMA-Schräglage geht.
Um die Schwankungen zu filtern, kann ein EMA mit 200 Zyklen als Trendfilter gewählt werden. Nur wenn der Preis über dieser EMA liegt, wird ein Mehrsignal berücksichtigt, und wenn er unter dieser liegt, wird ein Leersignal berücksichtigt.
Zusätzlich kann mit einem Schwankungsratefilter ausgerichtet werden, der nur dann ein Signal erzeugt, wenn die Differenz zwischen den beiden Schwankungen größer ist als der voreingestellte Schwankungswert, um Schwankungsüberschneidungen mit unzureichender Schwankung zu filtern.
Wenn die Schräglage sich umgekehrt kreuzt, werden die Positionen ausgeglichen und die Verluste gestoppt.
Die Verwendung von Schrägkreuzungen erzeugt Signale, um Trends effektiv zu verfolgen
Anpassung der EMA-Zyklusparameterkombination an unterschiedliche Marktbedingungen
Trendfilter verhindern, dass Sie von Schwankungen getäuscht werden
Fluktuationsratefilter filtern falsche Signale aus
Die Regeln sind einfach, klar und verständlich.
Kann in mehreren Zeitrahmen verwendet werden
Bei starken Erschütterungen kann es zu häufigen Öffnungen und Schließungen kommen.
Unangemessene EMA-Zyklusparameter können einen Trendwendepunkt verpassen
Die Parameterkombination muss an die veränderten Marktbedingungen angepasst werden.
Ähnlich wie bei MA-Systemen können Verluste am Ende eines großen Trends umgekehrt werden.
Versuchen Sie, verschiedene EMA-Perioden-Kombinationsparameter auszuprobieren, um die besten Parameter zu finden
Parameter für die Auswahl der verschiedenen Währungen aufgrund ihrer Eigenschaften und Marktbedingungen
Risikokontrollen können in die Stop-Loss-Strategie aufgenommen werden.
Dynamische Anpassung der EMA-Zyklusparameter kann berücksichtigt werden
Versuchen Sie mit verschiedenen Parametern für die Schwelle der Schwankungen
Wirksamkeit in verschiedenen Zeitrahmen getestet
Die Gesamtkonzeption der Strategie ist klar und verständlich, und die Verwendung von EMA-Schrägkreuzungen erzeugt Signale, die Trends effektiv verfolgen können. Die Kombination von Trendfiltern und Schwankungsratenfiltern reduziert den Noise-Handel. Durch die Anpassung der EMA-Zyklusparameterkombination kann die Strategie an verschiedene Marktumgebungen angepasst 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)