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.
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.
Die Risiken können reduziert werden, indem der Kanalbereich erweitert, der Stop-Loss optimiert, die Trendstärke gemessen und so weiter.
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")