Unknown
Unknown личный блог
13 сентября 2025, 18:39

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 2 — от кирпичиков к стенам)

Введение: От алфавита к словам

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

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


Часть 1: Главный вызов — проклятие большой размерности

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

Если одиночный бар может находиться в одном из 153 состояний, то для паттерна, состоящего всего из 5 баров, теоретическое число возможных комбинаций составит 153⁵ — это астрономическая величина, превышающая 8 миллиардов. Собрать репрезентативную статистику по каждому из таких паттернов на исторических данных попросту невозможно. Подавляющее большинство этих комбинаций никогда не встречались в истории и являются «мёртвыми» вариантами.

Реальное ограничение и практический подход

Наша цель — не описать все теоретически возможные паттерны, а выделить те, которые реально существуют и несут статистическую ценность. Ориентируясь на данные MetaTrader 5 (история EURUSD с 1971 года, что составляет примерно 25 миллионов баров M1), мы можем позволить себе оперировать примерно 1-2 миллионами уникальных комплексных паттернов. Это наш «бюджет» сложности.

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


Часть 2: Три принципа сжатия информации

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

Принцип 1: Отказ от случайного шума в пользу сути

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

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

  • Для текущего, формирующегося бара его текущее положение (например, у вершины или у основания) — это крайне важный сигнал. Это уже не шум, а отражение реального баланса сил здесь и сейчас.

Так мы отделяем случайное от закономерного, фокусируясь на том, что действительно имеет значение.

 

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 2 — от кирпичиков к стенам)

Принцип 2: Иерархическая точность — чем ближе, тем важнее

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

Мы разбиваем анализ на четыре отношения между соседними барами:

  • Бар 5 и Бар 4 (фон): Классификация из 4 паттернов. Грубая оценка: был ли рост, падение или консолидация.

  • Бар 4 и Бар 3 (контекст): Классификация из 30 паттернов. Добавляется больше деталей о силе и типах движения.

  • Бар 3 и Бар 2 (предыстория): Классификация из 52 паттернов. Детализация увеличивается, мы почти в настоящем.

  • Бар 2 и Бар 1 (текущая динамика): Классификация из 80 паттернов. Максимально детальное описание самого актуального взаимодействия.

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

 

От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 2 — от кирпичиков к стенам)
От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 2 — от кирпичиков к стенам)


 

Принцип 3: Масштабируемый взгляд — учёт волатильности

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

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

 


От зрения к мышлению: как создать алгоритм, который "понимает" рынок (Часть 2 — от кирпичиков к стенам)

Заключение: Строим мост от данных к смыслу

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

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

Что дальше? Практическая проверка гипотезы

Следующий шаг — превратить эти паттерны в рабочий инструмент. Мы запустим специального советника-сборщика в тестере MetaTrader 5. Его задача — пройти по истории и для каждого обнаруженного паттерна собрать исчерпывающую статистику: где оказывалась цена через N свечей? Каковы были средние цели, просадки, вероятности движения?

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

От распознавания к прогнозу

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

Есть ли уже «чуйка»?

Главная задача на текущем этапе — не получить идеальную торговую систему, а увидеть первые признаки жизни. Появилась ли у нашего алгоритма хоть какая-то «чуйка»? Пусть она будет хаотичной, шумной и непостоянной — как и настроение живого трейдера. Но если алгоритм начал показывать хотя бы слабые, но статистически весомые признаки неслучайного поведения — это уже огромный успех и зелёный свет для дальнейшей работы.

Давайте вместе оценим, что отпечаталось в электронных мозгах нашего алгоритма.



Итоги и взгляд вперёд

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

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

 

 

 

 

11 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн