MACD-Quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-19
Tags:

img

Übersicht

Diese Strategie verwendet den MACD-Indikator, um Long-Positions-Handelssignale zu erstellen, wenn der MACD unter einem bestimmten Niveau liegt, um durchschnittliche Umkehrmöglichkeiten zu nutzen.

Strategie Logik

Ein langes Signal wird erzeugt, wenn die MACD-Linie unterhalb der SIGNAL-Linie liegt und der absolute Wert der MACD unter -0.00025 liegt.

Diese Strategie verwendet den MACD-Indikator, um überverkaufte Zonen zu erkennen. Gemäß der Theorie der gleitenden Durchschnitte gibt es eine Wahrscheinlichkeit einer mittleren Umkehrung kurzfristig, und ein langes Signal wird basierend auf dieser Wahrscheinlichkeit festgelegt.

Vorteile

  1. Verwendet den MACD-Indikator, um Überverkäufe zu beurteilen, was eine gewisse Zuverlässigkeit aufweist.
  2. Einfache Handelssignale und Regeln, die leicht umzusetzen sind.
  3. Lange Haltezeiten bedeuten weniger häufiges Handeln, was zu geringeren Transaktionskosten und zu geringeren Ausfallraten führt.

Risiken

  1. Das Risiko einer fehlgeschlagenen Rückkehr bedeutet Verluste, wenn keine Rückkehr stattfindet.
  2. Ungültige Signale durch schlechte MACD-Parameterwahl.

Dieses Risiko kann durch Parameteroptimierung verringert werden.

Verbesserungen

  1. MACD-Parameter optimieren, um die besten Kombinationen zu finden.
  2. Versuche verschiedene Wartezeiten, um eine optimale Dauer zu finden.
  3. Hinzufügen von Stop-Loss-Mechanismen.

Zusammenfassung

Diese Strategie nutzt die Wahrscheinlichkeit der mittleren Umkehrungen von den vom MACD-Indikator identifizierten Überverkaufswerten, um lange Signale und Gewinne durch lange Halteperioden zu generieren.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

Mehr