ZZ-4 Preiskanal-Ausbruchsstrategie


Erstellungsdatum: 2023-09-21 10:59:55 zuletzt geändert: 2023-09-21 10:59:55
Kopie: 0 Klicks: 647
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie basiert auf dem Preiskanal des ZZ-Indikators, um überschüssige oder leere Positionen zu erstellen, die Signale nutzen, dass der Preis die Obergrenze des Kanals nach oben überschritten hat oder die Untergrenze des Kanals nach unten überschritten hat. Die Strategie versucht, Trend-Ausbrüche außerhalb des Preiskanals zu erfassen.

Strategieprinzip

  1. Berechnung der oberen und unteren Grenzen des Preiskanals
  2. Wenn die Preise die Obergrenze überschreiten
  3. Wenn der Preis nach unten fällt und die Untergrenze überschreitet, machen Sie eine Ausgabe
  4. Einstellung der Start- und Endzeit
  5. Täglich vor dem Börsenabschluss

Konkret berechnet die Strategie die oberen und unteren Grenzen des Preiskanals mit Hilfe des ZZ-Indikators. Wenn der Preis die obere Grenze von unten überschreitet, wird ein Plus-Einstieg getätigt; Wenn der Preis die untere Grenze von oben überschreitet, wird ein Minus-Einstieg getätigt.

Analyse der Stärken

  1. Sie haben eine gewisse Fähigkeit, Trends zu erkennen, indem sie die Preiskanäle nutzen, um potenzielle Trendbrechpunkte zu ermitteln.
  2. Handelssignale sind einfach, intuitiv und leicht zu beurteilen.
  3. Anpassbare Parameter für die Durchlaufphase für verschiedene Sorten und Zyklen
  4. Die Einstellung eines Datumsbereichs und der täglichen Liquidation hilft bei der Risikokontrolle
  5. Ein Stop-Loss-Bill, der die Einzelschäden begrenzt

Risikoanalyse

  1. Schwankungen innerhalb des Preiskanals können zu mehreren Stop-Losses führen
  2. Die Parameter müssen zeitnah angepasst werden, sonst kann der Kanalbereich ungenau sein
  3. Ein Durchbruch könnte ein falscher sein und ein Risiko für eine Deckung
  4. Potenzielle Gewinne beschränkt auf die Preiskanalabgrenzung
  5. Der Trend hat sich in den letzten Jahren stark verschlechtert.

Diese Risiken können durch die Erweiterung der Kanalbreite, die Optimierung der Stop-Loss-Strategie und die Beurteilung der Trendstärke verringert werden.

Optimierungsrichtung

  1. Verschiedene Parameter testen, um die beste Kombination zu finden
  2. Der Preiskanal soll erweitert werden, um den größeren Markt zu erfassen.
  3. Einführung von Trendmessungen, um falsche Durchbrüche zu vermeiden
  4. Optimierung von Stop-Loss-Strategien und Verhinderung von Deckung
  5. Erhöhung der Haltungsquote zur Maximierung der durchschlagenden Erträge
  6. Beurteilung der Rendite für verschiedene Datumsräume

Zusammenfassen

Die Strategie basiert auf dem Preiskanal, der Trend-Ausbruchpunkte zu handeln. Der Vorteil ist, dass die Handelssignale einfach, Stop-Loss klar und einfach zu bedienen sind. Der Nachteil ist die Existenz von häufigen Ausfällen und nicht ausreichend genutzten Trends. Die oben genannten Nachteile können durch Parameteroptimierung, Strategie-Kombination usw. überwunden werden, während der Vorteil erhalten wird.

Strategiequellcode
/*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")