preview
Движение цены: Математические модели и технический анализ

Движение цены: Математические модели и технический анализ

MetaTrader 5Торговые системы | 16 мая 2025, 12:14
607 0
Aleksej Poljakov
Aleksej Poljakov

Введение

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

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

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

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


Простые модели

Давайте рассмотрим торговую стратегию с такими правилами:

  • при открытии нового бара закрывается ранее открытая позиция и открывается новая;
  • направление открываемой позиции определяется случайно.

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

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

Как вы можете видеть, за 800 проходов оптимизатора нет даже намека на какой-нибудь выигрыш. Такой результат может быть вызван влиянием спреда. Из-за спреда разница между ценами открытия и закрытия позиций может быть даже отрицательной. Чтобы избежать этого, можно перейти на какой-нибудь старший таймфрейм. Но такой переход равносилен увеличению времени удержания позиции. Учтем полученные результаты и внесем несколько поправок в торговую стратегию:

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

Значения стоп-лосса и тейк-профита я взял из этой статьи. Оптимизируемый параметр остается прежним. Судя по всему, изменения пошли на пользу стратегии. У нас появились выигрышные варианты.

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

В данном случае, мы получим такое значение:

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

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

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

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

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

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

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


Линейный тренд

Все трейдеры любят тренды. Особенно, если направления позиции и тренда совпадают. Линейный тренд задается простой формулой:

В этом уравнении, в качестве независимой переменной, используется время. Компания MetaQuotes предлагает отсчитывать время с 1 января 1970 г. А если они ошиблись? Может быть, надо было начать отсчет времени с 29 февраля? Давайте попробуем избавиться от этого недостатка, и найдем самое точное начало времен.

Уравнения линейного тренда для двух последовательных баров выглядят так:

Теперь, давайте найдем разности между этими уравнениями:

Если упростить это уравнение, то у нас получится такое выражение:

Разницу во времени удобнее выразить в количестве баров между отсчетами цены. Тогда, формула станет еще проще:

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

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

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

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

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

Индикатор, построенный по этой формуле, выглядит так.

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

Результаты есть, но сам индикатор нуждается в дополнительном изучении и доработке. Изменение скорости тренда может также подчиняться своему тренду. И эти тренды тоже нужно выделять. Сумма таких трендов (если они действительно будут) позволит получить более точные сигналы.


Блуждание по графику

Одна из интересных моделей связана со случайным блужданием. Если движение цены случайно, то расстояние, пройденное ценой, и время связаны между собой таким образом:

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

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

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

Теперь, нам нужно нормализовать полученные расстояния. Для этого, все значения нужно разделить на самое маленькое пройденное расстояние R[N-1].

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

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

Теперь, давайте посмотрим, как меняется показатель степени на протяжении истории.

По этому параметру можно судить о характере движения цены. Если он близок к 0, то это указывает на слабое изменение цены — флет. При линейном тренде этот показатель равен 1. Показатель степени меняется в очень широком диапазоне от 0 до примерно 2.5. Из-за этого становятся важными индикаторы, которые отдают предпочтения последним значениям цены. К таким индикаторам относятся всем известные EMA и LWMA.

А мы попробуем написать индикатор, веса которого определяются с помощью фигурных чисел. Пусть, L — уровень числа. Тогда n-ое многоугольное число можно рассчитать по формуле:

Получившиеся числа будут весовыми коэффициентами индикатора. Такой индикатор будет реагировать на изменение цены быстрее, чем LWMA. Но его "память" длиннее, чем у EMA, поэтому он будет лучше сглаживать временной ряд.

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

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


Заключение

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

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

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

НазваниеТипУправление
EA Picky Brideэксперт
  • Seed - инициализирующее число;
  • Duration - предполагаемое время удержания позиции, не менее 1.
Errorскрипт
  • Duration - количество баров, для которых рассчитывается приращение цены, не менее 1;
  • ScreenShot - при включении скрипт сохраняет рисунок в папке Files.
Price Incrementsиндикатор
  • Percent - задает количество процентов самых больших и самых маленьких значений, которые нужно отбросить при построении прогноза. Допустимые значения 1 - 99.
Trendиндикатор
  • iPeriod - период индикатора, не менее 1.
EA Trendэксперт

Wanderingиндикатор
  • iPeriod - период индикатора, не менее 3.
Figurative Numbersиндикатор
  • iPeriod - период индикатора, не менее 2.
  • Lvl - задает тип фигурного числа. При 1 - SMA, при 2 - LWMA, далее следуют классические фигурные числа.
EA Figurative Numbersэксперт

Прикрепленные файлы |
EA_Picky_Bride.mq5 (5.62 KB)
Error.mq5 (2.19 KB)
Trend.mq5 (2.36 KB)
EA_Trend.mq5 (3.28 KB)
Wandering.mq5 (3.26 KB)
Создаем интерактивную MQL5-панель с использованием класса Controls (Часть 1): Настройка панели Создаем интерактивную MQL5-панель с использованием класса Controls (Часть 1): Настройка панели
В этой статье мы создадим интерактивную торговую панель с использованием класса Controls в MQL5, предназначенную для оптимизации торговых операций. Панель содержит заголовок, кнопки навигации для торговли, закрытия и информации, а также специализированные кнопки для заключения сделок и управления позициями. К концу статьи у нас будет базовая панель, готовая к дальнейшим улучшениям.
Нейросети в трейдинге: Обобщение временных рядов без привязки к данным (Базовые модули модели) Нейросети в трейдинге: Обобщение временных рядов без привязки к данным (Базовые модули модели)
Продолжаем знакомство с фреймворком Mamba4Cast. И сегодня мы погрузимся в практическую реализацию предложенных подходов. Mamba4Cast создавался не для долгого прогрева на каждом новом временном ряде, а для мгновенного включения в работу. Благодаря идее Zero‑Shot Forecasting модель способна сразу выдавать качественные прогнозы на реальных данных без дообучения и тонкой настройки гиперпараметров.
Переосмысливаем классические стратегии (Часть IX): Анализ на нескольких таймфреймах  (II) Переосмысливаем классические стратегии (Часть IX): Анализ на нескольких таймфреймах (II)
В сегодняшнем обсуждении мы рассмотрим стратегию анализа на нескольких таймфреймах, чтобы узнать, на каком таймфрейме наша модель искусственного интеллекта работает лучше всего. Наш анализ приводит нас к выводу, что месячный и часовой таймфреймы дают модели с относительно низким уровнем ошибок по паре EURUSD. Мы использовали это в своих интересах и создали торговый алгоритм, который делает прогнозы с помощью искусственного интеллекта на месячном таймфрейме и совершает сделки на часовом таймфрейме.
От новичка до эксперта: Совместная отладка на MQL5 От новичка до эксперта: Совместная отладка на MQL5
Политика «решения проблем» может создать четкую программу для овладения сложными навыками, такими как программирование на MQL5. Такой подход позволяет сконцентрироваться на решении проблем, одновременно развивая свои навыки. Чем больше проблем вы решаете, тем более продвинутый опыт передается в ваш мозг. Лично я считаю, что отладка - это самый эффективный способ освоить программирование. Сегодня мы рассмотрим процесс очистки кода и обсудим лучшие методы преобразования запутанной программы в ясную и функциональную. Прочтите эту статью и откройте для себя ценную информацию.