
Die Strategie verwendet ZigZag-Indikatoren, um die Richtung der Trends zu bestimmen und nach der Bestätigung der Trends zu verfolgen.
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.
Das Risiko kann durch folgende Maßnahmen verringert werden:
Diese Strategie kann in folgenden Bereichen optimiert werden:
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.
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.
Das Modul zum Wiedereintritt. Wenn die Tendenz fortbesteht, können Sie angemessen erhöhen, um mehr zu verdienen.
Die Einführung von Machine-Learning-Modellen. Sie können Deep-Learning-Modelle wie LSTM trainieren, um ZigZag zu helfen, Trends zu bestimmen.
Optimierung der Geldverwaltungsmechanismen. Die Positionsgröße kann nach der Rücknahme oder der Relevanztheorie optimiert werden.
Die Optimierungsparameter können durch historische Rückverfolgung und Referenz in Fachbüchern wie ZigZag-Zykluslängen eingestellt werden.
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.
/*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()