
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.
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.
Die Risiken können auf folgende Weise gelöst werden:
Diese Strategie kann in folgenden Bereichen optimiert werden:
In Kombination mit anderen Indikatoren, z. B. KDJ-Indikatoren, Brin-Band-Indikatoren usw., filtern Sie falsche Signale
Änderungen an den Eintrittsmechanismen, z. B. Durchbruchfilter, um zu verhindern, dass zu früh oder zu spät eingesetzt wird
Optimierung der Parameter-Einstellungen, Anpassung der Schnell- und Langzeitschnell-Perioden an die unterschiedlichen Zyklen und die Marktumgebung
Ein Stop-Loss-Strategie, um einzelne Verluste zu kontrollieren
Erweiterung auf andere Arten wie Devisen, digitale Währungen usw.
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.
/*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")