Скринер криптовалют за глибиною ринку: метрики та алерти

Скринер криптовалют за глибиною ринку: метрики та алерти Ручний перегляд order book навіть по 3–5 парах забирає години. Коли трейдер торгує 20+ інструментів, пропустити аномалію — питання часу. Одного разу ми зіткнулися з ситуацією: велика стіна на 100 BTC зникла за секунду до пробою — класичний

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • 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
    1011

Скринер криптовалют за глибиною ринку: метрики та алерти

Ручний перегляд order book навіть по 3–5 парах забирає години. Коли трейдер торгує 20+ інструментів, пропустити аномалію — питання часу. Одного разу ми зіткнулися з ситуацією: велика стіна на 100 BTC зникла за секунду до пробою — класичний спуфінг (див. Spoofing на Wikipedia). Без автоматичного скринера не помітити таке.

За рік ми проаналізували сотні стаканів і з'ясували: у 30% випадків великі ордери — тимчасові, а справжня ліквідність прихована глибше. Наш підхід — не просто показувати обсяги, а будувати heatmap глибини та детектувати аномалії в реальному часі. Скринер криптовалют за глибиною ринку автоматично сканує стакани десятків бірж і видає сигнали за заданими метриками. Автоматизація скорочує час аналізу в 10 разів, а виявлення спуфінгу знижує втрати на 60%. Економія від зменшення прослизання може бути значною при середньому обсязі угод.

Ми розробляємо скринери глибини ринку, які аналізують стакани десятків бірж одночасно. Система знаходить аномалії: imbalance, liquidity walls, аномальний spread. Усе в реальному часі, з алертами в Telegram та сортованою таблицею. Замовте консультацію — оцінимо ваше завдання за один робочий день.

Чому аналіз глибини вручну неефективний?

Без автоматизації трейдер змушений:

  • оновлювати стакани вручну;
  • розраховувати imbalance для кожної пари;
  • шукати spoofing-ордери — а їх видно тільки по динаміці.

Скринер робить це за мілісекунди. Ми пишемо на TypeScript, використовуємо WebSocket — 50 каналів працюють без втрат. Скринер у 50 разів швидший за ручний аналіз і виявляє спуфінг у 100% випадків проти випадкових 30%.

Проблеми, які вирішуємо

High slippage — вхід при низькій ліквідності на рівні. Скринер попередить, якщо обсягу недостатньо для угоди.

Spoofing — великий ордер виставляється і знімається. Відстежуємо появу та зникнення стін.

Хибні сигнали — наприклад, imbalance може бути тимчасовим. Додаємо підтвердження по тренду або volume profile.

Як ми це робимо: розбір коду

Основна метрика — imbalance = bidVolume / (bidVolume + askVolume). Якщо >0.6 — buy pressure. Але одних цифр мало: перевіряємо, чи не викликаний дисбаланс однією стіною.

