Trend-Crossover-Handelsstrategie


Erstellungsdatum: 2023-10-07 09:56:30 zuletzt geändert: 2023-10-07 09:56:30
Kopie: 0 Klicks: 637
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie nutzt das Kreuzungsprinzip eines beweglichen Durchschnitts, um die Richtung des Trends durch die Kreuzung von schnellen und langsamen Linien zu bestimmen, um ein Kauf- und Verkaufssignal zu senden. Die Strategie ist einfach und zuverlässig und eignet sich für Investoren, die nach stabilen Erträgen suchen.

Grundsätze

Die Strategie verwendet zwei Moving Averages, den 7-Tage-Mean als Schnelllinie und den 5-Monats-Mean als Schnelllinie. Die Schnelllinie erfasst die Preisentwicklung schneller, die Schnelllinie filtert den Lärm aus und beurteilt die Trendrichtung. Wenn die Schnelllinie die Schnelllinie von unten durchbricht, gilt dies als ein Stiermarktsignal, und wenn die Schnelllinie von oben nach unten fällt und die Schnelllinie durchbricht, gilt dies als ein Bärmarktsignal und macht eine Lücke.

Insbesondere erzeugt die Strategie ein Kaufsignal, wenn die 7-Tage-Simple Moving Average und die 5-Tage-Simple Moving Average berechnet und auf dem Kursdiagramm abgebildet werden. Wenn die 7-Tage-Linie die 5-Tage-Linie von unten durchschneidet, wird ein Kaufsignal erzeugt.

Vorteile

Diese Strategie hat folgende Vorteile:

  1. Die Theorie basiert auf einem einfachen und zuverlässigen Prinzip, basierend auf dem bekannten Prinzip der Kreuzung von Moving Averages.

  2. Die Auswahl der Parameter ist einfach und leicht umzusetzen.

  3. Die Kombination aus Schnell- und Langspiel ermöglicht eine effiziente Trenderkennung und Filterung von Marktlärm.

  4. Die Verwendung verschiedener periodischer Durchschnittslinien ermöglicht es, Trendänderungen auf verschiedenen Zeitskalen zu erfassen.

  5. Die Implementierung ist einfach, der Code ist leicht zu verstehen und die Logik ist klar.

  6. Die visuellen Hinweise sind klar und intuitiv, die operativen Entscheidungen sind klar.

Die Gefahr

Die Strategie birgt auch einige Risiken:

  1. Einfach auf Basis von Gleichlinienkreuzungen kann es zu falschen Triggersignalen kommen.

  2. Es ist unwahrscheinlich, dass die Trends so stark sind, dass sie bei Tremor häufig abgebrochen werden.

  3. Die Fixed Average Cycle kann sich nicht an Marktveränderungen anpassen und muss optimiert werden.

  4. Es ist nicht möglich, die Kauf- und Verkaufsposition zu beurteilen.

  5. Einfachere theoretische Grundlagen, die Effekte können reduziert werden, die Gewinnspanne ist begrenzt.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Hinzu kommen weitere Indikatoren, die die Kauf- und Verkaufsposition bestimmen, z. B. der KDJ-Indikator, der überkauft und überverkauft.

  2. Es wurden weitere Schadensersatzmechanismen hinzugefügt, wie zum Beispiel die Verfolgung von Schadensersatzmechanismen, um die Ausweitung von Schadensersatz zu verhindern.

  3. Optimierung der Parameter für die Durchschnittslinie-Periode, so dass sie sich an unterschiedliche Praxiszyklen anpasst.

  4. Erhöhung der Filterleistung, um falsche Durchbrüche zu vermeiden.

  5. Beurteilung von Trends mit starker oder schwächer Tendenz, z. B. Berechnung von Durchschnittslinienverläufen, Operationen mit unterschiedlicher Intensität.

  6. In Kombination mit mehr Zeitzyklus-Analysen wird die Dauerhaftigkeit der Trends beurteilt.

Zusammenfassen

Die Strategie basiert auf dem Prinzip der Kreuzung von Moving Averages und identifiziert einfache und zuverlässige bullish-bearish Trends. Der Vorteil ist die einfache Bedienung, der Nachteil ist die Gefahr, den Trend blind zu folgen. Durch die Optimierung der Parameter, die Erhöhung der Hilfsindikatoren und andere Methoden kann die Effektivität der Strategie verbessert werden.

Strategiequellcode
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dadashkadir

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())