MACD Golden Cross Death Cross Trend Nach der Strategie

Schriftsteller:ChaoZhang, Datum: 22.12.2023
Tags:

img

Übersicht

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.

Strategie Logik

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.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Verwendung des MACD-Indikators zur Bestimmung der Trendrichtung ist genau und zuverlässig.

  2. 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.

  3. 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.

  4. Es gibt viele einstellbare Eingabeparameter, die für eine bessere Handelsleistung optimiert werden können.

Risiken und Lösungen

Diese Strategie birgt auch einige Risiken:

  1. Der MACD-Indikator kann leicht falsche Signale erzeugen und unnötige Verluste verursachen. Andere Indikatoren können verwendet werden, um die Signale zu filtern.

  2. Der ATR-Indikator stellt nur die Schwankungen der letzten Zeit dar und kann bei extremen Marktbedingungen den Verlust nicht genau stoppen.

  3. Die Leistung der ausgewählten Signale ist möglicherweise nicht stabil. Um die optimalen Parameter zu bestimmen, ist umfangreiches Backtesting erforderlich.

  4. Die Signalparameter und die Risikomanagementparameter müssen zusammen optimiert werden, da es sonst schwierig ist, die weltweit optimalen Ergebnisse zu erzielen.

Optimierungsvorschläge

Die Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Versuchen Sie andere gleitende Durchschnitte wie TMA, Hull MA usw., um MACD-Signale zu filtern.

  2. Versuchen Sie dynamische Stoppmechanismen, die besser mit Schwankungen bei extremen Marktbedingungen umgehen können.

  3. Ausführliche Optimierung der traditionellen MACD-Parameter, um bessere Kombinationen zu finden.

  4. Verwenden Sie Methoden des maschinellen Lernens, um optimale ATR-Multiplikatoren für ein besseres Risikomanagement zu finden.

  5. Jeder der fünf Signaltypen wird separat getestet, um das optimale Signal zu ermitteln.

  6. Trainieren Sie neuronale Netzwerke, um die Signalqualität zu beurteilen und neue Signale zu entdecken, die auf MACD basieren.

Schlussfolgerung

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)  

Mehr