Trendfolgestrategie auf Zickzack-Basis


Erstellungsdatum: 2023-10-30 14:51:08 zuletzt geändert: 2023-10-30 14:51:08
Kopie: 0 Klicks: 843
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie auf Zickzack-Basis

Überblick

Die Strategie verwendet ZigZag-Indikatoren, um die Richtung der Trends zu bestimmen und nach der Bestätigung der Trends zu verfolgen.

Strategieprinzip

Die Strategie basiert auf einer ZigZag-Anzeige, die die Richtung der Preisentwicklung bestimmen kann. Die ZigZag-Anzeige filtert Marktlärm und erkennt die Richtung der wichtigsten Preisbewegungen. ZigZag sendet ein Handelssignal aus, wenn der Preis ein neues Hoch oder ein neues Tief erzeugt.

Konkret berechnet die Strategie zunächst den ZigZag-Wert, der den Preis für den Höchstwert des Höchstwerts, wenn der Preis einen höheren Höchstwert erreicht, und den Preis für den Tiefpunkt des Tiefwerts, wenn der Preis einen niedrigeren Tiefpunkt erreicht. Auf diese Weise kann der ZigZag die Hauptrichtung der Preisschwankungen deutlich widerspiegeln.

Die Strategie beurteilt die Richtung des Trends anhand des ZigZag-Wertes. Wenn ZigZag steigt, ist es im Aufwärtstrend; wenn ZigZag fällt, ist es im Abwärtstrend. Die Strategie eröffnet Positionen, wenn ZigZag umkehrt, um die Richtung des Trends zu verfolgen.

Die Strategie besteht darin, bei ZigZag-Umdrehungen, die ein neues Hoch bilden, eine Über- und bei ZigZag-Umdrehungen, die ein neues Tief bilden, eine Leer-Position zu eröffnen. Die Pivot-Bedingung ist ZigZag-Umdrehungen und so weiter. Auf diese Weise wird eine automatische Handelsstrategie realisiert, die auf ZigZag-Trendentscheidungen basiert.

Strategische Stärkenanalyse

  • Mit Hilfe des ZigZag-Indikators können Trends effektiv gefiltert werden, um die wichtigsten Trends zu bestimmen.
  • ZigZag-Wendezeitpunkte sind präzise und bieten eine gute Einstiegszeit.
  • Eine vollständige Trend-Tracking-Strategie ohne weitere komplexe Indikatoren oder Modellunterstützung.
  • Die Strategie ist klar und einfach zu verstehen und zu ändern.
  • Die Frequenz des Handels kann durch Parameter an die Strategie der freien Kontrolle angepasst werden.

Risikoanalyse

  • ZigZag ist unempfindlich für die mittelschnelle Bulle-Bär-Umstellung und kann eine schnellere Umkehr verpassen.
  • Es ist nicht möglich, die Verluste durch eine Trendwende zu beheben.
  • Es gibt keine Einschränkung für die Höhe der Einzelschäden und ein hohes Risiko für Einzelschäden.
  • Die Strategie basiert auf einem einzigen Indikator und es besteht die Gefahr einer Überanpassung.

Das Risiko kann durch folgende Maßnahmen verringert werden:

  • Das Risiko einer Trendwende wird in Kombination mit anderen Indikatoren beurteilt.
  • Die Verringerung der Haltedauer und die zeitnahe Verringerung der Verluste.
  • Das Modul zur Vermögensverwaltung wurde hinzugefügt, um die Größe der einzelnen Verluste zu begrenzen.
  • Das ist ein weiterer Schritt, um die Strategie zu verbessern.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Erhöhung der Stop-Loss-Strategie, um das Risiko eines Einzelschadens zu kontrollieren. Sie können einen mobilen Stop-Loss oder einen hängenden Stop-Loss einrichten.

  2. Hinzugefügt wird ein Trendumkehr-Richtmechanismus. Indikatoren wie MACD, Moving Averages und andere können hinzugefügt werden, um Positionen zu schließen, wenn ein Trendumkehr festgestellt wird.

  3. Das Modul zum Wiedereintritt. Wenn die Tendenz fortbesteht, können Sie angemessen erhöhen, um mehr zu verdienen.

  4. Die Einführung von Machine-Learning-Modellen. Sie können Deep-Learning-Modelle wie LSTM trainieren, um ZigZag zu helfen, Trends zu bestimmen.

  5. Optimierung der Geldverwaltungsmechanismen. Die Positionsgröße kann nach der Rücknahme oder der Relevanztheorie optimiert werden.

  6. Die Optimierungsparameter können durch historische Rückverfolgung und Referenz in Fachbüchern wie ZigZag-Zykluslängen eingestellt werden.

Zusammenfassen

Die Strategie nutzt ZigZag-Indikatoren, um die Richtung der Trends zu bestimmen und eine trendbasierte Handelsstrategie zu realisieren. Die Strategie-Logik ist einfach und klar. Es gibt jedoch Probleme wie die Abhängigkeit von einzelnen Indikatoren und das Risiko einer Trendumkehr.

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

//Noro
//2018

//@version=2
strategy(title = "Noro's ZZ Strategy v1.0", shorttitle = "ZZ str 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(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title='Timeframe for ZigZag')
showzz = input(false, defval = false, title = "Show ZigZag")
showbg = input(false, defval = false, title = "Show Background")
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
zigzag() =>
    _isUp = close >= open
    _isDown = close <= open
    _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1])
    _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? highest(2) : _isDown[1] and _isUp and _direction[1] != 1 ? lowest(2) : na
useAltTF = true
zz = useAltTF ? (change(time(tf)) != 0 ? request.security(syminfo.tickerid, tf, zigzag()) : na) : zigzag()
zzcolor = showzz ? black : na
plot(zz, title = 'ZigZag', color = zzcolor, linewidth = 2)

//Levels
dot = zz > 0 ? zz : dot[1]
uplevel = dot > dot[1] ? dot : uplevel[1]
dnlevel = dot < dot[1] ? dot : dnlevel[1]
colorup = close[1] < uplevel[1] and uplevel == uplevel[1] ? lime : na
colordn = close[1] > dnlevel[1] and dnlevel == dnlevel[1] ? red : na
plot(uplevel, color = colorup, linewidth = 3)
plot(dnlevel, color = colordn, linewidth = 3)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size != size[1] ? blue : na
bgcolor(bgcol, transp = 50)

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

if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()