preview
Треугольные и пилообразные волны: инструменты для трейдера

Треугольные и пилообразные волны: инструменты для трейдера

MetaTrader 5Индикаторы | 28 марта 2025, 12:39
450 0
Aleksej Poljakov
Aleksej Poljakov

Введение

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

Если речь заходит о волновом анализе, то сразу же вспоминается волновая теория  Эллиотта. Согласно этой теории, цена движется циклически: сначала происходит импульсное движение (волна роста), затем коррекция (волна падения). Эти движения образуют фрактальную структуру, где каждая большая волна состоит из меньших волн. А те, в свою очередь, состоят из еще более мелких.

Таким образом, и синусоиды, и волны Эллиотта — это две разные концепции, но обе связаны с идеей периодичности и повторяемости процессов. На первый взгляд кажется, что все эти волновые теории давно изучены, опробованы, и придумать что-то новое невозможно. Но это впечатление обманчиво, на старом фундаменте всегда можно построить новое здание. Этим мы сейчас и займемся.


Треугольные волны

Все мы привыкли к тому, что волны выглядят волнообразно. Но волны могут иметь и другие формы. Про квадратные волны я недавно читал статью, а вот про треугольные волныслышу впервые. На самом деле, треугольные волны уже есть в терминале MetaTrader, но компания MetaQuotes тщательно охраняет этот секрет.

Давайте, возьмем 3 последовательных значения SMA с периодом 3, и найдем их среднее. У нас получится скользящая средняя с методом усреднения MODE_SMMA. Расчеты будут выглядеть так:

Теперь, давайте посмотрим на эту проблему 3 тел индикаторов с другой стороны. Любой линейный индикатор — это просто набор коэффициентов. С этими коэффициентами можно производить любые арифметические действия. Для примера рассмотрим суммирование трех SMA. Сначала выпишем коэффициенты каждого индикатора отдельно, а потом сложим те коэффициенты, которые относятся к одной и той же цене. В результате у нас получится треугольная оконная функция.

price[0]price[1]
price[2]
price[3]
price[4]
111


111


111
12321

Но треугольное окно можно получить и более простым способом. Сначала нам нужно задать период индикатора. Тогда его коэффициенты можно легко рассчитать по формуле:

Теперь нам необходимо нормализовать эти коэффициенты. Сначала нужно найти сумму всех коэффициентов. После чего, разделить каждый коэффициент на полученное значение. Такой индикатор будет сглаживать цены, но его отличие от SMMA будет очень небольшим.

Я поставлю задачу посложней и интересней. С помощью коэффициентов треугольного окна построить индикатор, который будет реагировать на такие изменения цены.

Такой индикатор будет состоять из двух частей. Первая часть — самая простая, все ее коэффициенты равны 1. Вторая часть — немного сложнее. Сначала нам нужно рассчитать коэффициенты треугольного окна. После этого, нам нужно нормализовать их так, чтобы у нас получился осциллятор. Для этого найдем сумму коэффициентов:

После этого, нужно пересчитать каждый коэффициент по формуле:

Теперь, давайте посмотрим, как такой индикатор применять на практике. Пусть, период индикатора будет равен 5. Тогда, индикатор будет состоять из 2 массивов с коэффициентами:

С помощью этих коэффициентов нам нужно найти 2 веса:

Каждый из этих весов является отдельным индикатором. W0 — это всем известная SMA, а W1 — осциллятор, построенный на основе треугольного окна. С помощью этих весов мы можем получить значения индикатора:

На графике он может выглядеть так:

Первого успеха мы добились. Теперь давайте попробуем улучшить наш индикатор. Например, возьмем индикатор с периодом равным 24. Основную треугольную волну строить мы уже умеем. Но в этот период укладывается две волны с периодом 12. Также целое число циклов получится для волн с периодами 8, 6, 4 и 3. Давайте попробуем добавить эти волны в наш индикатор. Все что нам нужно сделать — это немного изменить расчет коэффициентов. Если период волны PW укладывается в период индикатора целое число раз, то значения коэффициентов можно найти по формуле:

Нормирование коэффициентов, расчет весов и индикатора остается прежним.

Конечно же, чем больше волн будет в индикаторе, тем лучше он будет сглаживать цены. Но волны с маленькими периодами более чувствительны к шумам, и их применение может быть не всегда оправданно. Поэтому добавим в индикатор возможность выбора количества волн.

Основное достоинство этого индикатора — сглаживание цены. Также этот индикатор может выявить и подчеркнуть волнообразные движения цены, если таковые имеются.

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


Пилообразные волны

