Стратегия торговли по тренду на основе индикатора ZigZag


Дата создания: 2024-01-08 10:13:24 Последнее изменение: 2024-01-08 10:13:24
Копировать: 0 Количество просмотров: 1089
1
Подписаться
1617
Подписчики

Стратегия торговли по тренду на основе индикатора ZigZag

Обзор

Стратегия, описанная в этой статье, называется “Стратегия следования тренду ZigZag” (ZigZag Trend Following Strategy). Эта стратегия использует индикатор ZigZag, чтобы идентифицировать ценовые тенденции и открывать позиции, чтобы отслеживать тенденцию при обратном тренде. В коде Strategy Pine индикатор ZigZag используется для подтверждения новых высоких и новых низких точек цены.

Стратегический принцип

В основе этой стратегии лежит использование индикатора ZigZag для определения критических точек цены и показания тенденции цены. Индикатор ZigZag состоит из экспоненциальных движущихся средних высоких и низких цен. В частности, он состоит из следующих шагов:

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

  2. Определяйте, есть ли тенденция к повышению цены. То есть, является ли текущая средняя линия выше средней линии предыдущей линии K.

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

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

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

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

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

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

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

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

  3. ZigZag-линии более гладкие, что позволяет уменьшить количество ложных сигналов.

  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)