Doppelte gleitende Durchschnitts-Crossover-Strategie


Erstellungsdatum: 2023-12-01 18:18:16 zuletzt geändert: 2023-12-01 18:18:16
Kopie: 2 Klicks: 668
1
konzentrieren Sie sich auf
1619
Anhänger

Doppelte gleitende Durchschnitts-Crossover-Strategie

Überblick

Die Strategie basiert auf einer Trend-Tracking-Strategie mit doppelter Durchschnittslinie. Sie kombiniert einen schnellen einfachen gleitenden Durchschnitt (SMA) und einen langsam gewichteten gleitenden Durchschnitt (VWMA) und nutzt die Kreuzung der beiden Durchschnittslinien, um ein Kauf- und Verkaufssignal zu erzeugen.

Wenn der schnelle SMA nach oben durch den langsamen VWMA geht, erzeugt er ein Kaufsignal; wenn der schnelle SMA nach unten durch den langsamen VWMA geht, erzeugt er ein Verkaufssignal. Die Strategie verwendet ein Stop-Loss-Mechanismus, um das Risiko zu kontrollieren.

Strategieprinzip

Die Kernlogik der Strategie basiert auf einer doppelten Gleichgewichtskreuzung. Konkret nutzt sie die folgenden technischen Kennzahlen:

  1. Einfacher Moving Average (SMA): Der arithmetische Durchschnitt der letzten n Tage, der den Durchschnitt der letzten Zeit darstellt.
  2. Gewichteter Moving Average (VWMA): Gewichteter Durchschnitt der letzten n-Tage-Schlusskurs, der den jüngsten Preisen mehr Gewicht verleiht und schneller auf Preisänderungen reagiert.

Die schnellen SMA-Parameter in der doppelten Mittellinie sind kürzer eingestellt, um schnell auf Preisänderungen zu reagieren; die langsamen VWMA-Parameter sind länger und wirken wie eine Welle. Wenn sich der kurzfristige und der langfristige Trend in die gleiche Richtung entwickelt, erzeugt der schnelle SMA ein Kaufsignal, wenn er den langsamen VWMA nach oben durchquert.

Die Strategie setzt gleichzeitig einen Stop-Loss-Mechanismus ein. Wenn der Preis in eine ungünstige Richtung fährt, wird der Stop-Loss zeitnah durchgeführt, um das Risiko zu kontrollieren.

Analyse der Stärken

  1. Schnelle Reaktion auf Veränderungen der Markttrends
  2. Rücknahmen unter Kontrolle, Risiken durch Stop Loss Mechanismen
  3. Einfache, intuitive und leicht verständliche Umsetzung
  4. Optimierbar durch Anpassung der Parameter an unterschiedliche Marktumstände

Risikoanalyse

  1. Doppel-Gleichgewichts-Strategien erzeugen leicht falsche Signale für mehrere Märkte
  2. Die richtigen Parameter müssen ausgewählt werden, eine falsche Einstellung kann zu Verlusten führen
  3. Es kann manchmal zu Kopfschmerzen kommen, wenn Markt-Vorfälle Schäden verursachen.

Die Methoden zur Risikokontrolle:

  1. Bestätigung mit Trendfilter
  2. Optimierte Parameter-Einstellungen
  3. Einführung einer Stop-Loss-Strategie, um einzelne Verluste zu kontrollieren

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Bestätigung in Verbindung mit anderen technischen Indikatoren, wie RSI, Brinline, etc., um die Genauigkeit des Signals zu verbessern
  2. Optimierung der Länge der Mittellinienparameter, Anpassung der Parameter an die unterschiedlichen Perioden
  3. Handel an Punkten mit hohem Energiein- und -ausgang in Verbindung mit einem Handelsvolumenindikator
  4. Anpassung der Parameter an die Rückmessung und Auswahl der optimalen Parameter
  5. Die Verwendung von dynamischen Stop-Losses, um die Stop-Loss-Punkte an die Marktschwankungen anzupassen

Zusammenfassen

Die Strategie als Ganzes ist eine sehr praktische Trend-Tracking-Strategie. Sie verwendet eine einfache intuitive doppelte Durchmesser-Kreuzung, um ein Handelssignal zu erzeugen, und durch die Kombination von schnellen Durchmesser und langsamen Durchmesser kann die Veränderung der Markttrends effektiv erfasst werden. Die Stop-Loss-Mechanismen ermöglichen auch eine gute Risikokontrolle. Die Handelswirksamkeit der Strategie kann durch die Kombination mit anderen Indikatoren und Parameteroptimierungen weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')

strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = close, title = "Simple MA Source")
maFastLength   = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource   = input(defval = high, title = "VW MA Source")
maSlowLength   = input(defval = 7, title = "VW MA Period", minval = 1)


// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)

// === 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 = 2018, 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()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)

// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)

// === MRSI ===
//
//

basis = rsi(close, input(50))

ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))

oversold = input(32.6)
overbought = input(63)

//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)

obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold

//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)

//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)

//fill(i1, i2, color=olive, transp=100)

// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)

// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)

//hline(50, title="50 Level", color=white)