Doppelter gleitender Durchschnitt Crossover MACD Trendfolgestrategie


Erstellungsdatum: 2024-01-23 11:22:02 zuletzt geändert: 2024-01-23 11:22:02
Kopie: 1 Klicks: 594
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelter gleitender Durchschnitt Crossover MACD Trendfolgestrategie

Überblick

Diese Strategie basiert auf einem MACD-Technik-Indikator, der mit zwei Moving Averages gekreuzt wird. Sie nutzt das schnelle und langsame Signal des MACD-Indikators, um die Richtung des Trends zu bestimmen und den Trend zu verfolgen.

Strategieprinzip

Die Strategie berechnet zunächst die drei Kurven des MACD-Indikators: die Schnelllinie, die Langlinie und die Abweichlinie. Die Schnelllinie ist ein schnellerer und der Langlinie ein längerperiodischer Moving Average. Die Abweichlinie ist die Differenz zwischen der Schnelllinie und der Langlinie.

Die Strategie nutzt dieses Prinzip, um bei einem Goldfork mehr zu machen und bei einem Dead-Fork zu platzieren; oder bei einem Dead-Fork leer zu sein und bei einem Goldfork zu platzieren, um einen automatischen Trend zu verfolgen. Gleichzeitig beurteilt die Strategie auch die absoluten Werte der MACD-Linie als positiv-negativ, um falsche Signale zu vermeiden und sicherzustellen, dass die Trendwende wirklich erfasst wird.

Strategische Vorteile

  • Die Nutzung von doppelten beweglichen Durchschnitten, um die Richtung des Trends zu bestimmen und die Trendwende genau zu erfassen
  • MACD-Technik reduziert Falschsignale und verbessert Signalqualität
  • Flexibilität, mehr oder nur mehr zu tun
  • Die Parameter sind anpassbar für unterschiedliche Marktumstände

Strategisches Risiko

  • Die doppelte bewegliche Durchschnitts-Kreuzung ist im Rückstand und kann einen Teil der Gewinne am Anfang der Umstellung verpassen
  • Der MACD-Indikator ist anfällig für falsche Signale in schwankenden Märkten
  • Die Parameter müssen entsprechend angepasst werden, um eine Überempfindlichkeit oder Langsamkeit zu vermeiden.

Die Risiken können auf folgende Weise gelöst werden:

  • Filtersignale in Kombination mit anderen Indikatoren
  • Anpassung der Parameter zur Verringerung der Handelsfrequenz
  • Diese Strategie wird nur eingesetzt, wenn ein Trend erkennbar ist.

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. In Kombination mit anderen Indikatoren, z. B. KDJ-Indikatoren, Brin-Band-Indikatoren usw., filtern Sie falsche Signale

  2. Änderungen an den Eintrittsmechanismen, z. B. Durchbruchfilter, um zu verhindern, dass zu früh oder zu spät eingesetzt wird

  3. Optimierung der Parameter-Einstellungen, Anpassung der Schnell- und Langzeitschnell-Perioden an die unterschiedlichen Zyklen und die Marktumgebung

  4. Ein Stop-Loss-Strategie, um einzelne Verluste zu kontrollieren

  5. Erweiterung auf andere Arten wie Devisen, digitale Währungen usw.

Zusammenfassen

Die Double Moving Average Cross MACD Trend-Tracking-Strategie nutzt MACD-Indikatoren, um die Trendrichtung zu bestimmen, kombiniert mit schnellen und langsamen Linie-Kreuz-Filtersignalen, um Trendwechsel effektiv zu erfassen und den Trend automatisch zu verfolgen. Der Vorteil der Strategie liegt in der Präzision, die Trends zu bestimmen, die Parameter flexibel anzupassen und entsprechend der Marktumgebung zu optimieren.

Strategiequellcode
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © DeMindSET

//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) 
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)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

if LSB == "Long only" and Green
    strategy.entry("L",true)
if LSB == "Long only" and Red
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
    strategy.entry("L",true)
if LSB == "Both" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Green
    strategy.close("S",qty_percent=100,comment="TP Short")