MACD-Crossover mit Signalstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-13 16:58:15
Tags:

img

Übersicht

Die MACD Crossover with Signal Strategie erzeugt Handelssignale, wenn der MACD über oder unter die Signallinie überschreitet.

Strategieprinzip

Die Strategie berechnet zunächst die schnelle gleitende Durchschnittslinie fastMA und die langsame gleitende Durchschnittslinie slowMA. Der schnelle gleitende Durchschnittsparameter beträgt 12 Tage, und der langsame gleitende Durchschnittsparameter beträgt 26 Tage. Dann berechnet man den Unterschied zwischen den beiden gleitenden Durchschnittslinien, um den MACD zu bilden. Dann berechnet man den 9-tägigen gleitenden Durchschnitt des MACD, um die Signallinie zu erhalten. Handelssignale werden erzeugt, wenn der MACD über oder unter die Signallinie geht.

Der Vorteil der Strategie besteht darin, den Wendepunkt des mittelfristigen Kurstrends zu erfassen. Die Kombination von schnellen und langsamen gleitenden Durchschnitten filtert kurzfristige Kursschwankungen und Rauschen aus und kann mittelfristige Kurstrends erfassen. Wenn der Aktienkurs eine mittelfristige Umkehr erlebt, durchbricht der MACD die Signallinie und erzeugt relativ klare Handelssignale.

Analyse der Vorteile

Die MACD Crossover mit Signal-Strategie kombiniert die Idee von doppelten gleitenden Durchschnitten, um kurzfristige Geräusche auszufiltern und nur die Wendepunkte langfristiger und mittelfristiger Trends zu erfassen.

Der MACD selbst ist empfindlicher und kann empfindlicher auf Preistrendänderungen reagieren. Die Hinzufügung der Signallinie kann mehr kurzfristige falsche Signale herausfiltern. Erst wenn sich der mittelfristige Trend signifikant ändert, der MACD durch die Signallinie nach oben und unten bricht, wird ein Signal erzeugt.

In einem nachhaltigen Aufwärtstrend hält sich der MACD die meiste Zeit über der Signallinie, was mehrere Chancen auf dem Weg einfangen kann.

Risikoanalyse

Da die Kauf- und Verkaufssignale der Strategie vollständig auf die Überschneidung der gleitenden Durchschnitte beruhen, werden bei starken Schwankungen des Marktes mehr falsche Signale erzeugt, was zu häufigen Stop-Loss führt.

Ein Durchbruch der Signallinie garantiert nicht unbedingt, dass sich der mittelfristige Trend geändert hat.

In einem sich ständig verändernden Markt kann die Verwendung der Kreuzung von Doppel gleitenden Durchschnitten allein als Schwelle mehr Handelschancen verpassen.

Optimierungsrichtlinien

  1. Hinzufügen von Liquiditäts- und Volatilitätsfilterindikatoren zur Verringerung der Öffnungsfrequenz und zur Vermeidung ineffizienter Handelsvorgänge, z. B. Hinzufügen von Handelsvolumen, dynamischer Anpassung gleitender Durchschnittsparameter usw.

  2. Die Kombination von kurzfristigen und mittelfristigen und langfristigen Indikatoren kann die Marktstruktur umfassender beurteilen.

  3. Hinzufügen von Algorithmen für maschinelles Lernen, um Parameter und Aufmerksamkeitsschwellen zu trainieren, die für das aktuelle Marktumfeld besser geeignet sind, wodurch menschliche Interventionen reduziert werden.

  4. Kombination von VIX und anderen Angstindizes zur Vorhersage von Markttrends und Volatilität und dynamische Anpassung der Parameter, um die MACD-Möglichkeiten besser zu nutzen.

Schlussfolgerung

Die MACD-Crossover-Strategie mit Signal verwendet das Prinzip des doppelten gleitenden Durchschnitts-Crossovers, um Handelssignale zu generieren. Wenn man das Preisdiagramm anhand des Unterschieds zwischen schnellen und langsamen gleitenden Durchschnitten zeichnet, haben mittelfristige Preistrendänderungen offensichtliche Eigenschaften. Die Hinzufügung der Signallinie filtert auch einige laute Signale effektiv aus. Die Strategie hat einige Vorteile, indem sie relativ klare mittelfristige Trendumkehrungen erfasst. Allerdings kann die Überschneidung von MACD und Signallinie nicht vollständig die grundlegende Veränderung der Marktstruktur bestimmen, und Handelssignale müssen mit Vorsicht behandelt werden. Es wird empfohlen, sie in Kombination mit anderen technischen Indikatoren zu verwenden, und auch die Optimierung des maschinellen Lernens kann in Betracht gezogen werden.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="MACD with Signal", shorttitle="MACD_with_Signal")
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
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 ? timeframe.period : resCustom

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, 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 ? green : histA_IsDown ? lime : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? green : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=3)
plot(smd and outSignal ? outSignal : na, title="Signal", color=blue, style=line ,linewidth=1)
plot(sh and outHist ? outHist : na, title="", color=plot_color, style=columns, linewidth=4)
//plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
hline(0, '0 Line',  linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long)

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short)


Mehr