Diese Strategie kombiniert gleitende Durchschnitte und den MACD-Indikator, um Trends zu bestimmen und Handelssignale zu generieren. Sie gehört zu einer typischen Trendfolgestrategie. Sie verwendet zwei ZLSMA-gleitende Durchschnitte unterschiedlicher Zeitrahmen, um die Trendrichtung zu bestimmen, und einen MACD-Crossover, um spezifische Kauf- und Verkaufssignale zu generieren. Dies ermöglicht es, mittelfristige und langfristige Trends effektiv zu erfassen und gleichzeitig zu vermeiden, von kurzfristigen Marktlärmen irregeführt zu werden.
Die Strategie besteht aus folgenden Hauptbestandteilen:
Schnelle ZLSMA und langsame ZLSMA: Der Vergleich von ZLSMA gleitenden Durchschnitten verschiedener Zeitrahmen bestimmt die allgemeine Trendrichtung. Die schnelle Linie besteht aus 32-Perioden-ZLSMA und die langsame Linie besteht aus 400-Perioden-ZLSMA. Wenn die schnelle Linie über die langsame Linie überschreitet, ist dies ein bullisches Signal und umgekehrt.
MACD-Indikator: Der MACD wird berechnet, indem die langsame Linie (26-Perioden-EMA) von der schnellen Linie (12-Perioden-EMA) subtrahiert wird. Die Signallinie ist eine 9-Perioden-EMA des MACD. Wenn der MACD über die Signallinie geht, ist es ein Kaufsignal, und wenn der MACD unter die Signallinie geht, ist es ein Verkaufssignal.
Handelssignale: Kauf- und Verkaufssignale werden nur generiert, wenn die Trendrichtung des ZLSMA mit den MACD-Crossover-Signalen übereinstimmt. Insbesondere gehen Sie lang, wenn der Bullentrend mit dem MACD-Goldkreuz zusammenfällt, und kurz, wenn der Bärentrend mit dem MACD-Todkreuz zusammenfällt.
Stop-Loss und Take-Profit: Die Strategie beinhaltet derzeit keine Stop-Loss- und Take-Profit-Logik, die weiter optimiert werden muss.
Die Kombination von gleitenden Durchschnitten zur Ermittlung des Haupttrends und MACD zum Zeitpunkt des Eintrags kann falsche Ausbrüche effektiv filtern und verhindern, dass man durch kurzfristige Marktlärm irregeführt wird.
Die wichtigsten Vorteile dieser Strategie sind:
Trends erfassen: Die Verwendung gleitender Durchschnitte für verschiedene Zeitrahmen zur Bestimmung der Trendrichtung ermöglicht es, mit dem Trend zu handeln und mittelfristige bis langfristige Trends effektiv zu erfassen.
Filtern von Lärm: Die Anwendung des MACD-Indikators hilft, kurzfristige Marktgeräusche zu filtern und zu vermeiden, dass Sie von kleinen Märkten in die Irre geführt werden.
Anpassungsfähige Parameter: Die gleitenden Durchschnittsperioden und die MACD-Parameter sind anpassungsfähig und können für verschiedene Märkte optimiert werden.
Einfach umzusetzen: Alle verwendeten Indikatoren sind gemeinsame technische Indikatoren.
Kontrollierbares Risiko: Mit einem klaren Stop-Loss und Take-Profit können das Risiko und der Gewinn jedes Handels kontrolliert werden.
Die wichtigsten Risiken dieser Strategie sind:
Falsche Trendbestimmung: Wenn der Haupttrend falsch bestimmt wird, können alle Trades zu Verlusten führen.
Unzulässige Parameteroptimierung: Der gleitende Durchschnitt und die MACD-Parameter müssen gründlich getestet und optimiert werden, sonst können die Ergebnisse unbefriedigend sein.
Fehlen eines Stop-Loss: Derzeit ist kein Stop-Loss vorhanden, was das Risiko von übergroßen Verlusten darstellt.
Begrenztes Gewinnpotenzial: Als Trendstrategie ist das Gewinnpotenzial jedes Handels begrenzt und erfordert ein hohes Volumen, um die Rentabilität zu steigern.
Hohe Handelsfrequenz: Eine unsachgemäße Einstellung der Parameter kann zu einer übermäßigen Handelsfrequenz, zu erhöhten Transaktionskosten und zu Verschiebungen führen.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Hinzufügen eines Stop-Loss-Mechanismus: Festlegen Sie geeignete Stop-Loss-Punkte, um den maximalen Verlust pro Handel streng zu kontrollieren.
Optimieren von Parametern: Backtest und Optimierung, um die optimale Kombination aus gleitendem Durchschnitt und MACD-Parametern zu finden.
Niedrigere Handelsfrequenz: Anpassung der Parameter, um sicherzustellen, dass Handelssignale nur dann generiert werden, wenn der Trend ausgeprägt ist.
Einbeziehung anderer Faktoren: Faktoren wie Volumenänderungen können hinzugefügt werden, um Trends und Signale zu bestätigen.
Verbessern Sie den Eintrittszeitplan: Verbessern Sie die MACD-Nutzung weiter, um die Genauigkeit des Eintrags zu erhöhen.
Allgemeine Anwendbarkeit: Optimieren von Parametern, um die Strategie für verschiedene Produkte allgemein anwendbar zu machen und die Anwendbarkeit zu erweitern.
Diese Strategie erfasst mittelfristige bis langfristige Trends durch eine einfache, aber effektive Kombination von gleitenden Durchschnitten und MACD, was sie zu einer soliden quantitativen Handelsstrategie macht.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-10 05:00:00 period: 1m basePeriod: 1m 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/ // © veryfid //@version=5 strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false) source = close useCurrentRes = input(true, title="Use Current Chart Resolution?") smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below") sd = input(true, title="Show Dots When MacD Crosses Signal Line?") sh = input(true, title="Show Histogram?") macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?") hist_colorChange = input(true,title="MacD Histogram 4 Colors?") //res = useCurrentRes ? period : resCustom fastLength = input(12), slowLength=input(26) signalLength=input(9) fastMA = ta.ema(source, fastLength) slowMA = ta.ema(source, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) hist = macd - signal outMacD = macd outSignal = signal outHist = hist histA_IsUp = outHist > outHist[1] and outHist > 0 histA_IsDown = outHist < outHist[1] and outHist > 0 histB_IsDown = outHist < outHist[1] and outHist <= 0 histB_IsUp = outHist > outHist[1] and outHist <= 0 //MacD Color Definitions macd_IsAbove = outMacD >= outSignal macd_IsBelow = outMacD < outSignal //plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red //signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime circleYPosition = outSignal //plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4) //plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2) //plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4) plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color) hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white) // Paramètres de la ZLSMA length = input(32, title="Longueur") offset = input(0, title="Décalage") src = input(close, title="Source") lsma = ta.linreg(src, length, offset) lsma2 = ta.linreg(lsma, length, offset) eq = lsma - lsma2 zlsma = lsma + eq length_slow = input(400, title="Longueur") offset_slow = input(0, title="Décalage") lsma_slow = ta.linreg(src, length_slow, offset_slow) lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow) eq_slow = lsma_slow - lsma2_slow zlsma_slow = lsma_slow + eq_slow // Paramètres de la sensibilité sensitivity = input(0.5, title="Sensibilité") // Règles de trading longCondition = zlsma < zlsma_slow and zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut shortCondition = zlsma > zlsma_slow and zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas // Entrée en position strategy.entry("Achat", strategy.long, when=longCondition) strategy.entry("Vente", strategy.short, when=shortCondition) botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0 plot(botifySignalZLSMA, title='Botify_signal', display=display.none) // Sortie de position strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position // Tracé de la courbe ZLSMA plot(zlsma, color=color.yellow, linewidth=3) plot(zlsma_slow, color=color.red, linewidth=3)