Розробка volume screener для криптовалютного трейдингу

Хибні сигнали й пропущені сплески обсягу обходяться трейдерам втраченими угодами. Ми розробляємо volume screener під ключ: від аудиту біржових даних до передачі налаштованого скринера вашій команді. Зменшуємо частку хибних спрацювань і час на ручний відбір пар.
Часті запитання

Volume screener: де ламається саморобна розробка

Аномалії обсягу торгів живуть секунди, а перша версія скринера дізнається про них за хвилини.

Розробка volume screener найчастіше стартує з опитування публічного інтерфейсу біржі за десятками пар — і вже на сотні інструментів саморобний скринер біржі упирається в ліміти біржових запитів: виділена вага звернень з'їдається за десятки секунд, у відповідь приходить обмеження, потім тимчасове блокування адреси. Сигнал або запізнюється, або приходить уже по з'їденому руху.

Обхід очевидний — потік угод замість опитування.

Ламається він на обривах: канал відвалюється на хвилини, і якщо не зберігати курсор останньої обробленої події, не вставляти угоди ідемпотентно за їхнім ідентифікатором і не догравати пропущений інтервал з архіву, обсяг у вікні подвоюється. На графіку це сплеск, якого не було, а вхід — за хибною аномалією.

Третя тріщина — розходження метрик між джерелами. Обсяг у базовій і котирувальній валюті, спот і строковий ринок, різні межі вікна та часові пояси дають цифри, які не сходяться між собою.

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

Усі три вузли — збір, відновлення після розриву та нормалізація — закриваються до того, як з'явиться перше спрацювання. Нижче розбираємо, як це влаштовано на практиці та де проходить межа між власним доопрацюванням і готовим контуром.

Що дає готовий скринер обсягів на біржових даних

Скринер обсягів для трейдингу рахує не абсолютний обсяг, а відхилення від власного профілю інструмента: медіана та медіанне відхилення за ковзним вікном замість середнього.

Середній обсяг ламається однією великою угодою, медіана — ні, тому сплеск на тонкому ринку не виглядає аномалією, поки він справді нею не є. Довідник пар та оцінку ліквідності підтягуємо з відкритих джерел, наприклад CoinGecko, і звіряємо з тим, що віддають самі біржі.

Моніторинг сплесків обсягу йде на потоці угод: сигнал формується в момент приходу угоди, а не на закритті свічки, тому затримка сигналу — частки секунди.

Обсяг нормується на волатильність інструмента і приводиться до порогу в сигмах, так що той самий поріг працює і на великих парах, і на низьколіквідних. Дедуплікація склеює серію угод одного заходу в одне повідомлення, щоб трейдер не отримав п'ять повідомлень про одну подію.

Точність сигналів скринера тримається на фільтрах, а не на підкручуванні порогу: мінімальна глибина стакана, максимальний спред, підтвердження другою хвилиною обсягу.

До трейдера доходить приблизно чверть від того, що дає «голий» поріг за обсягом, при цьому пропуск реальних аномалій залишається в межах похибки.

Клас відмов, який перестає доходити до трейдера, — аномалія на ринку, де ціну рухає одна заявка: вхід за нею дає прослизання більше за потенційний рух.

Ми логуємо, що саме відсіяв кожен фільтр, і за цими даними калібруємо пороги під конкретні інструменти та години торгів, а не під усереднений ринок.

Режими роботи скринера: потік, пакетний перерахунок, гібрид

Режим роботи скринера визначає, що замовник отримує раніше — сигнал про аномалію чи узгоджену картину по інструменту.

Потокова обробка угод читає стрічку з біржових каналів і накопичує обсяги в ковзних вікнах: сплеск видно через секунди після угоди, але при обриві з'єднання ділянка стрічки губиться безповоротно.

Пакетний перерахунок історії бере угоди та свічки за період з архіву і рахує метрики заново — дані сходяться до останньої угоди, але результат приходить із затримкою.

Гібридний режим скринера поєднує обидва: потік веде онлайн-метрики та подає сигнали, а перерахунок раз на кілька хвилин звіряє вікна з архівом і закриває пропуски.

Порівняння режимів

Варіант Коли підходить Обмеження
Потокова обробка угод Реакція на сплеск обсягу в момент події, сигнали для ручної та алгоритмічної торгівлі Затримка від часток секунди; обрив зв'язку залишає діру в історії; чутлива до пікового навантаження
Пакетний перерахунок історії Аналітика, перевірка стратегій на історії, звіти, пошук аномалій заднім числом Затримка від хвилин до годин; миттєвих сигналів немає; навантаження зростає з глибиною архіву
Гібридний режим скринера Основний варіант для торгового продукту: онлайн-сигнали плюс вивірена історія Дорожче в розробці та підтримці: узгодження вікон, дедуплікація, контроль розходжень

Вибір диктує задача: для реакції на подію достатньо потоку, для аналітики — пакета, для робочого торгового контуру ставлять гібрид з автоперевіркою розходжень.

Розробка скринера обсягів: етапи від аудиту до передачі

