Multi-Timeframe-Handelsstrategie auf Basis des MACD

Schriftsteller:ChaoZhang, Datum: 2024-01-12 11:46:59
Tags:

img

Übersicht: Diese Strategie verwendet den MACD-Indikator, um Handelssignale über mehrere Zeitrahmen hinweg zu generieren, um Trends zu verfolgen.

Strategieprinzip: Die Strategie verwendet die Kreuzungen zwischen der MACD-Differenzlinie und der Signallinie, um die Trendrichtung zu bestimmen. Insbesondere berechnet sie die MACD-Differenz und die Signallinien in höheren Zeitrahmen (Standard 60min). Wenn die Differenzlinie über die Signallinie kreuzt, wird ein Kaufsignal generiert. Wenn sie darunter kreuzt, wird ein Verkaufssignal generiert, um die allgemeine Trendrichtung zu bestätigen.

Die Strategie berechnet dann den MACD in niedrigeren Zeitrahmen (aktueller Zeitraum) und tritt in Positionen ein, wenn Crossovers zwischen der Differenz und den Signallinien auftreten.

Die Strategie verwendet auch die Farbänderung des MACD-Histogramms, um den Trend zu beurteilen. Grüne Balken zeigen einen Aufwärtstrend an, während rote Balken einen Abwärtstrend anzeigen.

Vorteilsanalyse:

  1. Das Multi-Timeframe-Design bestätigt den Trend zu höherem TF und findet Einträge in niedrigerem TF, wodurch die Systemfähigkeit verbessert wird.

  2. Verwendet MACD-Crossovers, um Ein- und Ausgänge zu bestimmen, Parameter, die für zuverlässige Signale optimiert sind.

  3. Die Farbe des Histogramms hilft bei der Bestimmung des aktuellen Trendstatus und verbessert die Entscheidungsgenauigkeit.

  4. Automatisch verfolgt Trends, reduziert emotionale Fehler.

Risikoanalyse:

  1. Als Trendindikator für mittelfristige und langfristige Trends kann der MACD kurzfristig falsche Signale erzeugen, die zu unnötigen Verlusten führen.

  2. Multi-Zeitrahmen-Strategien sind schwieriger zu optimieren und zu testen, da mehrere Zeiträume gleichzeitig berücksichtigt werden müssen.

  3. Es ist kein Stop-Loss festgelegt, wodurch ein Risiko großer Verluste besteht.

Optimierungsrichtlinien:

  1. MACD-Parameter optimieren, um die besten Kombinationen zu finden.

  2. Hinzufügen von Stop-Loss, um den maximalen Verlust zu begrenzen.

  3. Beurteilen Sie andere Filter, um die Signalqualität zu verbessern.

  4. Testen Sie verschiedene Zeitrahmenkombinationen, um optimale Übereinstimmungen zu finden.

Zusammenfassung: Die Strategie ist systematisch gut konzipiert und kombiniert mehrere Stärken des MACD-Indikators, um mittelfristige und langfristige Trends effektiv zu verfolgen. Das Fehlen eines Stop-Loss-Mechanismus bedeutet jedoch, dass sich kurzfristige Verluste leicht erweitern können, was verbessert werden muss. Insgesamt bietet die Strategie mit starken Trendverfolgungsfähigkeiten einen qualitativ hochwertigen Rahmen für die Auswahl von Aktien und die Entscheidungsfindung im quantitativen Handel. Weitere Optimierungen in Parametern und Modellen können das Gewinnpotenzial erweitern und die Stabilität verbessern.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
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 ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : 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=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 cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, 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, comment="BBandLE")

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


Mehr