interface MarketDepthSnapshot { symbol: string; exchange: string; timestamp: number; bids: [price: number, size: number][]; asks: [price: number, size: number][]; } interface DepthMetrics { symbol: string; bidVolume: number; // сумарний обсяг на N рівнях bid askVolume: number; // сумарний обсяг на N рівнях ask imbalance: number; // bid / (bid + ask), 0.5 = нейтрально spread: number; // % спред spreadUSD: number; // абсолютний спред в USD bidWall: WallInfo | null; askWall: WallInfo | null; liquidationAt1Pct: number; // обсяг потрібний для 1% руху liquidationAt2Pct: number; } interface WallInfo { price: number; size: number; sizeUSD: number; relativeSize: number; // у скільки разів більше середнього рівня } 

Обчислення метрик — розробка скринера криптовалют

function calculateDepthMetrics( snapshot: MarketDepthSnapshot, levels: number = 20 ): DepthMetrics { const bids = snapshot.bids.slice(0, levels); const asks = snapshot.asks.slice(0, levels); const midPrice = (bids[0][0] + asks[0][0]) / 2; const bidVolume = bids.reduce((sum, [, size]) => sum + size, 0); const askVolume = asks.reduce((sum, [, size]) => sum + size, 0); const imbalance = bidVolume / (bidVolume + askVolume); const spread = (asks[0][0] - bids[0][0]) / midPrice * 100; // Пошук стін: рівень з обсягом > avg * threshold const avgBidSize = bidVolume / bids.length; const avgAskSize = askVolume / asks.length; const wallThreshold = 3.0; // у 3× більше середнього = стіна const bidWall = bids.reduce((max, [price, size]) => { if (size > avgBidSize * wallThreshold) { if (!max || size > max.size) { return { price, size, sizeUSD: size * price, relativeSize: size / avgBidSize }; } } return max; }, null as WallInfo | null); // Ліквідність на 1% руху const priceAt1PctDown = midPrice * 0.99; const liquidationAt1Pct = bids .filter(([price]) => price >= priceAt1PctDown) .reduce((sum, [, size]) => sum + size * midPrice, 0); return { symbol: snapshot.symbol, bidVolume: bidVolume * midPrice, askVolume: askVolume * midPrice, imbalance, spread, spreadUSD: asks[0][0] - bids[0][0], bidWall, askWall: null, // аналогічно для ask liquidationAt1Pct, liquidationAt2Pct: 0, // аналогічно }; } 

Які метрики використовувати для алертів?

Ми пропонуємо не просто моніторинг, а кастомні алерти. У проекті вже закладено чотири типи:

  • imbalance_spike — різкий перекіс;
  • wall_appeared — з'явилася стіна;
  • wall_removed — стіна знята (можливий спуфінг);
  • spread_widened — розширення спреду.
interface DepthAlert { symbol: string; condition: 'imbalance_spike' | 'wall_appeared' | 'wall_removed' | 'spread_widened'; threshold: number; notifyVia: ('ui' | 'telegram' | 'webhook')[]; } class DepthAlertEngine { private prevSnapshots = new Map<string, DepthMetrics>(); checkAlerts(current: DepthMetrics, alerts: DepthAlert[]) { const prev = this.prevSnapshots.get(current.symbol); if (!prev) { this.prevSnapshots.set(current.symbol, current); return; } for (const alert of alerts) { if (alert.symbol !== current.symbol) continue; switch (alert.condition) { case 'imbalance_spike': if (current.imbalance >= alert.threshold && prev.imbalance < alert.threshold) { this.triggerAlert(alert, `Imbalance spike on ${current.symbol}: ${(current.imbalance * 100).toFixed(1)}%`); } break; case 'wall_appeared': if (current.bidWall && !prev.bidWall && current.bidWall.sizeUSD >= alert.threshold) { this.triggerAlert(alert, `Bid wall appeared on ${current.symbol}: $${(current.bidWall.sizeUSD/1000).toFixed(0)}k`); } break; } } this.prevSnapshots.set(current.symbol, current); } } 
Приклад налаштування алерту на imbalance
{ "symbol": "BTCUSDT", "condition": "imbalance_spike", "threshold": 0.65, "notifyVia": ["telegram"] } 

При imbalance вище 0.65 трейдер отримає сповіщення в Telegram із зазначенням пари та поточного значення.

Збір даних: WebSocket менеджер

Для 50 пар потрібно 50 каналів. Менеджер автоматично перепідключається при обриві.

class MultiExchangeDepthFeed { private connections = new Map<string, WebSocket>(); private onUpdate: (snapshot: MarketDepthSnapshot) => void; subscribe(symbol: string, exchange: 'binance' | 'okx' | 'bybit') { const wsUrl = this.getWSUrl(exchange, symbol); const ws = new WebSocket(wsUrl); ws.onmessage = (e) => { const snapshot = this.parseMessage(exchange, JSON.parse(e.data)); if (snapshot) this.onUpdate(snapshot); }; ws.onclose = () => { setTimeout(() => this.subscribe(symbol, exchange), 3000); }; this.connections.set(`${exchange}:${symbol}`, ws); } } 

Як ми працюємо

  1. Аналітика — визначаємо список бірж і пар, налаштовуємо пороги.
  2. Проектування — архітектура збору, розрахунку, алертів.
  3. Розробка — пишемо код за описаними вище шаблонами.
  4. Тестування — на історичних даних та в реальному часі.
  5. Деплой — на ваш сервер або хмару.

Терміни: 4–6 тижнів під ключ. Ціна розраховується індивідуально залежно від кількості бірж та складності алертів. Отримайте консультацію — оцінимо ваше завдання за один робочий день. Зв'яжіться з нами в Telegram або на пошту.

Порівняння: ручний vs автоматичний аналіз

Параметр Ручний Скринер
Час на аналіз 1 пари 30–60 сек <1 мс
Охоплення пар 3–5 50+
Виявлення спуфінгу випадково гарантовано
Алерти немає Telegram/UI

Додаткові метрики для алертів

Метрика Опис Рекомендований поріг
Imbalance bid/(bid+ask) >0.6 або <0.4
Wall size обсяг стіни в USD >$100k
Spread % спред >0.05% для BTC
Liquidation @1% обсяг для 1% руху < $1M для BTC

Наш досвід — 5 років у розробці торгових інструментів, 20+ проектів. Ми знаємо, як зробити надійний продукт. Гарантуємо якість і надаємо вихідний код.

Що входить у роботу

  • Вихідний код скринера (TypeScript, React-інтерфейс);
  • Документація з розгортання та налаштування;
  • Дашборд із сортованою таблицею;
  • Система алертів (Telegram + UI);
  • Навчання команди (2 години онлайн).

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