Trendhandelsstrategie auf Basis des MACD-Indikators

Schriftsteller:ChaoZhang, Datum: 2024-02-02 11:32:48
Tags:

img

Übersicht

Der Kern dieser Strategie basiert auf dem Indikator, der in dem Artikel Trading the Trend von Andrew Abraham veröffentlicht wurde, der in der TASC-Zeitschrift im September 1998 erschien.

Strategie Logik

Die Strategie berechnet zunächst den 21-tägigen gewichteten gleitenden Durchschnitt des durchschnittlichen wahren Bereichs (ATR) als Basisvolatilitätsbereich. Dann berechnet sie die höchsten und niedrigsten Preise in den letzten 21 Tagen. Durch den Vergleich des aktuellen Schlusskurses mit den oberen und unteren Grenzen des Basisbereichs wird beurteilt, ob der Preis aus dem Kanal bricht, um die Trendrichtung zu bestimmen.

Insbesondere wird die obere Kanalgrenze als der höchste Preis in den letzten 21 Tagen abzüglich 3-facher Basis-ATR definiert, und die untere Kanalgrenze ist der niedrigste Preis in den letzten 21 Tagen plus 3-facher Basis-ATR. Wenn der Schlusskurs über der oberen Grenze liegt, signalisiert dies einen Aufwärtstrend. Wenn der Schlusskurs unter der unteren Grenze liegt, signalisiert er einen Bärentrend.

Bei der Bestimmung der Trendrichtung führt diese Strategie auch den MACD-Indikator zur Filterung ein. Sie erzeugt nur Kaufsignale, wenn das MACD-Histogramm positiv ist, um fehlende Kaufmöglichkeiten zu vermeiden.

Vorteile

Diese Strategie kombiniert Trendbestimmung und Indikatorfilterung, wodurch die mittelfristige und langfristige Markttrendrichtung wirksam ermittelt werden kann, ohne von kurzfristigen Schwankungen in die Irre geführt zu werden.

  1. Nutzung des Preiskanals zur Bestimmung von Trends und genauer Bestimmung der langfristigen Ausrichtung
  2. Der dynamische Basisvolatilitätsbereich passt sich den Marktveränderungen an
  3. MACD-Filterung bietet zusätzliche Entscheidungsunterstützung, um fehlende Kaufpunkte zu vermeiden
  4. Konfigurierbare Parameter bieten Flexibilität bei der Anpassung des Strategie-Stils

Risiken

Die Strategie birgt außerdem einige Risiken, vor allem in den folgenden Aspekten:

  1. Risiko einer Verletzung des Preiskanals
  2. Risiko von MACD-Signalfehlern
  3. Eine unzureichende Einstellung der Parameter kann zu einer Instabilität der Strategie führen

Diese Risiken können durch Optimierung der Parameter, strenge Positionsgröße und zeitnahen Stop-Loss reduziert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Hauptbereichen optimiert werden:

  1. Verschiedene Parameterkombinationen testen, um das optimale Ergebnis zu finden

Testen Sie verschiedene Kombinationen von Länge oder Multiplikator, um die Parameterkombination zu finden, die die höchste Rendite basierend auf dem Backtest liefert.

  1. Filterung mit anderen Indikatoren

Test, der RSI, KDJ und andere Indikatoren umfasst, um Signale zu filtern und die Rentabilität zu verbessern.

  1. Dynamische Anpassung der Parameter

Anpassung der Parameter dynamisch an die Marktbedingungen, z. B. angemessene Erweiterung des Kanalbereichs, wenn der Trend stark ist, oder Verengung des Bereichs, wenn der Markt stärker an den Bereich gebunden ist.

Zusammenfassung

Zusammenfassend ist dies eine insgesamt robuste Trendfolgestrategie. Durch die Kombination von Preiskanal-Trendbestimmung und MACD-Filterung kann es mittelfristige Trends effektiv identifizieren und stabile Renditen erzielen. Mit Parameteroptimierung, Risikomanagement und entsprechenden Anpassungen kann diese Strategie zu einem integralen Bestandteil eines Handelssystems werden.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © melihtuna

//@version=1
strategy("Trend Trader Strategy with MACD", overlay=true)

// === Trend Trader Strategy ===
Length = input(21),
Multiplier = input(3, minval=1)
MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = iff(close > hiLimit and close > loLimit, hiLimit,
        iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1,
	    iff(close < ret, -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(ret, color= blue , title="Trend Trader Strategy with MACD")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true

strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == -1)




Mehr