Strategie für den doppelten gleitenden Durchschnittsquerschnitt

Schriftsteller:ChaoZhang, Datum: 2023-11-21 17:00:49
Tags:

img

Übersicht

Diese Strategie identifiziert Kauf- und Verkaufssignale, indem sie das Crossover von zwei gleitenden Durchschnitten des MACD-Indikators berechnet.

Grundsätze

Die Strategie berechnet zunächst die schnelle Linie (12-Perioden-EMA), die langsame Linie (26-Perioden-EMA) und die MACD-Differenz.

  1. Wenn die schnelle Linie über die langsame Linie (goldenes Kreuz) und die MACD-Differenz über 0 geht, ist dies ein Kaufsignal
  2. Wenn die schnelle Linie unterhalb der langsamen Linie (Todeskreuz) kreuzt und die MACD-Differenz unter 0 geht, ist dies ein Verkaufssignal

Um falsche Signale auszufiltern, überprüft der Code auch das Signal der vorherigen Kerze. Das aktuelle Signal wird nur ausgelöst, wenn die vorherige Kerze ein entgegengesetztes Signal hat (Kauf vs. Verkauf oder umgekehrt).

Darüber hinaus werden auf dem Diagramm Pfeilformen angezeigt, um Kauf- und Verkaufssignale anzuzeigen.

Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Verwendung eines doppelten gleitenden Durchschnitts-Crossover hilft, Trends zu erkennen und Marktlärm zu filtern
  2. Die Einbeziehung der MACD-Differenz verhindert fehlende Trades und falsche Signale
  3. Pfeile zeigen die Ein- und Ausgänge deutlich an
  4. Einfache und leicht verständliche Regeln erleichtern die Replikation

Risiken und Lösungen

Einige Risiken dieser Strategie:

  1. Crossovers können falsche Signale erzeugen und zu einem Überhandel führen.
  2. Die Fähigkeit, die Abweichungen in einem Trend zu erkennen, führt möglicherweise zu Verlusten.
  3. Feste Regeln können sich nicht an veränderte Märkte anpassen. Maschinelles Lernen kann dies möglicherweise optimieren.

Möglichkeiten zur Verbesserung

Einige Möglichkeiten zur Verbesserung der Strategie:

  1. Versuche verschiedene Parameterkombinationen, um optimale Einstellungen für die schnelle Linie, die langsame Linie und den MACD zu finden
  2. Hinzufügen von zusätzlichen Eingangsbedingungen wie Lautstärkerückgängen zu Filtersignalen
  3. Einbeziehung von Stop-Loss zur Kontrolle von Einzelhandelsverlusten
  4. Verwenden Sie Volatilitätsindikatoren wie VIX zur Bewertung des Risikobereitschafts
  5. Probieren Sie maschinelle Lernmodelle anstelle von festen Regeln aus, um adaptive Optimierungen zu erstellen

Zusammenfassung

Die doppelte gleitende Durchschnitts-Crossover-Pfeilstrategie ist ziemlich einfach und praktisch. Durch die Verwendung von Crossover von zwei gleitenden Durchschnitten und MACD-Differenzfilterung identifiziert sie Eingänge und Ausgänge während mittelfristiger und langfristiger Trends und vermeidet fehlende Preisumkehrungen. Die Pfeilsignale liefern auch klare Betriebsführung. Weitere Verbesserungen der Stabilität und Rentabilität können durch Parameter-Tuning, zusätzliche Filter und adaptive Optimierung erreicht werden.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge

Mehr