preview
Функции Уолша в современном трейдинге

Функции Уолша в современном трейдинге

MetaTrader 5Примеры |
782 0
Aleksej Poljakov
Aleksej Poljakov

Введение

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

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

Цель статьи — показать, каким образом функции Уолша могут быть применены в торговом анализе. В рамках материала рассматриваются:

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

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


Свойства функций Уолша. Преимущества и ограничения

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

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

Главный недостаток этих функций — сложность интерпретации результатов. Возьмем для примера временной ряд со значениями: 1, 2, 1, 2. Применим к нему функции Уолша 1 и 2 порядка.

Тренда нет, и здесь все ясно. А вот четную функцию я интерпретировал как шум. И его тоже нет. Теперь я добавлю к этому временному ряду трендовую компоненту: 0, 1, 2, 3. Снова проводим вычисления.

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

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

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


Прогнозирование с помощью функций Уолша

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

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

Давайте посмотрим, как можно использовать функции Уолша для прогнозирования. Функция 0 порядка является, по сути, всем известной SMA. Одной из особенностей этого индикатора является его следование за трендом. Растет цена, растет и индикатор. Цена падает, индикатор тоже начинает снижаться. То есть, для принятия решения на открытие или закрытие позиции трейдеру желательно знать, каким будет значение SMA через определенное количество баров.

Значения SMA на исторических данных распределены довольно равномерно. Хотя в этом распределении есть некоторые аномалии, но они не столь существенны, чтобы на их основе можно было строить какие-либо прогнозы.

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

С этой плотностью вероятности (PDF) мы можем прогнозировать будущее значение SMA. Текущее значение этого индикатора нам известно. С большой долей уверенности можно предполагать, что разность между будущим и текущим значениями SMA будут подчиняться найденному распределению. Таким образом, мы сможем оценить и будущее значение SMA, и вероятность того, что оно будет именно таким.

На основе этих PDF можно построить прогнозную модель. Алгоритм этой модели довольно прост. Сначала нам нужно рассчитать текущее значение SMA. С помощью PDF функции Уолша 1 порядка найти уровни, в пределах которых будет находиться значение SMA в будущем. Для этого нам нужно суммировать текущее значение SMA с минимальным и максимальным значениями PDF.

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

Зная эти вероятности, мы можем найти математическое ожидание будущего значения SMA.

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

С помощью функций Уолша можно построить и более интересный для трейдера прогноз. Функция 1 порядка показывает значение текущего линейного тренда. Если мы добавим функцию 2 порядка с удвоенным периодом, то мы сможем оценить изменение тренда в будущем. Алгоритм прогнозирования останется прежним — мы собираем статистику по каждой функции отдельно, и по значению текущего тренда оцениваем его ожидаемое значение в будущем.

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


Модернизируем классику

Как я уже говорил, одним из ограничений функций Уолша является их строго заданный период. Если мы, например, решим построить систему функций 3 порядка, то их период будет равен 8. Но это ограничение можно легко обойти. Все функции Уолша построены на периодических функциях, поэтому мы можем увеличивать их период в любое целое число раз. Эта возможность позволит нам строить более гибкие индикаторы.

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

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

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

У вас может возникнуть закономерный вопрос: а не путаю ли я причину со следствием? Ведь это индикатор является следствием, а цена —причиной. Индикатор следует за ценой, а не наоборот. Представьте, что мы можем наблюдать путь пьяного моряка с собакой. Нам неизвестно: может, это моряк потянул собаку за собой, а может, это собака пошла по своим делам, и моряку пришлось идти за ней. Как бы там ни было, но путь моряка нам предсказать проще — он просто хаотичен. А вот путь собаки предсказать сложнее — к хаосу моряка добавляется хаос самой собаки. В данном случае, индикатор — это моряк, а цены — его собака. И нам проще следить за моряком, чем за ценами. Но как строить такой прогноз? Пока нам это неизвестно.

Мы можем оценить длину поводка, если вычтем из цены значение индикатора. Но гораздо интереснее узнать, как функции Уолша оценивают текущее движение цены. Если мы отбросим функцию 0 порядка, то у нас получится осциллятор, который будет показывать силу и направление тренда.

Как можно увидеть, получившийся осциллятор справляется с этой задачей.


Строим торговую стратегию

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

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

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


вверх вниз
вверх 0.8 0.2
вниз 0.3 0.7

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

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

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

Зная этот шаг, мы можем узнать, в каком состоянии находился индикатор в любой момент времени.

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

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

