Diese Strategie verwendet das goldene Kreuz und das Todeskreuz des MACD-Indikators, um die Trendrichtung zu bestimmen, und verwendet den ATR-Indikator für Stop-Loss und Take-Profit, um den Trend nach dem Handel umzusetzen.
Wenn die MACD-Linie über die Signallinie von unten überquert und positiv wird, wird ein Kaufsignal erzeugt, das als goldenes Kreuzsignal bezeichnet wird und einen Aufwärtstrend im Aktienkurs anzeigt.
Die Strategie geht einfach lang auf Goldkreuze und kurz auf Todkreuze, um Trends zu folgen. Gleichzeitig führt die Strategie auch den ATR-Indikator ein, um Stop Loss zu berechnen und Gewinnniveaus zu nehmen, um das Handelssystem zu konstruieren.
Insbesondere berechnet die Strategie zuerst den schnellen gleitenden Durchschnitt, den langsamen gleitenden Durchschnitt, die MACD-Differenz, die Signallinie und andere Standard-MACD-Indikatoren. Anschließend werden auf der Grundlage der gewählten einer von fünf Signaltypen (Fortsetzungssignal, Umkehrsignal, Histogrammsignal, MACD-Nullkreuz, Signallinie-Nullkreuz) goldenen Kreuz und Todeskreuz bestimmt. Schließlich werden Stop-Loss und Take-Profit basierend auf dem ATR-Indikator festgelegt, um die Ein- und Ausstiegslogik zu vervollständigen.
Die Strategie weist folgende Vorteile auf:
Die Verwendung des MACD-Indikators zur Bestimmung der Trendrichtung ist genau und zuverlässig.
Die auf dem ATR-Indikator basierenden Stop-Loss- und Take-Profit-Einstellungen können das Risiko-Rendite-Verhältnis einzelner Trades wirksam steuern und die Verlustwahrscheinlichkeit verringern.
Durch die Bereitstellung von fünf optionalen Signaltypen kann für verschiedene Märkte das am besten geeignete Signal verwendet werden, wodurch die Anpassungsfähigkeit der Strategie verbessert wird.
Es gibt viele einstellbare Eingabeparameter, die für eine bessere Handelsleistung optimiert werden können.
Diese Strategie birgt auch einige Risiken:
Der MACD-Indikator kann leicht falsche Signale erzeugen und unnötige Verluste verursachen. Andere Indikatoren können verwendet werden, um die Signale zu filtern.
Der ATR-Indikator stellt nur die Schwankungen der letzten Zeit dar und kann bei extremen Marktbedingungen den Verlust nicht genau stoppen.
Die Leistung der ausgewählten Signale ist möglicherweise nicht stabil. Um die optimalen Parameter zu bestimmen, ist umfangreiches Backtesting erforderlich.
Die Signalparameter und die Risikomanagementparameter müssen zusammen optimiert werden, da es sonst schwierig ist, die weltweit optimalen Ergebnisse zu erzielen.
Die Strategie kann auch in folgenden Aspekten optimiert werden:
Versuchen Sie andere gleitende Durchschnitte wie TMA, Hull MA usw., um MACD-Signale zu filtern.
Versuchen Sie dynamische Stoppmechanismen, die besser mit Schwankungen bei extremen Marktbedingungen umgehen können.
Ausführliche Optimierung der traditionellen MACD-Parameter, um bessere Kombinationen zu finden.
Verwenden Sie Methoden des maschinellen Lernens, um optimale ATR-Multiplikatoren für ein besseres Risikomanagement zu finden.
Jeder der fünf Signaltypen wird separat getestet, um das optimale Signal zu ermitteln.
Trainieren Sie neuronale Netzwerke, um die Signalqualität zu beurteilen und neue Signale zu entdecken, die auf MACD basieren.
Die MACD Golden Cross Death Cross Trend Following Strategie nutzt den MACD-Indikator, um die Trendrichtung zu bestimmen und den Stop-Loss und Take-Profit mit dem ATR-Indikator festzulegen, der Trendhandelschancen effektiv erfassen kann. Die Strategie bietet mehrere Vorteile wie einstellbare Parameter, vollständige Stop-Mechanismen und optionale Signaltypen. Der nächste Schritt besteht darin, die Signalqualität, Stop-Loss-Mechanismen und die Optimierung der Parameterwahl zu verbessern, um bessere Backtest- und Live-Ergebnisse zu erhalten.
/*backtest start: 2023-11-21 00:00:00 end: 2023-12-21 00:00:00 period: 1h 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/ // © vuagnouxb //@version=4 strategy("BV's MACD SIGNAL TESTER", overlay=true) //------------------------------------------------------------------------ //---------- Confirmation Calculation ------------ INPUT //------------------------------------------------------------------------ // Getting inputs fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.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=plot.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) // -- Trade entry signals signalChoice = input(title = "Choose your signal", defval = "Continuation", options = ["Continuation", "Reversal", "Histogram", "MACD Line ZC", "Signal Line ZC"]) continuationSignalLong = signalChoice == "Continuation" ? crossover(macd, signal) and macd > 0 : signalChoice == "Reversal" ? crossover(macd, signal) and macd < 0 : signalChoice == "Histogram" ? crossover(hist, 0) : signalChoice == "MACD Line ZC" ? crossover(macd, 0) : signalChoice == "Signal Line ZC" ? crossover(signal, 0) : false continuationSignalShort = signalChoice == "Continuation" ? crossunder(macd, signal) and macd < 0 : signalChoice == "Reversal" ? crossover(signal, macd) and macd > 0 : signalChoice == "Histogram" ? crossunder(hist, 0) : signalChoice == "MACD Line ZC" ? crossunder(macd, 0) : signalChoice == "Signal Line ZC" ? crossunder(signal, 0) : false longCondition = continuationSignalLong shortCondition = continuationSignalShort //------------------------------------------------------------------------ //---------- ATR MONEY MANAGEMENT ------------ //------------------------------------------------------------------------ SLmultiplier = 1.5 TPmultiplier = 1 JPYPair = input(type = input.bool, title = "JPY Pair ?", defval = false) pipAdjuster = JPYPair ? 1000 : 100000 ATR = atr(14) * pipAdjuster // 1000 for jpy pairs : 100000 SL = ATR * SLmultiplier TP = ATR * TPmultiplier //------------------------------------------------------------------------ //---------- TIME FILTER ------------ //------------------------------------------------------------------------ YearOfTesting = input(title = "How many years of testing ?" , type = input.integer, defval = 3) _time = 2020 - YearOfTesting timeFilter = (year > _time) //------------------------------------------------------------------------ //--------- ENTRY FUNCTIONS ----------- INPUT //------------------------------------------------------------------------ if (longCondition and timeFilter) strategy.entry("Long", strategy.long) if (shortCondition and timeFilter) strategy.entry("Short", strategy.short) //------------------------------------------------------------------------ //--------- EXIT FUNCTIONS ----------- //------------------------------------------------------------------------ strategy.exit("ATR", from_entry = "Long", profit = TP, loss = SL) strategy.exit("ATR", from_entry = "Short", profit = TP, loss = SL)