Тренд возникает тогда, когда какое-либо направление движения цены получает преимущество над другим. Например, движение цены вверх больше и чаще, чем движение вниз. То есть, тренд — это всегда нарушение симметрии. Следовательно, для выделения линейного тренда нам нужно что-то асимметричное и линейное. Этим требованиям отвечает пилообразная волна.

На самом деле, пилообразные волны уже есть в терминале MetaTrader, но… впрочем, я уже повторяюсь. Возьмем индикатор LWMA. Его коэффициенты можно рассчитать так:

То есть, индикатор LWMA — это только один зубчик пилы. Одного зубчика нам не хватит, нам нужно больше зубцов. Поэтому, коэффициенты пилообразной волны с периодом PW мы будем рассчитывать так:

Все остальные расчеты остаются такими же, как и с треугольными волнами.

Пилообразные волны рассматривают любое движение цены как тренд. Первая волна показывает общий тренд. Вторая волна делит тренд на 2 или 3 части (в зависимости от периода индикатора). Следующие волны делят эти части еще дальше. Можно сказать, что индикатор строит трендовые каналы. И чем ближе друг к другу располагаются линии канала, тем сильнее выражен тренд.

У такого индикатора есть одна интересная особенность. Если количество волн четное, то индикатор будет сглаживать тренд, усреднять его. При нечетном числе волн — индикатор будет стремиться максимально точно выделить тренд.


Нет предела совершенству

Вернемся к треугольным волнам. Пусть период индикатора будет равен 6. В него входят 2 треугольные волны с периодом 3. Коэффициенты этих волн будут такими:

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

То есть, мы разделили две волны по времени. Теперь, направление и вес каждой волны никак не зависит от другой. Благодаря такому разделению, индикатор станет более гибким и будет точнее отслеживать изменения цены.

Такое же разделение можно применить и к пилообразным волнам. При этом получается одна интересная особенность: если две соседние пилообразные волны будут направлены в разные стороны, то они образуют одну треугольную волну.

Индикаторы в виде оконных функций встречаются крайне редко. И мы можем переделать индикатор волн так, чтобы он отображался в виде линии. Для этого нам нужно рассчитывать только последнее значение индикатора. При таком подходе, трейдер не сможет оценить, какие факторы влияли на индикатор, но зато он сможет увидеть движение индикатора здесь и сейчас.

Расчет параметров волн происходит в виде колебаний около среднего значения. Если отбросить это среднее, то мы сможем построить осциллятор. Этот осциллятор будет суммировать волны разных периодов.  Полученная сумма будет показывать, в какую сторону и насколько сильно отклоняются волны от среднего значения цены. В результате, у нас получились 2 новых индикатора.

Индикаторы приобрели привычный вид. Но перестали отображать, собственно, волны.


Торговые стратегии

Индикаторы мы с вами построили. Теперь нам необходимо проверить их пригодность для трейдинга. Сначала я использую простую стратегию — пересечение индикатора и цены:

  • если цена пересекла линию индикатора снизу вверх, то советник откроет позицию buy и закроет все позиции sell;
  • если цена пересекла линию индикатора сверху вниз, то советник отроет позицию sell и закроет все позиции buy.

Несмотря на такой простой подход, стратегия выглядит вполне работоспособной.

Немного изменим эту стратегию. Вместо цены, будем использовать показания другого индикатора. Все остальные правила остаются прежними. Применение разных методов выделения волн и трендов может повлиять на результаты.

Для следующей стратегии, я воспользуюсь одной особенностью оконных функций — переписывать все значения, после получения нового значения цены. Например, вполне возможна ситуация, когда на предыдущем баре пересечение 2 оконных функций было, а при открытии нового бара это пересечение исчезло. Точно так же, пересечение может появиться не на текущем баре, а дальше в истории.

Советник будет отслеживать пересечение двух индикаторов на всем их протяжении и давать сигнал на открытие позиций вне зависимости от того, на каком баре это пересечение произошло. Однако, при таком подходе сигналы могут запаздывать. Чтобы этого избежать, я добавлю фильтр. Сигналы будут считаться истинными, если цена открытия позиции будет лучше предыдущей. Для позиций buy цена должна быть ниже предыдущей, для позиций sell — выше. Звучит довольно рискованно, но попробовать все равно нужно.

Этой стратегии необходимо добавить какой-либо другой способ закрытия позиций — стоп-лосс, тейк-профит, трейлинг-стоп. Тогда она может давать более устойчивые результаты.

Треугольные и пилообразные волны могут выделять тренды. На этой их особенности я построю торговую стратегию с такими правилами:

  • если текущее значение индикатора меньше всех предыдущих, то советник откроет позицию buy;
  • если текущее значение индикатора больше всех предыдущих, то будет открыта позиция sell.

