SMA-Crossover-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-25 16:03:48
Tags:

img

Übersicht

Diese Strategie basiert auf den Prinzipien des goldenen Kreuzes und des toten Kreuzes des einfachen gleitenden Durchschnitts (SMA). Die Strategie verwendet zwei SMAs, nämlich schnelle SMA und langsame SMA. Wenn die schnelle SMA von unten über die langsame SMA überschreitet, wird ein Kaufsignal generiert. Wenn die schnelle SMA von oben unter die langsame SMA überschreitet, wird ein Verkaufssignal generiert.

Strategie Logik

Die Strategie beruht hauptsächlich auf zwei SMA-Indikatorlinien. Die schnelle SMA hat eine kürzere Periode und kann Preisänderungen schneller erfassen. Die langsame SMA hat eine längere Periode und kann etwas Lärm filtern. Wenn die schnelle SMA über die langsame SMA von unten geht, zeigt sie an, dass die kurzfristige steigende Geschwindigkeit schneller ist und ein Kaufsignal erzeugt. Wenn die schnelle SMA unter die langsame SMA von oben geht, zeigt sie an, dass die kurzfristige fallende Geschwindigkeit schneller ist und ein Verkaufssignal erzeugt.

Durch die Festlegung verschiedener SMA-Periodenparameter können die Strategieparameter in gewissem Umfang an unterschiedliche Marktumgebungen angepasst werden.

Analyse der Vorteile

  • Verwendet den bekannten SMA-Indikator mit einfacher Logik
  • Anpassungsfähige SMA-Periodenparameter mit hoher Anpassungsfähigkeit
  • Zur Optimierung der Parameter kann ein Backtesting-Zeitrahmen festgelegt werden
  • Die Verwendung von Crossover zur Erzeugung von Signalen hat eine gewisse Filterwirkung und kann falsche Trades reduzieren

Risikoanalyse

  • Die SMA selbst hat einen Nachlaufseffekt und kann kurzfristige Chancen verpassen
  • Da die Dynamik des Trends nicht ermittelt werden kann, kann die Wirksamkeit der Signalerzeugung instabil sein.
  • Fehlende Einstellungen der SMA-Periodenparameter erhöhen die falschen Signale

Zur Bekämpfung der oben genannten Risiken können folgende Maßnahmen ergriffen werden:

  • Um die Empfindlichkeit zu verbessern, sollte der SMA-Zyklus angemessen verkürzt werden.
  • Einbeziehung anderer Indikatoren zur Bestimmung der Trenddynamik
  • Finden Sie die optimale Parameterkombination mit Hilfe von Parameteroptimierungswerkzeugen

Optimierungsrichtlinien

  • Hinzufügen einer Stop-Loss-Strategie zur Kontrolle einzelner Verluste
  • Hinzufügen eines Positionsmanagementmechanismus
  • Kombination mit anderen technischen Indikatoren
  • Hinzufügen von Algorithmen für maschinelles Lernen zur Dynamikoptimierung von Parametern

Zusammenfassung

Dies ist eine typische Trendfolgestrategie. Durch die Anwendung des einfachen Prinzips des doppelten gleitenden Durchschnitts-Crossovers können gute Tracking-Ergebnisse erzielt werden, wenn die Parameter angemessen eingestellt werden. Allerdings hat der SMA selbst einen gewissen Verzögerungseffekt und kann nicht die Dynamik des Trends bestimmen. Daher müssen in der tatsächlichen Anwendung andere Hilfswerkzeuge eingeführt werden, um eine Indikatorenkombination zu bilden, und ergänzt mit automatisierter Parameteroptimierung und Risikokontrollemittel, um die Strategie stetig profitabel zu machen.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", 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 = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

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


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

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, 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 ? green : red)

Mehr