Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Просмотров:
40
Рейтинг:
(2)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Обзор

Практически каждый инструмент, который мы создаем для чтения графиков, остается в мире цифр. Этот же выходит за его пределы. Метод Symbolic Aggregate approXimation (SAX), представленный Джессикой Лин, Имоном Киохом и их коллегами в 2003 году, берёт отрезок ценового движения и преобразует его в короткую строку букв, например, bddcbbba. Как только фрагмент рынка превращается в слово, с ним можно делать все, что компьютерные науки уже умеют делать с текстом: сопоставлять, подсчитывать, хешировать, искать.

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

Само преобразование состоит из трёх этапов, каждый из которых имеет своё обоснование:

  • Z-нормализация окна, чтобы осталась только чистая форма. Рост курса EURUSD и рост цены на золото отображаются на одной и той же нормализованной кривой, если они растут одинаково.
  • Кусочно-агрегированная аппроксимация: разбить нормализованное окно на w равных сегментов и заменить каждый из них его средним значением. Окно из 48 баров с w = 8 превращается в восемь чисел, что представляет собой уменьшение размерности, сглаживающее шум по ходу процесса.
  • Дискретизация: сопоставить среднее значение каждого сегмента с буквой, используя точки разрыва, которые разделяют стандартную нормальную распределение на полосы с равной вероятностью, так что каждая буква априори имеет одинаковую вероятность.

Три этапа преобразования SAX для ценового окна

Алгоритм SAX: нормализуем окно по z, усредняем его по ячейкам, а затем сопоставляем каждую ячейку с буквой, используя гауссовы точки разрыва.

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

Перед использованием прочитайте следующее: этап z-нормализации, который делает SAX элегантным, намеренно отбрасывает уровень цен и волатильность, а в торговле именно они часто и являются тем, что вас интересует. Этот инструмент компенсирует это там, где может, измеряя каждый результат в единицах волатильности, преобладавшей в тот момент, но ограничение реально и не устраняется настройкой. Будьте готовы к тому, что вердикт «преимущества нет» будет встречаться чаще всего. На рынках, близких к случайному блужданию, это правильный ответ, а не сбой в работе.


Что отображает индикатор

Два объекта, оба из которых перестраиваются при закрытии нового бара.

Конус веера проецирует распределение аналогов в будущее, исходя из последнего закрытого бара. Сплошная линия отражает медианное будущее движение на каждом шаге, а пунктирные линии выше и ниже — 25-й и 75-й процентили, поэтому конус расширяется по мере того, как согласованность между предыдущими значениями ослабевает. Распределение на каждом шаге выражается в единицах ATR и умножается на текущий ATR для вывода на ось реальных цен, что позволяет прецедентам из спокойных и волатильных периодов входить в один и тот же конус. Конус рисуется только в случае бычьего или медвежьего вердикта, поэтому отсутствие конуса само по себе является информацией, а не сбоем в отображении.

Панель прогноза отображает цифры, скрытые конусом:

Строка
Что это означает
Слово
SAX-кодировка текущего окна, запрос, по которому фактически выполнялся поиск.
аналоги
Количество найденных прецедентов и их среднее расстояние совпадения. Большое количество при плохом среднем расстоянии — это более слабый случай, чем небольшое количество близких совпадений.
fwd H
Медиана движения вперед по горизонту, в кратных ATR и в процентах.
band
Диапазон от 25-го до 75-го процентиля этих движений вперёд: ширина конуса, выраженная числом.
up rate
Доля прецедентов, которые вообще выросли в цене, и диапазон. Медиана, склоняющаяся вверх при 51% доле роста, — это просто удача одного прецедента, а не тенденция.
ВЕРДИКТ
Бычий, медвежий, отсутствие преимущества, слишком мало аналогов или отсутствие данных.

Вердикт даётся намеренно с трудом. Сначала определяется «слишком мало аналогов», затем рассматривается случай «подбрасывания монеты», и только выборка, проходящая оба диапазона уверенности, получает направление: медианное движение должно превышать порог преимущества в терминах ATR, а доля роста должна выходить за пределы диапазона около 0,5. Невыполнение любого из этих условий означает отсутствие преимущества, независимо от того, что показывает медиана.

Аналоговый прогнозный индикатор SAX на графике EURUSD M30: конус веера и панель выводов

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


Ключевые особенности

Честность по самой сути

  • Отсутствие заглядывания в будущее. Окно результатов сопоставления должно строго заканчиваться до начала окна запроса, чтобы ничто из собственного будущего запроса не могло просочиться в его набор прецедентов. Это единственный защитный механизм, отделяющий поиск аналогов от подгонки кривой.
  • Результаты, нормализованные по ATR. Перемещения вперед выражаются в кратных величинах ATR, действовавшего на момент события, поэтому прецедент из спокойного периода и прецедент из периода резких колебаний находятся на сопоставимой основе. Это компенсация за то, что было утрачено при z-нормализации.
  • Вердикт, который может быть отрицательным. Инструмент воздерживается от прогноза и подавляет конус всякий раз, когда выборка слишком мала или склонность не является решающей по обоим показателям.

Настоящая библиотека SAX, а не её приближение

  • Z-нормализация, PAA, включая случай, когда длина окна не делится на длинну слова без остатка, гауссовы точки разрыва по пробиту Аклама, кодирование и функция MINDIST, которая доказательно задаёт нижнюю границу истинного расстояния. Ничего из этого ранее на платформе не существовало.
  • Поддерживаются алфавиты размером от 2 до 10 символов; точки разрыва вычисляются однократно при настройке и кэшируются.
  • Плоское окно отображается как плоское, а не кодируется незаметно: при стандартном отклонении, близком к нулю, нормализовать нечего, а выдумывание формы привело бы к появлению бессмысленного слова.
  • Евклидова метрика, рассчитанная методом перебора, поставляется вместе с производственным конвейером в качестве параметра, поэтому результаты прореживания можно проверить по ответу, который они должны воспроизводить, а не просто доверять им.

