Eine Multiple EMA-Strategie ist eine Trend-Tracking-Strategie, die mehrere Indikatoren wie EMA, MACD, Oscillator, RSI, Stochastic und Bollinger Bands kombiniert. Die Strategie berechnet die kombinierten Signale mehrerer Indikatoren, um zu bestimmen, ob sich ein aktueller Trend im Aufwärts- oder Abwärtstrend befindet, wodurch ein Kauf- und Verkaufssignal erzeugt wird.
Die Strategie berechnet zunächst mehrere Indikatoren:
EMA: Indikatorische gleitende Durchschnittswerte für einen bestimmten Zeitraum.
MACD: Berechnung der DIF- und DEA-Linien des MACD-Indikators.
Oszillator: Berechnet die Differenz zwischen dem Schlusskurs und dem Öffnungskurs für einen bestimmten Zeitraum.
RSI: Der Index der relativen Stärke und Schwäche für einen bestimmten Zeitraum.
Stochastic: Berechnung der Werte von K und D für bestimmte Parameter.
Bollinger Bands: Bollinger-Bänder, die einen bestimmten Zyklus berechnen, die oberen, mittleren und unteren Bahnen.
Dann wird den Indikatoren unterschiedliche Werte zugeteilt, je nachdem, wie sie sich gerade befinden. So wird beispielsweise 2 zugeteilt, wenn der Stochastic kleiner als 20 ist, und -2 wenn der RSI größer als 80 ist.
Die Summe der Werte aller Indikatoren erzeugt einen kombinierten Trigger. Wenn der Trigger größer als 7 ist, erzeugt er ein Kaufsignal; wenn der Trigger kleiner als 7 ist, erzeugt er ein Verkaufsignal.
Durch die Berechnung von kombinierten Signalen aus mehreren Indikatoren kann die Richtung des aktuellen Trends genauer beurteilt werden, was zu einem zuverlässigeren Handelssignal führt.
Der größte Vorteil dieser Mehrindikator-Strategie besteht darin, dass mehrere Indikatoren zusammengefasst werden können, um umfassendere und genauere Beurteilungen zu treffen und die falschen Signale zu vermeiden, die durch einen einzelnen Indikator verursacht werden.
Die Vorteile dieser Strategie bestehen insbesondere darin, dass:
Die Verwendung von mehreren Indikatoren in Kombination ist zuverlässiger, um Trends zu beurteilen. Ein einzelner Indikator kann ein irreführendes Signal erzeugen, während mehrere Indikatoren sich gegenseitig überprüfen und Fehler reduzieren können.
Der MACD kann beispielsweise Trendstart erkennen, der RSI kann erkennen, ob ein Trend überhitzt ist usw.
Die unterschiedlichen Parameter-Einstellungen der Indikatoren ermöglichen es, die Eigenschaften verschiedener Perioden zu erfassen.
Die Gewichtung für jeden Indikator kann angepasst werden. Für wichtige Indikatoren kann ein höheres Gewicht gegeben werden.
Die Kombination von Indikatoren und die Gewichtung können anhand der Backtest-Ergebnisse optimiert werden, um bessere Strategieeffekte zu erzielen.
Obwohl die Strategie mehrere Indikatoren verwendet, um Trends zu beurteilen, bestehen folgende Risiken:
Die Kombination von mehreren Indikatoren ist unzulässig, die Vorteile der einzelnen Indikatoren werden nicht genutzt, oder es entstehen Konflikte bei der Beurteilung. Es ist notwendig, die Anwendungsumgebung für jeden Indikator zu verstehen.
Die Gewichtsverteilung ist unvernünftig und es ist nicht möglich, die Bedeutung der einzelnen Indikatoren genau zu beschreiben. Die Gewichte müssen durch wiederholte Tests optimiert werden.
Die Einstellung der Parameter für eine einzelne Periode ist möglicherweise nicht korrekt.
Feste Kennwertgewichte und -parameter können sich nicht an Veränderungen des Marktes anpassen und erfordern eine dynamische Anpassung.
Die Verzögerung des Anzeigers sollte in Kombination mit anderen technischen Methoden beurteilt werden.
Die Kombination von mehreren Indikatoren erhöht die Komplexität der Strategie, erfordert ausreichende Unterstützung durch historische Daten und ist schwieriger zu optimieren.
Die Strategie kann in folgenden Bereichen optimiert werden:
Test mehr Arten von Indikatoren, um Indikatoren zu finden, die für die aktuelle Marktumgebung empfindlicher sind.
Optimierung der Periodizität der einzelnen Indikatoren, damit sie Trends auf unterschiedlichen Ebenen erfassen können.
Optimierung der Gewichtsverteilung der einzelnen Indikatoren, um die relative Bedeutung der einzelnen Indikatoren genauer darzustellen.
Erhöhung der dynamischen Anpassungsmechanismen, Realzeit-Optimierung von Parametern und Gewichten, Anpassung an Marktveränderungen.
In Kombination mit einer Stop-Loss-Strategie, setzen Sie einen vernünftigen Stop-Loss-Punkt, um das Risiko von Verlusten zu verringern.
Mehrfache Zeitzyklus-Verifizierung, um eine übermäßige Optimierung eines einzelnen Zyklus zu vermeiden.
Mit schrittweisen Optimierungs- und Kombinationsoptimierungsmethoden wird nach der optimalen Kombination von Parametern gesucht.
Die Einführung von fortgeschrittenen Methoden wie maschinellen Lernens ermöglicht eine intelligentere Gewichtung der Kennzahlen.
Optimierung der Kauf- und Verkaufslogik der Strategie und Vermeidung von zu häufigen Transaktionen, während die Bewegung überwacht wird.
Die Multiple-Meter-EMA-Strategie nutzt die Vorteile von mehreren Indikatoren wie EMA, MACD und RSI, um die Richtung des aktuellen Markttrends zu bestimmen, um ein Handelssignal zu erzeugen. Im Vergleich zu einer einzelnen Indikator-Strategie kann die Strategie den Markt umfassender analysieren und die Erstellung von falschen Signalen reduzieren. Die Strategie kann auch durch Methoden wie Parameteroptimierung verbessert werden, damit sie sich besser an komplexe und wechselnde Marktumgebungen anpasst.
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ally17
//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)
//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)
emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")
rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")
momlen=input(10, title="Mom Len")
//CALCOLI
var trigger = 0.0
var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0
var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0
var donvar =0.0
ema = ema(close,emalen)
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD
occ = ema(close,occlen) - ema(open,occlen)
rsi = rsi(close, rsilen) // RSI
stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch
basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev
moment = mom(close, momlen) // Momentum
Obv = obv // OBV
//PLOT
//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3
rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar := (close<lower)? 2 : (close>upper)? -2 : 0
trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar
longcondition = trigger>=7
closelong = trigger<3
shortcondition = trigger<=-7
closeshort = trigger >-3
trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)
if time > start and time < end
if longcondition
strategy.entry("LONG", long=strategy.long)
if closelong
strategy.close("LONG", comment="CLOSE LONG")
if time > start and time < end
if shortcondition
strategy.entry("SHORT", long=strategy.short)
if closeshort
strategy.close("SHORT", comment="CLOSE SHORT")
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)