Эта стратегия торгуется на основе ценового канала индикатора ZZ, принимая длинные/короткие позиции, когда цена выходит выше/ниже диапазонов канала.
В частности, он использует индикатор ZZ для расчета диапазонов ценового канала. Когда цена выходит вверх из нижней полосы, идите длинным. Когда цена выходит из верхней полосы, идите коротким. Ордера на остановку потерь используются с диапазонами канала как уровни остановки потерь.
Риски могут быть уменьшены путем расширения диапазона каналов, оптимизации стоп-лосса, измерения силы тренда и т.д.
Эта стратегия торгует прорывами ценового канала для выявления вспышек тренда. Преимущества - это простые ясные сигналы и легкая операция; недостатки - это сбои и неспособность управлять трендами. Параметровая оптимизация и комбинация стратегии могут преодолеть недостатки, сохраняя при этом преимущества. Это помогает трейдерам освоить применение методов ценового канала.
/*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")