Trendverfolgungsstrategie auf mehreren Zeitskalen basierend auf Impuls-MACD und doppeltem gleitendem Durchschnitts-Crossover

MACD SMMA SMA ZLEMA EMA MA
Erstellungsdatum: 2024-05-17 15:33:02 zuletzt geändert: 2024-05-17 15:33:02
Kopie: 5 Klicks: 1201
1
konzentrieren Sie sich auf
1617
Anhänger

Trendverfolgungsstrategie auf mehreren Zeitskalen basierend auf Impuls-MACD und doppeltem gleitendem Durchschnitts-Crossover

Überblick

Die Strategie verwendet verschiedene Moving Average-Indikatoren, darunter SMMA, SMA, ZLEMA und EMA, und baut auf diesen einen verbesserten MACD-Indikator (Impulse MACD) auf, um ein Handelssignal durch die Kreuzung von Impulse MACD mit seinen Signallinien zu erzeugen. Die Hauptidee der Strategie ist es, die Markttrends mit Moving Averages auf verschiedenen Zeitskalen zu erfassen und gleichzeitig die Stärke und Richtung der Trends mit Impulse MACD zu bestätigen.

Strategieprinzip

  1. Die Berechnungslänge beträgt 34 SMMA, ZLEMA mit Hoch-, Tief- und Schlusskurs und wird durch den Impulse MACD ((MD)) berechnet.
  2. Berechnen Sie den 9-Zyklus-SMA des Impulse MACD als Signallinie ((SB) ).
  3. Berechnen Sie die Differenz zwischen dem Impulse MACD und der Signallinie ((SH)), die die Trendstärke widerspiegelt.
  4. Impulse MACD erzeugt ein Kaufsignal, wenn es die Signallinie überschreitet. Impulse MACD erzeugt ein Kaufsignal, wenn es die Signallinie überschreitet.
  5. Der Impulse MACD-Spaltenbild ist in verschiedenen Farben gezeichnet, um die Trendsstärke und -schwäche intuitiv zu reflektieren.

Strategische Vorteile

  1. Es werden verschiedene Arten von Moving Averages verwendet, um die Markttrends umfassender abzubilden.
  2. Der verbesserte MACD-Indikator (Impulse MACD) berücksichtigt die relative Position der Preise gegenüber den Moving Averages und ist in der Lage, die Trendstärke besser zu reflektieren.
  3. Die Einführung von Signalleitungen hilft, einige falsche Signale zu filtern und die Signalqualität zu verbessern.
  4. Impulse MACD ist in verschiedenen Farben nach Trendstärke abgebildet, um die Entwicklung des Marktes intuitiv zu beurteilen.

Strategisches Risiko

  1. Fehlgewählte Parameter können zu einem häufigen oder verzögerten Signal führen, das je nach Markt und Periode optimiert werden muss.
  2. Die Strategie könnte bei einem Erschütterungsschlag zu mehr Falschsignalen führen, was zu Verlusten führen könnte.
  3. Die Strategie fehlt an Stop-Loss-Mechanismen, die bei starken Marktsituationen zu einem größeren Rückzug führen können.

Richtung der Strategieoptimierung

  1. Die Einführung von Trendmessungen, wie beispielsweise dem ADX, die den Handel nur dann ermöglichen, wenn der Trend eindeutig ist, reduziert die Verluste in einem wackligen Umfeld.
  2. Für das erzeugte Handelssignal kann eine zweite Bestätigung in Kombination mit anderen Indikatoren wie RSI, ATR usw. durchgeführt werden, um die Signalqualität zu verbessern.
  3. Setzen Sie angemessene Stop-Loss- und Stop-Positions und kontrollieren Sie die Risiken eines einzelnen Handels.
  4. Optimierung der Parameter, z. B. durch die Verwendung von genetischen Algorithmen, um die optimale Kombination von Parametern zu finden.

Zusammenfassen

Die Strategie basiert auf mehreren Arten von Moving Averages und erzeugt Handelssignale durch die Kreuzung von MACD-Indikatoren mit Signallinien. Die Strategie zeigt die Trendstärke visuell, die Gesamtkonzeption ist klar und die Vorteile sind deutlich. Die Strategie hat jedoch auch einige Einschränkungen, wie z. B. eine unzureichende Adaptivität zu schwankenden Verhaltensweisen, fehlende Risikokontrollen usw.

Strategiequellcode
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")