SMA Crossover-Strategie


Erstellungsdatum: 2023-11-08 11:36:51 zuletzt geändert: 2023-11-08 11:36:51
Kopie: 1 Klicks: 646
1
konzentrieren Sie sich auf
1617
Anhänger

SMA Crossover-Strategie

Überblick

Die Strategie basiert auf der Kreuzung von schnellen und langsamen Moving Averages, um ein Handelssignal zu erzeugen. Ein Kaufsignal wird erzeugt, wenn der schnelle Moving Average den langsamen Moving Average von unten durchquert; ein Verkaufsignal wird erzeugt, wenn der schnelle Moving Average den langsamen Moving Average von oben durchquert.

Grundsätze

Die Strategie berechnet die schnellen und langsamen Moving Averages mithilfe der SMA-Funktion. Fast_SMA ist der schnelle Moving Average mit der Periodengröße fast_SMA_input; slow_SMA ist der langsame Moving Average mit der Periodengröße slow_SMA_input.

Die Strategie verwendet die Cross- und Crossunder-Funktion, um die Kreuzung von schnellen und langsamen Moving Averages zu bestimmen. Wenn die LONG-Variante über den schnellen Moving Average geht, erzeugt sie ein Kaufsignal. Wenn die LONG-Variante unter dem schnellen Moving Average geht, erzeugt sie ein Verkaufssignal.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Strategie ist einfach, leicht zu verstehen und umzusetzen.
  2. Anpassbare Moving Average-Perioden für verschiedene Marktumgebungen.
  3. Der Markt ist in der Lage, die Geräusche zu filtern, um zuverlässige Handelssignale zu erzeugen.
  4. Es ist möglich, dass Trends gleichzeitig gestartet und umgedreht werden.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Wenn die Einstellungen falsch sind, werden zu viele Handelssignale erzeugt, was zu häufigen Transaktionen führt.
  2. In den OTC-Märkten könnte es zu zahlreichen ungültigen Signalen kommen.
  3. Es ist unmöglich zu beurteilen, wie lange der Trend noch andauern wird, und es könnte zu früh umgekehrt werden.

Risikokontrollmethoden:

  1. Die Parameter für Moving Averages sind vernünftig eingestellt, um die Filterwirkung und die Sensitivität in Einklang zu bringen.
  2. Trends sind in der Regel nicht zu erkennen, wenn sie mit einem Trend-Filter verbunden sind.
  3. Setzen Sie einen Stop-Loss-Punkt und kontrollieren Sie Ihre Einzelschäden.

Optimierungsrichtung

Diese Strategie kann optimiert werden durch:

  1. Filterbedingungen hinzugefügt werden, um den Umsatz oder die Volatilität bei einem Durchbruch des Moving Averages zu überprüfen, um falsche Durchbrüche zu vermeiden.
  2. In Kombination mit Trendindikatoren identifiziert man die Richtung und Stärke von Trends.
  3. Hinzufügen von maschinellen Lernmodellen zur automatischen Optimierung von Moving Average-Parametern.
  4. In Kombination mit technischen Indikatoren wie Resistance Levels, Brin-Bands und anderen, um die Handelsregionen zu kartografieren und die Einstiegsgenauigkeit zu verbessern.

Zusammenfassen

Diese Strategie nutzt die Vorteile von Moving Averages, um einfache und effektive Handelssignale zu erzeugen. Obwohl einige Risiken bestehen, können sie durch Optimierung der Parameter und Hinzufügen von Filterbedingungen verbessert werden. Die Moving Average-Kreuzung ist eine Strategie, die es wert ist, weiter untersucht und angewendet zu werden.

Strategiequellcode
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)