ZZ-4 Preiskanal-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie handelt auf der Grundlage des Preiskanals des ZZ-Indikators, wobei bei einem Preisbruch über/unter die Kanalbänder Long/Short-Positionen eingenommen werden.

Strategie Logik

  1. Berechnung der Preiskanal-Ober-/Unterbands
  2. Gehen Sie lang, wenn der Preis über das obere Band bricht
  3. Wenn der Preis unter die unteren Bands fällt, gehen Sie kurz
  4. Zeitbereich für den Handel festlegen
  5. Bereinigte Positionen vor dem täglichen Schließen

Der ZZ-Indikator wird verwendet, um die Preiskanalbänder zu berechnen. Wenn der Preis aus dem unteren Band nach oben bricht, gehen Sie lang. Wenn der Preis aus dem oberen Band nach unten bricht, gehen Sie kurz. Stop-Loss-Orders werden mit den Kanalbändern als Stop-Loss-Level verwendet.

Analyse der Vorteile

  1. Preiskanal identifiziert mögliche Trendbreaches
  2. Einfache und klare Handelssignale
  3. Anpassbarer Kanalzeitraum für verschiedene Produkte und Zyklen
  4. Handelszeiten und Tages-Exit-Risikomanagement
  5. Stop-Loss-Grenzen für Einzelhandelsverluste

Risikoanalyse

  1. Whipsaws im Inneren des Kanals können wiederholt auf den Stop-Loss treffen
  2. erfordert eine rechtzeitige Einstellung der Parameter, andernfalls kann der Kanalbereich ungenau sein
  3. Ausbrüche können falsch sein, Risiken, eingeschlossen zu werden.
  4. Gewinnpotenzial ist durch die Kanalspannweite begrenzt
  5. Trends nicht vollständig nutzen

Die Risiken können reduziert werden, indem der Kanalbereich erweitert, der Stop-Loss optimiert, die Trendstärke gemessen und so weiter.

Optimierungsrichtlinien

  1. Verschiedene Parameterkombinationen für eine optimale Einstellung testen
  2. Erweitern Sie den Preiskanal, um größere Bewegungen zu erfassen
  3. Hinzufügen eines Trendindikators, um falsche Ausbrüche zu vermeiden
  4. Optimieren Sie den Stop-Loss, um zu vermeiden, dass Sie gefangen werden
  5. Erhöhung der Positionsgröße zur Maximierung des Ausbruchserfolges
  6. Rentabilität über verschiedene Datumsbereiche hinweg bewerten

Zusammenfassung

Diese Strategie handelt mit Preiskanal-Breakthroughs, um Trend-Ausbrüche zu identifizieren. Vorteile sind einfache klare Signale und einfache Bedienung; Nachteile sind Whipsaws und das Versagen, Trends zu fahren. Parameteroptimierung und Strategiekombination können die Nachteile überwinden und gleichzeitig Vorteile behalten. Es hilft Händlern, die Anwendung von Preiskanaltechniken zu meistern.


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

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 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, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Mehr