Trend Bull/Bear Crossover-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-07 09:56:30
Tags:

Übersicht

Diese Strategie verwendet das Grundsätzliche der gleitenden Durchschnittskreuzung, um die Trendrichtung zu bestimmen und Kauf- und Verkaufssignale zu erzeugen.

Grundsätze

Die Strategie verwendet zwei gleitende Durchschnitte, einen 7-tägigen MA als schnelle Linie und einen 5-monatigen MA als langsame Linie. Die schnelle Linie erfasst die Preisänderungen schnell, während die langsame Linie das Rauschen filtert und die Trendrichtung bestimmt. Wenn die schnelle Linie über die langsame Linie von unten bricht, gilt es als ein bullisches Signal, lang zu gehen. Wenn die schnelle Linie die langsame Linie von oben bricht, gilt es als ein bärisches Signal, kurz zu gehen.

Speziell berechnet die Strategie den 7-tägigen einfachen gleitenden Durchschnitt (SMA) und den 5-monatigen SMA und zeichnet sie auf dem Preisdiagramm ab. Wenn die 7-tägige Linie über die 5-monatige Linie von unten kreuzt, wird ein Kaufsignal generiert. Wenn die 7-tägige Linie unter die 5-monatige Linie von oben kreuzt, wird ein Verkaufssignal ausgelöst. Die Strategie visualisiert auch die Signalperioden.

Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Einfache und zuverlässige theoretische Grundlage, die auf dem allgemein bekannten Kreuzungsprinzip des gleitenden Durchschnitts beruht.

  2. Es werden nur zwei gleitende Durchschnitte verwendet, wobei die Auswahl der Parameter einfach und die Umsetzung einfach ist.

  3. Die schnellen und langsamen Linien arbeiten effektiv zusammen, um Trends zu erkennen und Marktlärm zu filtern.

  4. Durch unterschiedliche Perioden-MAs werden unterschiedliche Zeitrahmen erfasst, wodurch Trendveränderungen auf mehreren Skalen erkannt werden.

  5. Einfache Umsetzung mit klarer, leicht verständlicher Logik.

  6. Visualisierte Signale sind klar und intuitiv, um Trades zu entscheiden.

Risiken

Es gibt auch einige Risiken:

  1. Anfällig für falsche Signale, die sich ausschließlich auf MA-Kreuzungen stützen.

  2. Unfähigkeit, die Trendstärke effektiv zu beurteilen, was zu häufigen Stop Loss auf den unterschiedlichen Märkten führt.

  3. Festgelegte MA-Perioden können sich nicht an Marktveränderungen anpassen, was eine Optimierung der Parameter erfordert.

  4. Ein- und Ausgangsebenen unklar, mit einigen Whipsaw-Risiken.

  5. Eine vereinfachte theoretische Grundlage kann die Leistung und das Gewinnpotenzial beeinträchtigen.

Erweiterung

Die Strategie kann in folgenden Bereichen verbessert werden:

  1. Hinzufügen anderer Indikatoren zur Ermittlung von Ein- und Ausstiegsniveaus, z. B. KDJ für Überkauf/Überverkauf.

  2. Implementieren Sie Stop-Loss-Mechanismen wie Trailing Stop, um Verluste zu begrenzen.

  3. Optimierung der Zulassungszeiten für die Anpassung an die verschiedenen Marktzyklen.

  4. Fügen Sie den Lautstärkungsfilter hinzu, um falsche Ausbrüche zu vermeiden.

  5. Beurteilen Sie die Trendstärke, z. B. MA-Neigung, um die Positionsgröße zu skalieren.

  6. Mehrfache Zeitrahmen für eine bessere Kontinuität des Trends.

Schlussfolgerung

Die Strategie identifiziert auf Basis der MA-Crossover-Theorie einfach und zuverlässig Bull/Bear Trends. Die Vorteile sind Einfachheit und Benutzerfreundlichkeit, während die Nachteile die inhärenten Trend-Folge-Risiken sind. Feinabstimmungsparameter, Hinzufügen von Hilfsindikatoren usw. können die Strategieleistung verbessern.


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


Mehr