MACD Golden Cross und Dead Cross Trend Tracking Strategie


Erstellungsdatum: 2023-12-22 11:45:54 zuletzt geändert: 2023-12-22 11:45:54
Kopie: 1 Klicks: 1112
1
konzentrieren Sie sich auf
1623
Anhänger

MACD Golden Cross und Dead Cross Trend Tracking Strategie

Überblick

Die Strategie beurteilt die Richtung des Trends anhand des MACD-Indikators, setzt einen Stop-Loss-Stopp in Verbindung mit dem ATR-Indikator und ermöglicht den Trend-Tracking-Handel. Das Wort “Platinum-Dead-Fork” im Namen der Strategie steht für das Gold-Dead-Fork-Signal des MACD-Indikators.

Strategieprinzip

Wenn die MACD-Linie von unten nach oben durch die Signal-Linie geht und positiv wird, wird ein Kaufsignal erzeugt, das Goldfork-Signal, um eine steigende Tendenz zu zeigen. Wenn die MACD-Linie von oben nach unten durch die Signal-Linie geht und negativ wird, wird ein Verkaufssignal erzeugt, das Todesfork-Signal, um eine fallende Tendenz zu zeigen.

Die Strategie nutzt dieses Prinzip, um bei Goldfork mehr zu machen und bei Deadfork leer zu machen, um den Trend zu verfolgen. Gleichzeitig führt die Strategie die ATR-Anzeige ein, um die Stop-Loss-Stopp-Position zu berechnen und den Aufbau des Handelssystems abzuschließen.

Konkret berechnet die Strategie zunächst die Standard-MACD-Indikatoren wie schnelle, schnelle, MACD-Differenz, Signal-Linien und so weiter. Anschließend werden die Gold-Stock-Stopps anhand der fünf ausgewählten Signale (Fortsetzung, Umkehr, Pylogramm, MACD-Zollkreuzung, Signal-Zollkreuzung) beurteilt. Schließlich werden die Stop-Loss-Stopps in Kombination mit den ATR-Indikatoren eingestellt, um die Ein- und Ausstiegslogik zu vervollständigen.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die MACD-Indikatoren können Trends zuverlässig und präzise bestimmen.

  2. Die Stop-Loss-Setting in Kombination mit ATR-Indikatoren kann die Risiko-Rendite-Rate eines einzelnen Handels effektiv kontrollieren und die Verlustwahrscheinlichkeit senken.

  3. Es gibt fünf verschiedene Signale, die für verschiedene Märkte geeigneter sind, um die Anpassungsfähigkeit der Strategie zu verbessern.

  4. Es gibt mehr Eingabeparameter, die durch Parameteroptimierung zu besseren Transaktionsergebnissen führen können.

Risiken und Lösungen

Die Strategie birgt auch einige Risiken:

  1. Die MACD-Indikatoren sind anfällig für Fehlsignale, die zu unnötigen Verlusten führen können. Sie können mit anderen Indikatoren kombiniert werden, um die Filtersignale zu filtern.

  2. Der ATR-Indikator modelliert nur die Schwankungen in der jüngsten Zeit und kann keine exakten Stop-Losses für Extremsituationen vornehmen.

  3. Die Auswahl von Signalen kann unbeständig wirken und erfordert eine große Anzahl von Rückprüfungen, um die optimalen Parameter zu bestimmen.

  4. Die Signalparameter und die Risikomanagementparameter müssen gleichzeitig optimiert werden, sonst ist es schwierig, optimale Ergebnisse zu erzielen. Es wird empfohlen, eine schrittweise Optimierung zu verwenden.

Optimierungsvorschläge

Die Strategie kann auch in folgenden Bereichen optimiert werden:

  1. Versuchen Sie andere Moving Averages wie TMA, HullMA und Filter MACD-Signal.

  2. Das ist eine sehr gute Idee, um mit den Schwankungen der Extreme besser umzugehen.

  3. Die MACD-Indikator-Kombination von traditionellen Parametern wird schrittweise optimiert, um bessere Parameter zu finden.

  4. Mit Hilfe von maschinellen Lernmethoden wird die optimale ATR-Multiplikation für ein besseres Risikomanagement ermittelt.

  5. Die fünf Signaltypen wurden getestet, um das optimale Signal zu ermitteln.

  6. Trainieren von Neuralnetzen, um die Wirkung von Signaltypen zu beurteilen und nach neuen MACD-basierten Signalen zu suchen.

Zusammenfassen

Die MACD-Goldfork-Trend-Tracking-Strategie nutzt die MACD-Indikatoren, um die Trendrichtung zu bestimmen, die Stop-Loss-Stopps in Verbindung mit den ATR-Indikatoren, um die Trend-Handelschancen effektiv zu erhalten. Die Strategie hat mehrere Vorteile, wie die Optimierung der Indikatorparameter, die Komplexität des Stop-Loss-Mechanismus und die Wahl des Signaltyps. Die nächsten Schritte werden in der Verbesserung der Signalqualität, der Verbesserung des Stop-Loss-Mechanismus und der Optimierung der Parameterwahl eingeleitet, um bessere Rückmessungen und reale Ergebnisse zu erzielen.

Strategiequellcode
/*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)