Стратегия прорыва ценового канала ZZ-4

Автор:Чао Чжан, Дата: 21 сентября 2023 года 10:59:55
Тэги:

Обзор

Эта стратегия торгуется на основе ценового канала индикатора ZZ, принимая длинные/короткие позиции, когда цена выходит выше/ниже диапазонов канала.

Логика стратегии

  1. Расчет верхних/нижних диапазонов ценового канала
  2. Продолжите, когда цена выйдет выше верхней полосы.
  3. Пройти короткий, когда цена падает ниже нижней полосы
  4. Установленный временной диапазон торговли
  5. Чистые позиции до закрытия

В частности, он использует индикатор ZZ для расчета диапазонов ценового канала. Когда цена выходит вверх из нижней полосы, идите длинным. Когда цена выходит из верхней полосы, идите коротким. Ордера на остановку потерь используются с диапазонами канала как уровни остановки потерь.

Анализ преимуществ

  1. Канал цены определяет потенциальные прорывы тренда
  2. Простые и понятные торговые сигналы
  3. Настраиваемый период канала подходит для различных продуктов и циклов
  4. Время торговли и управление рисками ежедневного выхода
  5. Ограничения на остановку убытков по одной сделке

Анализ рисков

  1. Внутри канала может многократно наноситься стоп-лосс
  2. Требует своевременной настройки параметров, иначе диапазон канала может быть неточным
  3. Убежища могут быть ложными, риски попасть в ловушку.
  4. Потенциал прибыли ограничен диапазоном каналов
  5. Не в полной мере извлекает выгоду из движения тренда

Риски могут быть уменьшены путем расширения диапазона каналов, оптимизации стоп-лосса, измерения силы тренда и т.д.

Руководство по оптимизации

  1. Проверьте различные комбинации параметров для наилучшей настройки
  2. Расширить канал цены для захвата более крупных движений
  3. Добавить индикатор тренда для предотвращения ложных прорывов
  4. Оптимизировать стоп-лосс, чтобы не попасть в ловушку
  5. Увеличьте размер позиции для максимизации прибыли от выхода
  6. Оценка рентабельности в разных периодах

Резюме

Эта стратегия торгует прорывами ценового канала для выявления вспышек тренда. Преимущества - это простые ясные сигналы и легкая операция; недостатки - это сбои и неспособность управлять трендами. Параметровая оптимизация и комбинация стратегии могут преодолеть недостатки, сохраняя при этом преимущества. Это помогает трейдерам освоить применение методов ценового канала.


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

Больше