ZigZag-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 08.01.2024
Tags:

img

Übersicht

In diesem Artikel wird eine Handelsstrategie namens ZigZag Trend Following Strategy vorgestellt. Diese Strategie identifiziert Preistrends mit dem ZigZag-Indikator und eröffnet Positionen, wenn Trends umgekehrt sind, um dem Trend zu folgen. Im Strategy Pine-Skript wird der ZigZag-Indikator verwendet, um neue Höchst- und Tiefstände von Preisen zu bestätigen. Wenn die Preise die ZigZag-Indikatorlinie durchbrechen, dient er als Handelssignal. Das Kaufsignal ist, wenn der Schlusskurs über der ZigZag-Indikatorlinie liegt, um lang zu gehen; Das Verkaufssignal ist, wenn der Schlusskurs unterhalb der ZigZag-Indikatorlinie liegt, um kurz zu gehen. Dies kann mittelfristige bis langfristige Preistrends effektiv verfolgen.

Strategieprinzip

Der Kern dieser Strategie besteht darin, den ZigZag-Indikator zu verwenden, um extreme Punkte der Preise zu lokalisieren und Preistrends anzuzeigen. Der ZigZag-Indikator besteht aus dem exponentiellen gleitenden Durchschnitt (EMA) der hohen und niedrigen Preise.

  1. Berechnen Sie den exponentiellen gleitenden Durchschnitt EMA der Schlusskurs, einschließlich drei gleitenden Durchschnittslinien: schnelle Linie, mittlere Linie und langsame Linie.

  2. Beurteilen Sie, ob sich die Preise im Aufwärtstrend befinden, d.h. ob die aktuelle Mittellinie höher ist als die Mittellinie der vorherigen K-Linie.

  3. Wenn er sich derzeit in einem Aufwärtstrend befindet, finden Sie den niedrigsten Preis, der vom Beginn der vorherigen Welle der Tiefpunkte innerhalb des ermittelten Zyklus als Wert von ZigZag gezählt wird.

  4. Wenn es sich derzeit in einem Abwärtstrend befindet, finden Sie den höchsten Preis, der vom Beginn der vorherigen Welle der Höchststände innerhalb des erkannten Zyklus als Wert von ZigZag gezählt wird.

  5. Somit wird der ZigZag-Indikator gebildet, der die extremen Punkte der Preisschwankungen widerspiegelt.

Auf dieser Grundlage verwenden wir die ZigZag-Linie als Referenz, um den Preistrend zu beurteilen. Das heißt, wenn der Preis steigt und durch die ZigZag-Indikatorlinie bricht, gehen wir lang; wenn der Preis fällt und durch die ZigZag-Indikatorlinie bricht, gehen wir kurz.

Analyse der Vorteile

Die Vorteile der Verwendung des ZigZag-Indikators zur Bestimmung von Kursentwicklungen und zur Verfolgung von Kursextremen bei der Positionsbestimmung sind:

  1. Kann Marktlärm effektiv filtern und wichtige Trends erfassen.

  2. Handelssignale, die auf dem Ausbruch neuer Höchst- und Tiefststände basieren, können effizient profitieren.

  3. ZigZag-Linien sind relativ glatt, was falsche Signale reduzieren kann.

  4. Es ist einfach, Strategien zu optimieren, indem man ZigZag-Parameter anpasst.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Der langfristige Lauf kann aufgrund heftiger Schwankungen auf dem Markt eingeschlossen werden.

  2. ZigZag-Indikatoren sind empfindlich gegenüber Parametern. Falsche Einstellungen können Handelsmöglichkeiten verpassen oder falsche Signale erzeugen. Parameter müssen entsprechend getestet und optimiert werden.

  3. Die Trend-Tracking-Strategien stützen sich stärker auf Trendmärkte.

Als Reaktion auf die oben genannten Risiken können wir Stop-Loss-Mechanismen einrichten, um einzelne Verluste zu kontrollieren; gleichzeitig die Positionsgröße anpassen, anstatt eine vollständige Position zu suchen; schließlich verschiedene Arten von Strategieportfolios zusammenpassen.

Optimierungsrichtung

Wir können diese Strategie in folgenden Aspekten weiter optimieren:

  1. Fügen Sie einen Stop-Loss-Mechanismus hinzu, z. B. setzen Sie einen beweglichen Stop-Loss oder einen Stop-Loss für die Amplitude des Kursrückgangs ein.

  2. Kombination mit anderen Indikatoren für den Positionsfilter, z. B. Erhöhung der Dynamikindikatoren, um eine ausreichende Dynamik zu gewährleisten, oder Handelsvolumenindikatoren, um ein hohes Handelsvolumen zu gewährleisten.

  3. Es werden unterschiedliche Parameterkonfigurationen entsprechend den unterschiedlichen Marktumgebungen (z. B. Bullen- und Bärenmärkte) angenommen.

  4. Versuche verschiedene EMA-Linienparameter, um die beste Parameterkombination zu finden.

Schlussfolgerung

Diese Strategie verwendet den ZigZag-Indikator, um Preistrends zu bestimmen und Tracking-Positionen in der Nähe von Extrempunkten zu etablieren. Sein Vorteil ist, dem Trend effizient zu folgen, um Gewinn zu erzielen. Es besteht auch das Risiko, gefangen zu werden. Wir können Stop Loss einstellen, Parameter optimieren und das Handelsstrategieportfolio optimieren, um Risiken zu kontrollieren. Diese Strategie eignet sich besser für den mittelfristigen bis langfristigen Trendhandel. Wenn sie richtig kontrolliert und kombiniert wird, kann sie stabile Renditen erzielen.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", 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 = "Capital, %")
length = input(4)
ExtremeDetection = input(4)
src = input(close)
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, ExtremeDetection)
plot(zigzag, color=black, linewidth=2)

//Signals
up = close > zigzag
dn = close < zigzag

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)


Mehr