Exponential Moving Average Crossover-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-17 16:55:10
Tags:

img

Übersicht

Dies ist eine automatische Handelsstrategie, die lang oder kurz geht, basierend auf dem Crossover von zwei exponentiellen gleitenden Durchschnitten (EMAs) mit verschiedenen Zeiträumen.

Grundsätze

Die Strategie verwendet zwei EMAs, eine ist die EMA auf einem größeren Zeitrahmen und die andere ist die EMA auf dem aktuellen Zeitrahmen. Wenn die aktuelle EMA über die größere EMA geht, geht sie lang. Wenn die aktuelle EMA unter die größere EMA geht, geht sie kurz.

Insbesondere definiert die Strategie zunächst zwei EMA-Parameter:

  1. tf - Der größere Zeitrahmen, Standard täglich.
  2. len - Die Länge der EMA-Periode, Standard 3.

Anschließend werden zwei EMA berechnet:

  1. Ma1 - 3-tägiger EMA im Tageszeitrahmen.
  2. Ma2 - 3-tägiger EMA für den aktuellen Zeitrahmen.

Abschließend geht sie auf folgende Basis in Geschäfte ein:

  • Wenn ma2 > ma1, geht es lang.
  • Wenn ma2 < ma1, wird es kurz.

Durch das Beurteilen der Trendrichtung durch Crossovers zwischen zwei EMAs unterschiedlicher Perioden automatisiert es den Handel.

Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Einfaches Prinzip, leicht zu verstehen und umzusetzen, sehr geeignet für Anfänger.
  2. Der Trend folgend, dem Trend gehorchend, kann man gute Gewinne machen.
  3. Durch die Verwendung von EMAs, die empfindlicher auf Preisänderungen reagieren, können Trendumkehrungen rechtzeitig erfasst werden.
  4. Die Kombination von EMA unterschiedlicher Zeiträume kann ihre jeweiligen Stärken nutzen und die Systemstabilität verbessern.
  5. Keine Notwendigkeit für zu viele Parameter, einfach zu testen und zu optimieren, bequem für den Live-Handel.

Risiken

Die Strategie birgt auch einige Risiken:

  1. Schwache Entwicklung nach Fähigkeit kann in unterschiedlichen Märkten verhindert werden.
  2. Wenn wir in doppelten EMA-Kreuzungen zurückbleiben, können wir einige Chancen verpassen.
  3. Kann nicht wirksam unordentliche Kreuzungen zwischen zwei EMAs filtern.
  4. Sie stützt sich lediglich auf einfache EMAs, die sich nur schwer an komplexe Märkte anpassen lassen.

Die Risiken können reduziert werden, indem Stop-Loss eingestellt, Parameter optimiert, andere Indikatoren hinzugefügt werden usw.

Optimierung

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Testen Sie verschiedene EMA-Parameter für große Perioden, um die optimale Kombination zu finden.
  2. Fügen Sie einen Lautstärkungsfilter hinzu, um falsche Signale zu vermeiden.
  3. Einbeziehung von Trendindikatoren zur Erhöhung der Positionsgröße und Effizienz.
  4. Anpassungsfähige Stop-Loss-Einstellungen zur Kontrolle von Einzelverlusten.
  5. Optimierung der Positionsgröße entsprechend den Marktbedingungen.
  6. Fügen Sie maschinelle Lernmodelle hinzu, um die Strategie intelligenter zu machen.

Schlussfolgerung

Die EMA-Crossover-Strategie erfasst Trends mit einfachen Indikatoren, die für Anfänger geeignet sind, sie zu erlernen und zu üben.


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

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mehr