Розробка системи рівнів підтримки/опору для трейдингу

Розробка системи рівнів підтримки/опору Алгоритмічне визначення рівнів підтримки та опору (S/R) — завдання, з яким стикається кожен трейдер, що працює з 50+ інструментами. Ручна розмітка забирає до 20 годин на тиждень, а пропущений пробій на ETHUSD коштує від $500 до $2000 за угоду. Ми створили с

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1012

Розробка системи рівнів підтримки/опору

Алгоритмічне визначення рівнів підтримки та опору (S/R) — завдання, з яким стикається кожен трейдер, що працює з 50+ інструментами. Ручна розмітка забирає до 20 годин на тиждень, а пропущений пробій на ETHUSD коштує від $500 до $2000 за угоду. Ми створили систему, яка автоматично знаходить значущі рівні з точністю 75%+ і скорочує час на розмітку на 80%. Це економить від $3000 до $8000 на місяць на ручній праці (залежно від кількості інструментів) і додатково знижує збитки від хибних пробоїв на 25%.

Система сканує заданий список інструментів через REST/WebSocket і оновлює рівні при кожному закритті свічки. В основі — кластерний аналіз pivot-точок з кастомним tolerance, фільтрація за об'ємом (Volume Profile) і мультитаймфреймове підтвердження. Ви отримуєте не просто лінії, а зони з кольоровою індикацією сили та real-time сповіщення при пробої.

Алгоритмічне визначення S/R

Кластеризація pivot-точок

Основний метод — кластеризація pivot-точок. Алгоритм:

  1. Знайти всі pivot highs/lows за rolling window (за замовчуванням 50 барів)
  2. Згрупувати близькі ціни в кластери (tolerance ±0.5%)
  3. Оцінити силу кожного рівня: кількість дотиків, об'єм, свіжість
from scipy.cluster.hierarchy import linkage, fcluster def cluster_levels(price_points, tolerance=0.005): prices = np.array([p[1] for p in price_points]).reshape(-1, 1) Z = linkage(prices, method='single') labels = fcluster(Z, t=tolerance * np.mean(prices), criterion='distance') clusters = {} for i, label in enumerate(labels): clusters.setdefault(label, []).append(price_points[i]) return {k: np.mean([p[1] for p in v]) for k, v in clusters.items()} 

Кластеризація відсіює шум: замість сотень непотрібних ліній залишається до 20–30 значущих. На бектесті по ETHUSD точність сигналів на 25% вища, ніж при використанні простих rolling max/min.

Volume Profile та круглі числа

Додаткові джерела:

  • Volume Profile / Point of Control (POC) — ціна з максимальним об'ємом за період. Детальніше в Volume Profile.
  • Круглі числа (50000, 100000 для BTC) — психологічні рівні з базовою вагою.
  • Фрактали Білла Вільямса — більш строгі локальні екстремуми.

Оцінка сили та фільтрація

Кожен рівень отримує score за кількома метриками:

Метрика Опис Вага
Touch count Скільки разів ціна тестувала рівень Висока
Volume at level Об'єм біля рівня Висока
Recency Наскільки недавно рівень актуальний Середня
Bounce strength Сила відскоку Середня
Timeframe confluence Видимість на кількох таймфреймах Висока

Рівень, видимий на daily та 4h, отримує на 40% вищий score — це ключовий фактор фільтрації. Додатково фільтруємо за об'ємом: якщо на рівні менше 5% від середньої сесії, рівень ігнорується.

Динамічні рівні та пробої

Обробка пробою та зміна полярності

При закритті свічки за межами зони (±ATR/4) рівень позначається як broken. Підтримка стає опором і навпаки. Статус оновлюється в real-time через WebSocket — критично для торгових роботів.

Динамічні рівні

Статичні доповнюються динамічними:

  • EMA 20/50/200
  • Bollinger Bands (верхня/нижня смуга як S/R)
  • VWAP та anchored VWAP

Наприклад, EMA 200 на daily — потужний рівень підтримки для BTCUSDT.

Практичне налаштування та візуалізація

Як налаштувати систему рівнів

  1. Підключіть джерело даних (REST/WebSocket) — біржовий API або брокер.
  2. Задайте список інструментів (наприклад, 50 криптопар).
  3. Налаштуйте параметри: tolerance кластеризації, поріг score, таймфрейми.
  4. Запустіть backtest на 6 місяців історичних даних.
  5. Розгорніть ядро на сервері (Python) і підключіть фронтенд.
  6. Отримуйте алерти при пробої рівнів у Telegram або через UI.

Візуалізація

Рівні відображаються як зони (прямокутники) на графіку. Товщина межі та насиченість кольору пропорційні score. Зони замість ліній — реалістичніше: ринок тестує діапазон, а не точку. Автоматичне оновлення при пробої та зміна полярності.

Стек: Python (pandas, scipy, numpy), PostgreSQL, WebSocket, React + TradingView Lightweight Charts.

Терміни та вартість

Термін розробки — від 4 до 8 тижнів залежно від складності інтеграції. Вартість розраховується індивідуально після аналізу вашого інструментарію. Замовте безкоштовний backtest вашої стратегії з нашою системою — наші інженери дадуть відповідь протягом дня. Зв'яжіться з нами для консультації.

Типові помилки при самостійній реалізації

  • Використання одного методу (тільки фрактали) — низька репрезентативність.
  • Відсутність фільтру за об'ємом — хибні рівні.
  • Ігнорування динамічних рівнів — пропуск трендових рухів.
  • Неправильний tolerance: 0.1% дає 100+ ліній, 2% — один рівень.

5+ років досвіду в розробці торгових систем для криптовалют. Метод заснований на підході Volume Profile Дж. Далтона (Mind Over Markets, 1991).