Стратегия выглядит просто, но перспективы у нее есть.

Еще одну стратегию можно построить на осцилляторе. Правила стратегии будут основываться на возврате к среднему. Условия для открытия позиций buy — линия осциллятора достигла локального минимума, и этот локальный минимум лежит ниже установленного уровня. Для открытия позиций sell правило звучит так — линия осциллятора достигла локального максимума, и этот максимум находится выше установленного уровня.

Треугольные и пилообразные волны — это полезный инструмент технического анализа. Эти волны можно использовать как в качестве основы торговых стратегий, так и в качестве дополнительных фильтров. С их помощью можно определять возможные точки входа в рынок и выхода из него. Однако, они всегда должны использоваться в сочетании с другими методами анализа и разумным управлением рисками.


Заключение

Итак, мы рассмотрели различные подходы к использованию треугольных и пилообразных волн в трейдинге. От простого сглаживания цены до построения сложных сочетаний, способных выявлять волнообразные движения и тренды. К сожалению, в одной статье невозможно рассмотреть все варианты применения этих волн. Слишком обширна эта тема, но вы всегда можете развивать ее дальше. Перспективы изучения особенностей и применения этих волн довольно благоприятны. Даже самые простые стратегии, основанные на этих волнах, могут быть прибыльными, хотя и требуют тщательной доработки.

При написании статьи были использованы следующие программы:

НазваниеТипОсобенности
Waveиндикатор
  • Type - тип волны;
  • iPeriod - период индикатора;
  • NumWave - количество волн, которые будут использоваться при расчете индикатора;
  • Shift - сдвиг линии индикатора в барах.

Минимальный период для треугольных волн равен 3, для пилообразных - 2. Количество волн позволяет оставить только низкочастотные составляющие сигнала.

Wave Linиндикатор
Отображает только самое последнее известное значение волн.
Wave Oscиндикатор
Рассчитывает и суммирует только веса волн.
EA WaveэкспертПростая стратегия пересечения линий индикатора и цены.
EA Wave 2эксперт
Стратегия основана на пересечении 2 линий индикатора на двух последних барах.
EA Wave 3эксперт
Стратегия основана на пересечении 2 линий индикатора на всех барах.
EA Wave 4эксперт
Стратегия построена на достижении максимума/минимума последнего значения индикатора.
EA Wave Oscэксперт
Стратегия работает на значениях осциллятора.
Прикрепленные файлы |
Wave.mq5 (5.87 KB)
Wave_Lin.mq5 (5.91 KB)
Wave_Osc.mq5 (5.83 KB)
EA_Wave.mq5 (3.48 KB)
EA_Wave_2.mq5 (3.73 KB)
EA_Wave_3.mq5 (4.17 KB)
EA_Wave_4.mq5 (3.67 KB)
EA_Wave_Osc.mq5 (3.51 KB)
Переосмысливаем классические стратегии в MQL5 (Часть II): FTSE100 и Гилты Великобритании Переосмысливаем классические стратегии в MQL5 (Часть II): FTSE100 и Гилты Великобритании
В данной серии статей мы исследуем популярные торговые стратегии и попытаемся улучшить их с помощью ИИ. В сегодняшней статье мы вновь рассмотрим классическую торговую стратегию, построенную на взаимосвязи между фондовым рынком и рынком облигаций.
Самооптимизирующийся советник на языках MQL5 и Python (Часть III): Реализация алгоритма Boom 1000 Самооптимизирующийся советник на языках MQL5 и Python (Часть III): Реализация алгоритма Boom 1000
В этой серии статей мы обсуждаем создание советников, способных автономно подстраиваться под динамичные рыночные условия. В сегодняшней статье мы попытаемся настроить глубокую нейронную сеть для синтетических рынков Deriv.
MQL5-советник, интегрированный в Telegram (Часть 5): Отправка команд из Telegram в MQL5 и получение ответов в реальном времени MQL5-советник, интегрированный в Telegram (Часть 5): Отправка команд из Telegram в MQL5 и получение ответов в реальном времени
В этой статье мы создадим несколько классов для облегчения взаимодействия в реальном времени между MQL5 и Telegram. Мы займемся извлечением команд из Telegram, их декодированием и интерпретацией, а также отправкой соответствующих ответов. Под конец мы протестируем эти взаимодействия и убедимся в их правильной работе в торговой среде.
Применение теории игр в алгоритмах трейдинга Применение теории игр в алгоритмах трейдинга
Создаем адаптивный самообучающийся торговый советник на основе машинного обучения DQN, с многомерным причинно-следственным выводом, который будет успешно торговать одновременно на 7 валютных парах, причем агенты разных пар будут обмениваться друг с другом информацией.