Практическое применение на реальном графике

  • Поиск запускается один раз на каждый закрытый бар, а не на каждый тик, и считывает историю, начиная с 1-го бара, так что формирующийся бар никогда не попадает ни в запрос, ни в набор прецедентов.
  • Размер панели определяется по фактически отображаемому тексту, поэтому ни при каком размере шрифта или содержании ничего не обрезается; также предусмотрены светлая и тёмная темы, чтобы текст был читаем на любом фоне графика.
  • Каждый объект графика имеет общий префикс и удаляется при вызове deinit, не оставляя «сирот».


Рекомендуемая настройка

Параметр
Рекомендуемое значение
Примечания
Символ
Любой ликвидный инструмент
Сопоставление форм по своей сути не зависит от масштаба. При разработке и на скриншоте использовалась пара EURUSD.
Таймфрейм
От M30 до H4
Требуется достаточный объем исторических данных, чтобы набор прецедентов был значимым. Окно, горизонт и сканирование истории измеряются в барах, поэтому они переносятся между таймфреймами без изменений.
История
6000 баров
Глубина сканирования по умолчанию. Чем больше данных, тем больше прецедентов и тем более устойчивое распределение, при этом время поиска увеличивается линейно.
Тема панели
Подбор под график
По умолчанию — тёмная. Переключитесь на светлую тему на белом графике, иначе текст не будет читаться.


Структура файлов

Один индикатор и два заголовка. Заголовки включаются в виде <SAX\...>, поэтому они должны находиться в отдельной подпапке SAX.

Файл
Роль
Описание
Include\SAX\SAXTransform.mqh
Преобразование
Z-нормализация, PAA, гауссовы точки разрыва, кодирование по словам и MINDIST с нижней границей. Можно использовать с любыми рядами данных, без привязки к графикам или торговле.
Include\SAX\SAXAnalogs.mqh
Поиск
Двухэтапное сопоставление «сначала отсеивание, затем ранжирование», защита от прогнозирования вперед, результаты, нормализованные по ATR, распределение по шагам, лежащее в основе конуса, и классификация вердиктов.
Indicators\SAX\SAXAnalog.mq5
Индикатор
Запускает поиск по каждому новому бару и рисует конус прогноза и панель вердиктов. Ничего не записывает в буферы; всё представляет собой объекты графика.


Входные параметры

Вход
По умолчанию
Что контролирует
InpWinLen
48 баров
Длина окна запроса: какая часть недавней формы должна совпадать, чтобы такт считался прецедентом.
InpHorizon
12 баров
Горизонт прогнозирования: насколько далеко в известное будущее каждого прецедента измеряется результат и насколько далеко простирается конус.
InpWordLen, InpAlphabet
8, 4
Разрешение SAX. Более длинные слова и более обширные алфавиты обеспечивают более точную дискриминацию и, следовательно, реже находят совпадения; более короткие и грубые собирают больше прецедентов с менее чётким сходством.
InpMaxAnalogs, InpMinAnalogs
50, 10
Количество наиболее близких прецедентов, которые следует сохранить, и минимальное количество образцов, ниже которого вердикт принудительно устанавливается как «слишком мало», независимо от того, что говорят эти немногие.
InpEdgeATR
0,25
Порог уверенности: медиана движения вперед должна превышать четверть ATR, чтобы вообще считаться тенденцией.
InpMetric
MINDIST
Двухэтапный конвейер «отсев-ранжирование», который используется в производственной среде. Переключитесь на Euclid для перебора всех кандидатов методом «грубой силы»: тот же рейтинг, без отсева, полезно в качестве базового показателя правильности и скорости.
InpATRPeriod
14
ATR, используемый для нормализации результатов и масштабирования конуса по оси цены.
InpMaxHistory
6000 баров
На какой период назад проводить поиск прецедентов.
Цвета, угол, тема
Синий / красный / серый, вверху слева, темная
Цвета выделения конуса и панели в зависимости от вердикта, цвета линии полосы, угла привязки панели, а также светлой или тёмной темы.


Основа исследования

Реализация следует оригинальной работе по SAX, выполненной Джессикой Лин, Имоном Киохом и их коллегами, на странице которых собраны соответствующие статьи.

SAX — это не «хрустальный шар», предсказывающий цены, и данный инструмент чаще всего будет сообщать об отсутствии явного преимущества, чем о чем-либо другом. Его ценность заключается в редких, хорошо обоснованных случаях, когда множество подлинных прецедентов указывает в одном и том же направлении, а также в строгости инструмента, который отказывается притворяться иначе. Эта же библиотека открывает возможности для дальнейших исследований: использование слов SAX в качестве категориальных признаков для модели машинного обучения, обнаружение мотивов и несоответствий для выявления аномалий или построение марковской модели переходов на основе словарного запаса.

В сопутствующей статье выводится преобразование и нижняя граница, подробно описывается процесс поиска и его условия, а также демонстрируется успешное прохождение тестового набора: «Символическая агрегатная аппроксимация (SAX) в MQL5: поиск исторических аналогов и прогнозирование».

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/75543

Trade Journal and Performance Analytics Dashboard Trade Journal and Performance Analytics Dashboard

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

Broker Profiler Broker Profiler

Prints the symbol properties that make the same EA behave differently on another broker: trading hours, contract size, tick value, spread statistics, swap cost and real session coverage. Read-only, does not trade.

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.