Разработка системы распознавания паттернов (голова и плечи, треугольники, клинья)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы распознавания паттернов (голова и плечи, треугольники, клинья)
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Разработка системы распознавания паттернов (голова и плечи, треугольники, клинья)

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

Классификация паттернов и их алгоритмическое представление

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

Разворотные паттерны (Head & Shoulders, Inverse H&S, Double Top/Bottom, Triple Top/Bottom) — формируются на значимых уровнях, сигнализируют о смене тренда.

Паттерны продолжения (Ascending/Descending/Symmetrical Triangle, Bull/Bear Flag, Pennant, Wedge) — формируются в середине тренда как консолидация перед продолжением.

Паттерны канала (Rising/Falling Channel, Rectangle) — цена движется между параллельными уровнями.

Алгоритм обнаружения: метод опорных точек (Pivot Points)

Основной подход — выделение локальных экстремумов (swing highs и swing lows) и анализ их последовательности.

Этап 1: Поиск pivot points

def find_pivots(highs, lows, window=5):
    pivot_highs = []
    pivot_lows = []
    for i in range(window, len(highs) - window):
        if highs[i] == max(highs[i-window:i+window+1]):
            pivot_highs.append((i, highs[i]))
        if lows[i] == min(lows[i-window:i+window+1]):
            pivot_lows.append((i, lows[i]))
    return pivot_highs, pivot_lows

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

Этап 2: Матчинг паттернов

Для «головы и плеч» нужно найти последовательность из 5 pivot points: left shoulder (high), neckline left (low), head (highest high), neckline right (low), right shoulder (high).

Условия для валидного H&S:

  • Head выше обоих shoulders (tolerance ±2%)
  • Оба shoulders примерно одной высоты (разница < 5%)
  • Neckline relatively horizontal (наклон < 15°)
  • Right shoulder не превышает Head

Этап 3: Детектирование треугольников

Треугольники определяются через линейную регрессию по pivot points:

  • Symmetrical: нисходящая линия по highs + восходящая по lows, конвергирующие к одной точке
  • Ascending: горизонтальное сопротивление + восходящая поддержка
  • Descending: горизонтальная поддержка + нисходящее сопротивление

Качество треугольника оценивается через R² коэффициент линейных регрессий. R² > 0.85 — хороший треугольник.

Этап 4: Клинья (Wedges)

Клин (wedge) отличается от треугольника тем, что обе линии направлены в одну сторону:

  • Rising Wedge (медвежий сигнал): обе линии восходящие, верхняя более пологая
  • Falling Wedge (бычий сигнал): обе линии нисходящие, нижняя более пологая

Ключевое условие: линии конвергируют (угол между ними уменьшается).

Оценка качества паттерна и target projection

Каждый обнаруженный паттерн получает score (0–100) на основе:

  • Симметричности (для H&S)
  • R² линий (для треугольников)
  • Соотношения объёма (объём при формировании должен снижаться)
  • Завершённости паттерна (breakout уже произошёл или нет)

Target projection — расчёт цели после breakout:

  • H&S: цель = уровень neckline − высота головы
  • Треугольник: цель = точка апекса ± высота основания
  • Клин: цель = начало клина

Backtest и оценка надёжности

Система включает backtesting модуль: для каждого исторически обнаруженного паттерна проверяем, сработал ли target в течение следующих N свечей, и с каким процентом success rate. Это позволяет калибровать пороговые значения под конкретный актив и таймфрейм.

Типичная надёжность на крипторынке (по историческим данным BTC/ETH):

Паттерн Win Rate Среднее отношение R/R
H&S (confirmed) 55–65% 1:1.5
Ascending Triangle 60–70% 1:1.8
Symmetrical Triangle 50–55% 1:1.2
Falling Wedge 60–68% 1:2.0

Архитектура системы

Backend: Python (pandas, numpy, scipy для линейной регрессии), обработка OHLCV данных из биржевых API (CCXT library). Scan по всем инструментам запускается по расписанию (cron) на каждом закрытии свечи.

База данных: PostgreSQL для хранения обнаруженных паттернов с параметрами, статусом (forming/confirmed/failed) и результатами.

Frontend: React + TradingView Lightweight Charts. Паттерны отрисовываются как SVG-оверлеи поверх ценового графика — линии плеч, neckline, линии треугольника с подписями.

Алерты: При обнаружении нового подтверждённого паттерна или при пробое уровня — уведомление в Telegram или через webhook.

Масштабирование

Для сканирования 500+ инструментов в реальном времени используется параллельная обработка через Python multiprocessing или Celery. Результаты кэшируются в Redis. Полный скан 500 инструментов на 4h таймфрейме занимает 15–30 секунд на стандартном сервере.

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