
Die Strategie nutzt ZigZag-Indikatoren, um Unterstützungs- und Widerstandslinien zu erstellen und entsprechende Über- oder Unterziehungshandlungen durchzuführen, wenn der Preis die Unterstützung oder die Widerstandslinie durchbricht.
Die Strategie verwendet zunächst den ZigZag-Indikator, um unter bestimmten Parametern eine Z-Linie zu zeichnen. Dann wird eine grüne Unterstützungslinie gezeichnet, wenn der ZigZag-Indikator unten erscheint, und eine rote Widerstandslinie, wenn er oben erscheint.
Die Kernlogik der Strategie lautet:
Ein dreifacher Index-Moving-Average mit ema zu den Close-Preisen ergibt eine glatte Kurve von _hls。
Beurteilen Sie, ob die Gleitkurve steigt. Wenn sie steigt und die vorherige K-Linie nicht steigt, nehmen Sie den niedrigsten Wert dieser K-Linie als Bottom. Wenn sie sinkt und die vorherige K-Linie steigt, nehmen Sie den höchsten Wert dieser K-Linie als Top.
Wiederholen Sie diesen Vorgang, und Sie erhalten ZigZag-Linien.
Wenn ein Zickzack steigt, markiert man den aktuellen oberen Punkt; wenn er sinkt, markiert man den aktuellen unteren Punkt.
Wenn der Punkt steigt, zeichne die Unterstützung in grün uplevel; wenn der Punkt sinkt, zeichne die Widerstandslinie in rot dnlevel.
Wenn die Preise über die grüne Linie gehen, machen Sie mehr, wenn sie über die rote Linie gehen, machen Sie nichts.
Diese Strategie hat folgende Vorteile:
Mit Hilfe des ZigZag-Wertzeichens identifizieren Sie die wichtigsten Unterstützungs- und Widerstandspunkte, die oft von Bedeutung sind.
ZigZag löscht den Lärm aus den Märkten und macht die Handelssignale klarer.
Der Eintritt in die Branche erfolgt auf eine bahnbrechende Art und Weise, um eine Trendwende rechtzeitig zu erfassen.
Die Abbildung der Widerstandslinie ist einfach und effektiv.
Die Strategie ist klar und verständlich, die Parameter können optimiert werden.
Flexible Auswahl der Handelsarten und Zeitspannen, sehr anpassungsfähig.
Die Strategie birgt auch einige Risiken:
Die falsche Einstellung der ZigZag-Indikatorparameter kann zu verpassten Handelsmöglichkeiten führen.
Nach dem Überschreiten der Stützungswiderstandsstufe kann es zu einem erneuten Test kommen. Der Verluststopp sollte eingestellt werden, um das Risiko zu kontrollieren.
Durchbruchsignale können falsch sein und sollten in Kombination mit Trends und Formen überprüft werden.
Der Markt kann sich über einen längeren Zeitraum hin und her bewegen, was zu einer übermäßigen Anzahl von ungültigen Transaktionen führen kann.
Die Auswirkungen der Transaktionskosten müssen berücksichtigt werden, um zu häufige Transaktionen zu vermeiden.
Entsprechende Maßnahmen:
Optimieren Sie die ZigZag-Parameter, um die beste Kombination zu finden.
Nach dem Durchbruch wird ein Stop-Loss eingerichtet, um den Einzelschaden zu kontrollieren.
In Kombination mit Trendindikatoren und anderen Filtersignalen erhöht sich die Genauigkeit.
Die Einführung von Bedingungen zur Identifizierung der Schließung des Marktes, während derer keine Geschäfte getätigt werden.
Die Breakout-Grenze sollte entsprechend gelockert werden, um die Anzahl der ungültigen Transaktionen zu verringern.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimieren Sie ZigZag-Parameter, um die beste Kombination von Parametern zu finden. Sie können die besten Parameter durch Durchlauf-Retest finden.
Erwägen Sie die Möglichkeit, die Widerstandslage nach dem Durchbruch erneut zu testen. Setzen Sie die Ausstiegslogik für den erneuten Test ein.
Trendindikatoren wie der MA werden verwendet, um unwahrscheinliche Handelssignale zu filtern.
Erhöhung der Energieindikatoren usw. zur Bestätigung des Durchbruchs und Vermeidung von Fehlsignalen.
Setzen Sie die von Lachenbruch erwähnte “dual-methode” ein, um falsche Signale zu filtern und zu profitieren.
Erwägen Sie, die Parameter dynamisch zu optimieren, indem Sie Algorithmen wie Machine Learning verwenden.
Einführung einer Stop-Loss-Strategie und Einstellung eines Stop-Loss-Punktes zur Risikokontrolle.
Die Strategie ist im Allgemeinen eine einfache und praktische Erschütterungs-Break-Strategie. Sie nutzt ZigZag-Indikatoren, um Unterstützungs- und Widerstandslinien zu erstellen und zu handeln, wenn die Preise diese Linien durchbrechen. Die Strategie hat eine starke Anpassungsfähigkeit, aber auch ein gewisses Risiko.
/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
// strategy(title = "Noro's ZZ-2 Strategy", shorttitle = "Noro's ZZ-2 Strategy", 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, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
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, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)
//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)
//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)