Розробка скринера обсягів починається не з коду, а з аудиту джерел даних. На цьому кроці ми звіряємо майданчики між собою: однаково вони рахують обсяг, з якою затримкою віддають потік угод, чи є пропуски в історії, як поводитися з періодами, коли торги зупинялися.

Підсумок аудиту — перелік джерел, які дають зіставні дані, і явний список розходжень, які доведеться компенсувати на нашій стороні.

  1. Аудит джерел даних. Збираємо історію по кожному майданчику, звіряємо агрегований обсяг з незалежними зрізами, відзначаємо пропуски, дублі та розриви в часі.
  2. Схема потоків і зберігання. Описуємо шлях даних: приймання потокових каналів, нормалізація до єдиної шкали часу, відсів дублів, агрегація у вікна та свічки. Окремо вирішуємо, що зберігати в початковому вигляді, а що — лише в згорнутому.
  3. Налаштування порогів обсягу. Сплеск рахуємо не абсолютним числом, а перевищенням базової лінії за вікно: задаємо довжину вікна, множник спрацювання, мінімальний поріг ліквідності та відсічку за шириною спреду.
  4. Правила відбору та придушення деренчання. Визначаємо, які події потрапляють у видачу, як ранжуються і як один сплеск не перетворюється на десяток однотипних сигналів.
  5. Випробування на історичних даних. Прогоняємо правила по архіву, вимірюємо частку пропущених подій і хибних спрацювань, час від появи обсягу до сигналу, уточнюємо параметри.
  6. Приймання скринера. Звіряємо роботу на живому потоці з еталонною вибіркою, фіксуємо розходження, перевіряємо журнал сигналів і повернення до попередніх налаштувань.
  7. Передача. Віддаємо конфігурації, схеми потоків і регламент: як змінювати пороги, як додавати майданчик, за якими ознаками розуміти, що джерело почало віддавати неповні дані.

Після передачі пороги та правила змінюються без правок коду — налаштування винесені окремо, а рішення щодо кожної зміни спираються на історичні прогони, а не на відчуття.

Що залишається у вас: конфігурації, схеми, регламенти

Скринер обсягу марний, якщо правила відбору живуть у голові одного інженера і в парі скриптів на сервері. Тому кожен етап ми закриваємо артефактами, які можна відкрити, прочитати й передати іншій команді без довгих дзвінків. Нижче — що саме залишається у вас у репозиторії та в документації.

  • Конфігурації алертів — файли з порогами за обсягом, вікном накопичення та коефіцієнтом відхилення від норми; правляться без перезбирання, версіонуються і відкочуються до попереднього набору.
  • Схема потоків даних — шлях сигналу від джерела угод і стакана до розрахунку та сховища: де буферизація, де дедуплікація, яка затримка на кожній ділянці.
  • Опис правил відбору — формули метрик (сплеск обсягу до ковзного середнього, дисбаланс покупок і продажів) і пороги окремо по інструментах з різною ліквідністю.
  • Документація скринера — карта сервісів, змінні середовища, формат вхідних повідомлень, порядок перерахунку історії за минулі періоди.
  • Регламент експлуатації — що перевіряти при пропуску сигналів, як перезапустити розрахунковий вузол, де дивитися журнали і куди йде повідомлення.
  • Регламент чергування — три рівні подій (шум, підозра, інцидент), час реакції на кожен і порядок ескалації.
  • Схема інтеграцій — точки підключення до біржових інтерфейсів, торгового термінала і звітності, розмежування прав доступу.
  • Набір для перевірки — історичні вікна, на яких переграються правила, і тест, що зміна порогу не ламає відбір.

Кейс: як скринер обсягів прибрав хибні сигнали

До: потік сигналів, який нічим фільтрувати

Скринер працював на одній простій умові — надсилати все, де обсяг за останню годину відхилився від середнього. За понад сорок відстежуваних пар це давало 70–90 оповіщень на добу, з яких до справжнього сплеску належали одиниці.

Аналітик витрачав 3–4 години на ручний розбір: звіряв свічки, дивився глибину ринку і все одно часто не встигав увійти в рух.

Що змінили в механіці відбору

Потік угод з Binance та інших майданчиків зводили в єдиний нормалізований ряд, і обсяг порівнювався вже не із середнім, а з медіанним профілем за часом доби та днем тижня.

Сигнал вимагав підтвердження на сусідніх таймфреймах і відсікався, якщо сплеск давали одна-дві великі угоди без зростання числа учасників. Пари з тонкою ліквідністю пішли з вибірки за мінімальним порогом обороту.

Що стало після впровадження

Число оповіщень упало з 70–90 до 8–12 на добу, частка хибних — приблизно з 85% до 20%. Час реакції скоротився з 25–40 хвилин ручної перевірки до 1–2 хвилин: сигнал приходить уже з контекстом — таймфрейм, ліквідність пари, профіль обсягу.

Пропущених сплесків за перший квартал роботи — нуль проти 5–6 на тиждень до цього, а розбір сигналів перестав займати робочий день.

Пороги та вікна усереднення винесені в конфігурацію, тому під інший горизонт торгівлі правила перезбираються без переписування логіки.

