Strategie für eine doppelte Kreuzung von gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-12-01 18:18:16
Tags:

img

Übersicht

Diese Strategie basiert auf dem doppelten gleitenden Durchschnitts-Kreuzungstrend-Nachfolge-System. Sie kombiniert schnellen einfachen gleitenden Durchschnitt (SMA) und langsamen gewichteten gleitenden Durchschnitt (VWMA) und erzeugt Handelssignale, wenn sich die beiden Linien kreuzen.

Wenn die schnelle SMA über die langsame VWMA überschreitet, wird ein Kaufsignal generiert. Wenn die schnelle SMA unter die langsame VWMA überschreitet, wird ein Verkaufssignal generiert. Die Strategie verwendet auch einen Stop-Loss-Mechanismus zur Risikokontrolle.

Strategie Logik

Die Kernlogik dieser Strategie liegt im doppelten System des gleitenden Durchschnitts, das folgende technische Indikatoren verwendet:

  1. Einfacher gleitender Durchschnitt (SMA): Arithmetischer Mittelwert der Schlusskursentwicklung in den letzten n Tagen, der den jüngsten Durchschnittspreis widerspiegelt.
  2. Gewichteter gleitender Durchschnitt (VWMA): Gewichteter Mittelwert der Schlusskursentwicklung in den letzten n Tagen, bei dem jüngeren Preisen höhere Gewichte zugeordnet werden und die auf Preisänderungen schneller reagieren.

Der schnelle SMA hat eine kürzere Rückblicksperiode, um schnell auf Preisänderungen zu reagieren, während der langsame VWMA eine längere Rückblicksperiode für die Glättung hat.

Die Strategie setzt außerdem Stop-Loss-Mechanismen ein, um Verluste rechtzeitig zu reduzieren, wenn sich der Preis in ungünstige Richtungen bewegt.

Analyse der Vorteile

  1. Reagiert rasch auf Veränderungen der Marktentwicklung
  2. Gute Zugriffskontrolle mit effektiven Stop-Loss-Mechanismen
  3. Einfach und intuitiv, leicht zu verstehen und umzusetzen
  4. Optimierbare Parameter für verschiedene Marktumgebungen

Risikoanalyse

  1. Dual-MA-Strategien geben in Bullenmärkten in der Regel falsche Signale
  2. Eine unangemessene Einstellung der Parameter könnte zu Verlusten führen.
  3. Gelegentliche Flash-Abstürze können Verluste verursachen.

Risikomanagement:

  1. Verwendung von Trendfilterindikatoren zur Bestätigung
  2. Optimierung der Parameter-Einstellungen
  3. Einführung einer Stop-Loss-Strategie zur angemessenen Kontrolle einzelner Verluste

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Einbeziehen Sie andere Indikatoren wie RSI, Bollinger Bands, um die Signalgenauigkeit zu erhöhen
  2. Optimierung der Länge der gleitenden Durchschnitte über die Zyklen hinweg
  3. Kombination von Volumenindikatoren, Handel an Stellen mit erheblichen Kapitalflüssen
  4. Anpassung der Parameter auf der Grundlage der Rückprüfungsergebnisse
  5. Einbeziehung dynamischer Stopp-Loss, Anpassung von Stops anhand der Marktvolatilität

Schlussfolgerung

Dies ist eine sehr praktische Trendfolgestrategie. Sie verwendet intuitive doppelte gleitende Durchschnitts-Crossovers, um Handelssignale zu generieren, und erfasst Trendänderungen effektiv mit der Koordination von schnellen und langsamen gleitenden Durchschnitten. Der Stop-Loss-Mechanismus gewährleistet auch eine gute Risikokontrolle. Mit komplementären Indikatoren und Parameteroptimierung kann die Strategie noch bessere Handelsleistung erzielen.


/*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)

Mehr