Зигзаг тренд после стратегии

Автор:Чао Чжан, Дата: 2024-01-08 10:13:24
Тэги:

img

Обзор

Эта статья представляет торговую стратегию под названием ZigZag Trend Following Strategy. Эта стратегия определяет ценовые тенденции с использованием индикатора ZigZag и открывает позиции, когда тенденции изменяются, чтобы следовать тренду. В сценарии Стратегии Пина индикатор ZigZag используется для подтверждения новых максимумов и минимумов цен. Когда цены проходят через линию индикатора ZigZag, он служит торговым сигналом. Сигнал покупки - это когда цена закрытия выше линии индикатора ZigZag, чтобы пойти в длинный; Сигнал продажи - это когда цена закрытия ниже линии индикатора ZigZag, чтобы пойти в короткий. Это может эффективно отслеживать среднесрочные и долгосрочные ценовые тенденции.

Принцип стратегии

Основой этой стратегии является использование индикатора ZigZag для определения экстремальных точек цен и отображения ценовых тенденций.

  1. Вычислите экспоненциальную скользящую среднюю EMA цены закрытия, включая три скользящие средние линии: быструю линию, среднюю линию и медленную линию.

  2. Судите, находятся ли цены в восходящем тренде, то есть, является ли текущая средняя линия выше средней линии предыдущей K-линии.

  3. Если в настоящее время он находится в восходящей тенденции, найдите самую низкую цену, подсчитанную с начала предыдущей волны низких точек в течение обнаруженного цикла, как значение ZigZag.

  4. Если в настоящее время он находится в тенденции к снижению, найдите самую высокую цену, подсчитанную с начала предыдущей волны высоких точек в течение обнаруженного цикла, как значение ZigZag.

  5. Таким образом, формируется индикатор ZigZag, отражающий крайние точки колебаний цен.

На этой основе мы используем линию ЗигЗага в качестве ориентира для оценки ценовой тенденции. То есть, когда цена растет и проходит через линию индикатора ЗигЗага, мы идем длинным; когда цена падает и проходит через линию индикатора ЗигЗага, мы идем коротким.

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

Преимущества использования индикатора ZigZag для определения ценовых тенденций и отслеживания ценовых экстремалов при установлении позиций:

  1. Может эффективно отфильтровывать рыночный шум и отслеживать основные тенденции.

  2. Торговые сигналы, установленные на прорывах новых максимумов и минимумов, могут эффективно приносить прибыль.

  3. Линии зигзага относительно гладкие, что может уменьшить ложные сигналы.

  4. Легко оптимизировать стратегии путем корректировки параметров ZigZag.

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

Основными рисками этой стратегии являются:

  1. Долгосрочное движение может быть задержано из-за сильных колебаний на рынке.

  2. Индикаторы ZigZag чувствительны к параметрам. Неправильные настройки могут упустить торговые возможности или генерировать ложные сигналы. Параметры должны быть проверены и оптимизированы соответствующим образом.

  3. Стратегии отслеживания трендов больше полагаются на трендовые рынки.

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

Направление оптимизации

Мы можем еще больше оптимизировать эту стратегию в следующих аспектах:

  1. Добавьте механизм стоп-лосса. Например, установите движущуюся стоп-лосс или стоп-лосс для амплитуды ретрейса цены.

  2. Сочетать с другими индикаторами для фильтрации позиций. Например, улучшить индикаторы импульса, чтобы обеспечить достаточный импульс; или индикаторы объема торговли, чтобы обеспечить высокий объем торговли.

  3. Принимать различные конфигурации параметров в соответствии с различными рыночными условиями (например, бычьи и медвежьи рынки).

  4. Проверить различные параметры линии EMA, чтобы найти наилучшую комбинацию параметров.

Заключение

Эта стратегия использует индикатор ZigZag для определения ценовых тенденций и установления позиций отслеживания вблизи крайних точек. Ее преимущество заключается в том, чтобы эффективно следовать тренду для получения прибыли. Она также имеет риск быть пойманной в ловушку. Мы можем установить стоп-лосс, оптимизировать параметры и портфель торговой стратегии для контроля рисков. Эта стратегия более подходит для средне- и долгосрочной торговли трендом. Если правильно контролировать и комбинировать, она может получить стабильную отдачу.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", 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, %")
length = input(4)
ExtremeDetection = input(4)
src = input(close)
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, ExtremeDetection)
plot(zigzag, color=black, linewidth=2)

//Signals
up = close > zigzag
dn = close < zigzag

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)


Больше