Історія оповіщень зберігається з параметрами на момент спрацювання — будь-який сигнал можна переперевірити заднім числом і зрозуміти, чому він пройшов фільтр.

Чим потоковий скринер відрізняється від пакетного перерахунку?

Пакетний скринер працює за розкладом: бере зріз історії угод за вікно, перераховує об'ємні метрики по всіх парах і віддає готовий список. Той самий зріз завжди дає однаковий результат — розходження між прогонами пояснювані, а спірну ситуацію легко відтворити.

Обмеження в тому, що між перерахунками ринок живе своїм життям, і сплеск обсягу на початку вікна ви побачите тільки до наступного прогону.

Потоковий режим тримає метрики в пам'яті й оновлює їх на кожній угоді — затримка сигналу вимірюється секундами, а не інтервалом перерахунку.

Плата за швидкість: результат залежить від порядку та повноти подій, тому потрібні ковзні вікна з чіткою межею і правила дедуплікації повторів.

Порівняння режимів зводиться до трьох осей: затримка сигналу, повнота даних і поведінка при обриві зв'язку. Пакетний переживає розрив непомітно: наступний прогін бере історію заново і дораховує пропущений інтервал.

Потоковий втрачає шматок вікна — метрика занижується, і сигнал або не спрацьовує, або приходить на викривленому обсязі. Тому навколо потоку будують буфер подій, контроль відставання споживача та довантаження пропущеного відрізка з історії з перерахунком зачеплених вікон.

Вибір диктує торгова логіка. Потрібна відтворювана звітність і рішення на закритті інтервалу — вистачає пакетного перерахунку. Потрібна реакція в перші секунди та короткоживучий сигнал — беруть потоковий режим і окремо проєктують відновлення після розривів.

На практиці частіше збирають гібрид: потік дає миттєвий сигнал, а пакетний прогін раз на інтервал звіряє розходження і підчищає пропуски.

Технічні сумніви: затримки, ліміти бірж, хибні спрацювання

Більшість інженерних питань до скринера — про межу з майданчиками: частоту запитів, тонкий ринок, обриви зв'язку. Нижче — відповіді на те, що найчастіше перевіряють до старту.

Як обходите ліміти біржових даних?

Запити не дублюються: один збирач на майданчик, сигнали розходяться підписникам усередині системи. Угоди та стакан беремо потоковою підпискою, історію довантажуємо пакетами із запасом за лімітом, довідники монет кешуємо.

При упорі в стелю збирач сам знижує частоту за другорядними парами — пріоритетні залишаються на повній.

Звідки хибні спрацювання на тонкому ринку?

Фільтр відсікає пари, де обсяг одиничних угод викривляє картину: мінімальна глибина стакана, граничний спред, число угод за вікно. Сигнал підтверджується за кількома джерелами, а сплеск обсягу без руху ціни позначається як разовий.

Що відбувається при обриві зв'язку?

Перепідключення без втрати стану: буфер тримає останні тіки, після відновлення наздоганяємо пропущений інтервал і звіряємо зріз. Якщо розходження вище допуску, вікно позначається неповним і сигнали за ним не публікуються — краще пропустити, ніж видати викривлений. Стійкість перевіряємо регламентно: рвемо з'єднання і перезапускаємо збирач у тестовому середовищі.

Як вимірюєте затримки скринера?

Метрика — від появи угоди на майданчику до публікації сигналу, окремо для потоку і для опитування. Замір іде по кожному вузлу, тому видно, де накопичується час: збір, розрахунок чи доставка повідомлення. Поріг задаємо від торгової логіки замовника, а не «середній по ринку».

Обговоримо задачу: повернемося зі схемою та планом впровадження

Щоб оцінка розробки скринера спиралася на факти, а не на здогадки, до старту потрібен короткий набір ввідних. Від замовника чекаємо таке.

  • Список бірж і пар: спотові, безстрокові контракти, окремі котирувальні пари — від нього залежить число потоків угод.
  • Глибина історії: з якого моменту потрібні сплески обсягу і за який період рахуємо норму — це визначає спосіб довантаження та зберігання.
  • Правило аномалії: зростання обсягу до середнього за вікно, частка від обороту пари або число угод за хвилину — яку ознаку вважаєте сигналом.
  • Канали доставки сигналу та отримувачі: особистий кабінет, чат, виклик вашої системи.
  • Доступи: ключі лише на читання, тестовий контур біржі, обмеження за частотою запитів.
  • Критерій приймання: допустима затримка від угоди до сигналу і прийнятна частка хибних спрацювань.

У відповідь віддаємо не оцінку на словах, а робочий комплект за підсумками першого розбору задачі.

  • Схему рішення: джерела даних, обробка, сховище, точки відмови та їхній обхід.
  • Склад робіт за етапами й оцінку розробки скринера з планом впровадження.
  • Правила фільтрації з параметрами: вікно усереднення, поріг, мінімальне число угод.
  • Журнал метрик: свіжість даних, пропуски, число сигналів на пару та за днями.
  • Інструкцію з експлуатації та порядок перевірки на історії перед запуском.

Опишіть задачу скринера та доступні дані — повернемося з оцінкою і планом впровадження.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142