Распознавание паттернов: где ломается ручная разметка графиков
Распознавание паттернов ломается ровно там, где начинается ручная разметка графиков. Голова и плечи, треугольник и клин — геометрия, которую аналитик проводит по свечам вручную, и в следующий раз он проведёт её чуть иначе. Сдвинулась на пару свечей линия шеи — и фигура формально не подтверждена, хотя рынок отработал именно её.
На истории в несколько сотен эпизодов расхождение накапливается. Два разметчика дают разные выборки, одна и та же конфигурация попадает то в обучающий набор, то в проверочный, и сравнение гипотез теряет смысл — сравнивать становится нечего. Обратная сторона ещё дороже: пока границы фигуры уточняются глазами, растёт задержка торгового сигнала, и вход по треугольнику случается, когда движение уже пройдено. Ночные сессии и редкие инструменты добавляют своё — эпизод пропущен, статистика по фигуре смещена в сторону тех часов, когда аналитик был у монитора.
Причина не в квалификации разметчика, а в отсутствии формализованных критериев: где заканчивается формирование фигуры, какой размах считаем значимым, сколько свечей подтверждают пробой и что считаем его отменой. Без этих правил распознавание паттернов остаётся экспертным мнением, которое нельзя ни воспроизвести, ни проверить на истории. Дальше разбираем, как это закрывается переносом логики фигур в код и на чём именно ловят ложные срабатывания.
Что меняется в торговой системе после автоматизации разбора фигур
Ручная разметка упирается в человека: два аналитика на одной истории по-разному ставят границы «головы и плеч», треугольника или клина. На квартале истории по десятку инструментов это дни работы, а расхождения всплывают поздно — когда решения по инструменту уже разошлись.
Автоматизация переводит фигуру в набор проверяемых условий: положение локальных экстремумов, наклон и касания трендовых линий, подтверждение объёмом. Состояние ведётся явно — формируется, подтверждена, сломана, — поэтому сигнал не зависит от того, кто смотрел на график. Отдельный слой проверок отбрасывает кандидата, если внутри окна есть разрыв или пропуск котировок: такие стыки собирали фигуру из несоседних баров и давали худший класс ложных входов.
Что это меняет по нашим замерам:
| Показатель | Ручной разбор | Автоматический |
|---|---|---|
| Разбор квартала истории | дни работы аналитика | один прогон по всей выборке |
| Границы фигуры у разных аналитиков | расходятся | единые правила, расхождение в пределах допуска |
| Пропуск фигуры | зависит от загрузки | история проходит целиком |
| Разрыв или пропуск котировок | фигура склеивается из несоседних баров | окно помечается, фигура не строится |
Контроль качества держится на эталонном наборе — несколько сотен фигур, размеченных вручную, включая спорные. Прогон после каждого изменения правил показывает отдельно долю ложных срабатываний и отдельно долю пропущенных: попытка задавить одну метрику за счёт другой видна сразу.
Часть геометрических примитивов берём из открытой библиотеки TA-Lib, логику самих фигур и подтверждений описываем сами — её можно править под конкретный рынок. Разбор перестаёт быть ограничением по времени, а разметка становится воспроизводимой: тот же прогон на тех же данных даёт тот же результат.
Как устроено распознавание паттернов: три подхода к поиску фигур
Формализовать фигуру можно тремя способами, и у каждого своя цена ошибки. Жёсткое правило описывает форму через найденные экстремумы, наклон трендовых линий и допуск на касание в долях волатильности; обучение на размеченной истории ищет ту же форму по признакам окна; гибрид оставляет за правилами черновой отбор, а за аналитиком — подтверждение спорных случаев.
Выбор зависит от ликвидности инструмента, горизонта и того, какой класс ошибок допустим в решении.
| Подход | Когда подходит | Ограничения |
|---|---|---|
| Жёсткие геометрические правила | Ликвидные инструменты, старшие горизонты, нужна объяснимость каждого сигнала | Допуски подбираются вручную, правило ломается при смене волатильности, в боковике много ложных срабатываний |
| Обучение на размеченной истории | Много однородных данных, нужна устойчивость к шуму | Качество упирается в разметку, классы несбалансированы, поведение плывёт при смене режима |
| Гибрид с ручной валидацией | По сигналам принимают решения, ошибка дорога | Часть проверки остаётся за аналитиком, отклик медленнее автоматического |
Общая слабость всех трёх — разметка исторических данных. Если границы фигуры на обучении ставятся по уже известному продолжению цены, качество на истории выглядит высоким, а на новых данных модель рассыпается: проверять нужно на скользящем окне, обучая только на прошлом. Гибрид закрывает это ручной валидацией спорных случаев, но правила обнаружения фигур всё равно фиксируются до обучения.
Этапы работы: от аудита данных до передачи настроенной системы
Работу ведём итерациями: сначала фиксируем, что именно считаем фигурой на исторических данных, затем строим воспроизводимый поиск и только потом подбираем пороги. Такой порядок убирает подгонку под конкретный участок графика — детектор проверяется на данных, которых не видел при настройке.
- Аудит исторических данных и требований. Проверяем полноту котировок, пропуски, дробления и склейки, часовые пояса, согласуем список фигур («голова и плечи», треугольники, клинья), таймфреймы и то, что считаем подтверждением фигуры.
- Схема признаков фигуры. Формализуем геометрию: число касаний линии тренда, наклон, симметрию плеч, глубину отката, поведение объёма на пробое. Без письменной схемы признаки превращаются во вкусовщину и не воспроизводятся.
- Настройка поиска фигур. Реализуем детектор: сглаживание ряда, поиск локальных экстремумов, аппроксимация линий, проверка геометрии. На выходе — разметка с координатами границ и оценкой уверенности по каждой фигуре.
- Проверка на удержанном периоде. Прогоняем детектор по данным, не участвовавшим в настройке, считаем точность и полноту, разбираем расхождения с разметкой аналитика. Это отделяет реальное распознавание паттернов от запоминания истории.
- Калибровка порогов. Подбираем допуски по наклону, длине и объёму так, чтобы убрать ложные срабатывания, не потеряв редкие фигуры. Итоговые значения фиксируем в конфигурации, а не в коде.
- Передача и обучение команды. Отдаём разметку, конфигурацию и инструкцию по добавлению новых фигур, показываем, какие метрики отслеживать, чтобы качество поиска не проседало после изменений.
Состав поставки: правила разметки, схемы, регламенты обновления
Разметка паттернов и параметры поиска не должны жить в голове разработчика или в переписке: при первом же расхождении сигналов непонятно, чья правда. Поэтому вместе с системой заказчик получает артефакты, по которым её можно эксплуатировать, проверять и передавать другой команде.
- Правила разметки — критерии состоявшейся фигуры: сколько свечей формируют вершину и плечи, допустимая асимметрия, как трактуются разрывы и новостные импульсы. Разметчик и алгоритм следуют одному документу, поэтому расхождение видно сразу.
- Схема признаков — таблица «признак → источник → окно расчёта → вес в решении»: наклон трендовой, глубина отката, объём на пробое. Новый признак добавляется без ломки уже настроенных.
- Конфигурация поиска фигур — пороги допуска, минимальная амплитуда, окно подтверждения, правила подавления дублей. Пороги вынесены из кода: их правят без пересборки сервиса.
- Регламент переобучения и пересмотра порогов — по какой выборке и с какой периодичностью сверяем разметку, какие метрики считаем деградацией и кто утверждает смену конфигурации.
- Журнал проверок — контрольные наборы с ручной разметкой и историей прогонов: видно, после какого изменения просела точность и какой набор порогов отработал лучше.
- Документация по системе — инструкции для команды: как поднять сервис распознавания, где смотреть отклонённые сигналы, как откатить конфигурацию к предыдущей.
- Карта владения — кто отвечает за разметку, кто за признаки, кто за поиск фигур: без неё артефакты устаревают за квартал.
Разбор проекта торговой платформы: разметка до и после
Разметка фигур жила в таблице: аналитики вручную отмечали «голову и плечи», треугольники и клинья, каждая метка — с интервалом графика, диапазоном баров и комментарием. Мы прогнали замер расхождений на одних и тех же участках и получили цифру, которая аудитории обычно не нравится: независимые разметчики совпадают лишь в 71% случаев, а редкие формации — расширяющийся треугольник, сужающийся клин — находил один аналитик из четырёх. Сигнал по подтверждённой фигуре доходил до торгового контура через десятки секунд после закрытия бара: часть движения к этому моменту уже отработана.
Что изменили по существу
Фигуру перестали описывать картинкой — она стала набором формальных условий: число касаний линии тренда, наклон, допустимое отклонение цены от границы, минимальная глубина отката, обязательный подтверждающий бар. Разметку аналитиков перенесли в Label Studio и привязали к интервалу графика, а спорные эпизоды вывели в отдельную очередь согласования, чтобы они не растворялись в общей выборке.
Метрики до и после
- Согласованность разметки между аналитиками: 71% → 94%.
- Доля спорных размеченных эпизодов: 19% → 4%.
- Полнота обнаружения редких фигур: 0,4 → 0,9.
- Задержка сигнала после подтверждения: десятки секунд → единицы секунд.
- Ложные срабатывания на шуме: снизились втрое при том же пороге подтверждения.
Что пришлось доработать по ходу
Первая версия правил не различала клин и треугольник на границе диапазона: формации с двумя касаниями уходили в одну метку. Добавили признак формы линии шеи и требование к минимальному числу касаний — спорные эпизоды просели, но часть широких формаций выпала из детекции, и порог пришлось калибровать заново на исторических данных. Отдельно чинили расхождение между разметкой на разных интервалах: одну фигуру на дневном и недельном графике аналитики датируют по-разному, поэтому метку привязали к интервалу, на котором фигура подтверждена.
Что делать, если фигуры уже размечены вручную?
Ручная разметка исторических фигур — не мусор, а готовая обучающая выборка: в ней зафиксирована ваша трактовка рынка, которую из котировок не восстановить. Вопрос не в том, доверять ей или нет, а в том, согласованы ли критерии между теми, кто размечал. Если разметка собиралась годами разными людьми, качество разметки — это первое, что проверяют до любого дообучения.
Считаем согласие по каждому типу фигур отдельно: совпадают ли границы, точка подтверждения, минимальная амплитуда. Где доля совпадений низкая, это не шум модели, а спорное правило — его согласуют до обучения. Дальше аудит случайной выборки: спорные фрагменты отдают на переразметку двум независимым разметчикам, расхождения уходят в арбитраж по правилу, а не по голосованию. Так качество становится измеримым, а не «на глаз».
Конфликты разметки почти всегда трёх видов: одна фигура размечена с разными границами, один участок графика помечен и треугольником, и клином, либо фигуры пересекаются по времени. Каждый конфликт классифицируется и закрывается решением, которое фиксируется в схеме разметки с версией — иначе при следующей итерации те же расхождения вернутся.
Дообучение на своих данных идёт поверх базовой модели, а не с нуля, и с разбивкой выборки по рыночным периодам: иначе система выучит один режим и развалится на смене волатильности. Правила разбора при этом остаются источником истины, а модель расширяет охват распознавания.
Перенос правил проверяем регрессионным набором: старые размеченные фигуры прогоняем до и после дообучения. Доля совпадений не должна падать — новые классы не имеют права «съедать» прежние. Если падает, правило весомее модели: разметка выгружается из терминала TradingView, и расхождение с ней видно на первых же прогонах.
Технические сомнения: шум, ложные фигуры, устойчивость к сбоям
На живых данных поиск фигур встречает разрывы котировок, неполные свечи и неоднозначную разметку. Ниже — пять вопросов, которые чаще всего всплывают на приёмке, и то, как мы закрываем каждый.
Как система справляется с шумом на младших периодах?
Шум на графике гасим на входе: сглаживание ряда, порог по амплитуде фигуры, подтверждение объёмом. Часть ранних сигналов при этом отсекается — пороги держим в конфигурации и подбираем под конкретный инструмент, а не зашиваем в код.
Фигуры редкие — как быть с треугольниками и клиньями?
Редкие формации — треугольники, клинья, голова и плечи — оцениваем не по отдельности, а семействами однотипных конфигураций. Так набирается статистика для честной оценки точности, а не подгонки под единичные случаи.
Где гарантия, что модель не переобучена?
Проверяем на отложенном отрезке истории, который не участвовал в настройке, и прогоняем правила последовательно по времени. Заметный разрыв между точностью на настройке и на проверке — прямой признак переобучения, такую конфигурацию возвращаем на доработку.
Что происходит при разрывах потока данных?
Разрывы потока данных фиксируем отдельным событием: история догружается, а сигнал, на который не хватило котировок, помечается неподтверждённым — система не достраивает свечи молча. После восстановления потока разметка пересчитывается на полном ряду.
Что входит в поддержку после внедрения?
Поддержка после внедрения — это обновление порогов под смену волатильности, контроль доли ложных срабатываний и правки правил разметки. Доступы к потоку и порядок изменения конфигурации описываем регламентом, чтобы система не осталась без владельца.
Обсудим вашу задачу: данные, фигуры, требования к сигналам
Чтобы оценка и план работ опирались на ваши данные, а не на усреднённые допущения, к разговору хватит ответов по трём осям: история цен, разметка фигур и требования к сигналам. Ниже — что именно уточняем и как каждый пункт меняет объём работ.
- Данные и история. Инструменты и интервалы, источник (биржа, брокер, свой архив), глубина в свечах, пропуски и разрывы между сессиями, правила склейки контрактов.
- Разметка фигур. Что обязательно: голова и плечи в двух вариантах, треугольники, клинья. С допусками — минимальная высота и ширина фигуры, число касаний линий, угол наклона.
- Критерий подтверждения. Пробой линии шеи или границы с закреплением, возврат цены к пробитому уровню, подтверждение по объёму. От этого зависит задержка сигнала относительно момента формирования фигуры.
- Требования к качеству. Допустимая доля ложных срабатываний, поведение на неполных фигурах и на инструментах с низкой ликвидностью.
- Доставка сигнала. Очередь сообщений, запись в таблицу или вызов внешнего сервиса; формат сообщения, задержка, нужен ли журнал с историей срабатываний.
- Порядок внедрения и приёмки. На каком историческом отрезке проверяем точность, кто на вашей стороне принимает результат, нужен ли тестовый контур с потоком данных в реальном времени.
Если части данных нет — старт это не блокирует: подскажем, чем заменить и как собрать историю под ваш случай. Опишите задачу в свободной форме — вернёмся с оценкой и планом работ, где этапы и точки проверки зафиксированы.