Торговая стратегия может быть следующей. С помощью матрицы вероятностей я могу прогнозировать будущие состояния индикатора; на каждом шаге прогноза я буду выбирать наиболее вероятное состояние; позиции я буду открывать в зависимости от направления и силы прогноза; закрытие позиций я буду осуществлять с помощью простейшего трейлинг-стопа. Результат применения такой стратегии может выглядеть так:

Применение марковских цепей усложняет стратегию. Свойства цепи зависят от количества состояний цепи. Если состояний слишком мало или много, то цепь потеряет свои способности к обучению и прогнозированию. Поэтому, подбор оптимального числа состояний становится очень важной задачей для трейдера. Несмотря на это, цепи Маркова представляют собой хорошую математическую модель, которую можно использовать в трейдинге.


Заключение

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

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

Название Тип Описание
SMA Trend PDF скрипт

Скрипт строит распределение для SMA и тренда.

  • Type - тип индикатора;
  • iPeriod - период SMA.
Expected SMA индикатор

Прогноз SMA

  • PeriodSMA - период индикатора;
  • NumBar - индекс бара, для которого строится прогноз.
Expected Trend индикатор

Индикатор показывает текущее и прогнозное значения тренда.

  • HalfPeriod - полупериод тренда;
  • BarsHistory - с какого бара начинать отрисовку линий.
Extended Walsh Functions индикатор

Индикатор модернизированных функций Уолша.

  • P - порядок системы функций;
  • N - множитель периода функций;
  • Noise - уровень подавления шума.
Extended Walsh Oscillator индикатор
Осциллятор, построенный на модернизированных функциях Уолша.
EA Walsh Markov эксперт

Эксперт построенный на функциях Уолша и цепях Маркова.

  • State - количество состояний;
  • Forward - количество баров, на которое делается прогноз;
  • MinLvl - минимальное изменение состояний, для открытия позиций;
  • Profit - прибыль позиции для запуска трейлинг-стопа.
Прикрепленные файлы |
SMA_Trend_PDF.mq5 (3.39 KB)
Expected_SMA.mq5 (12.05 KB)
Expected_Trend.mq5 (6.67 KB)
EA_Walsh_Markov.mq5 (11.44 KB)
Знакомство с языком MQL5 (Часть 24): Создание советника для торговли по графическим объектам Знакомство с языком MQL5 (Часть 24): Создание советника для торговли по графическим объектам
В этой статье вы научитесь созданию советника, который обнаруживает зоны поддержки и сопротивления, нарисованные на графике, и автоматически исполняет сделки на их основе.
Нейросети в трейдинге: Пространственно-управляемая агрегация рыночных событий (STFlow) Нейросети в трейдинге: Пространственно-управляемая агрегация рыночных событий (STFlow)
Статья знакомит с фреймворком STFlow, который способен формировать устойчивое совместное представление текущего состояния рынка и динамики последних событий, обеспечивая высокую чувствительность к микроимпульсам при сохранении стабильности обработки. Реализован базовый модуль ICE, который аккумулирует потоки цены и событий, создавая надёжный фундамент для дальнейшей агрегации и анализа.
От новичка до эксперта: Торговля с временной фильтрацией От новичка до эксперта: Торговля с временной фильтрацией
Просто потому, что тики постоянно прибывают, это не значит, что каждый момент - это возможность торговать. Сегодня мы подробно изучаем искусство выбора времени, сосредоточившись на разработке алгоритма временной изоляции, который поможет трейдерам определять наиболее благоприятные рыночные периоды и торговать в них. Развитие этой дисциплины позволяет розничным трейдерам более точно ориентироваться в институциональных сроках, где точность и терпение часто определяют успех. Присоединяйтесь к этой дискуссии, поскольку мы исследуем науку тайминга и выборочного трейдинга с помощью аналитических возможностей MQL5.
Машинное обучение и Data Science (Часть 34): Разложение временных рядов, раскрываем саму суть фондового рынка Машинное обучение и Data Science (Часть 34): Разложение временных рядов, раскрываем саму суть фондового рынка
В мире, переполненном шумными и непредсказуемыми данными, выявление значимых закономерностей может быть непростой задачей. В этой статье мы рассмотрим сезонное разложение (seasonal decomposition) — мощный аналитический метод, который помогает разделить данные на ключевые компоненты: тренд, сезонные закономерности и шум. Разбив данные на такие составляющие, мы можем выявить скрытые закономерности и работать с более чистой и понятной информацией.