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


Дата создания: 2023-09-21 10:59:55 Последнее изменение: 2023-09-21 10:59:55
Копировать: 0 Количество просмотров: 647
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия основана на торговле в ценовом канале 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")