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

Ми розробляємо професійні volume screeners для криптофондів і трейдерів, які працюють з аномаліями об'єму. Готові рішення на кшталт CoinMarketCap показують лише TOP-10 за абсолютним об'ємом — ви пропустите спайк на новій парі в Uniswap або CEX з низькою ліквідністю. Наші screener-двигуни моніторять

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1451
  • 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

Ми розробляємо професійні volume screeners для криптофондів і трейдерів, які працюють з аномаліями об'єму. Готові рішення на кшталт CoinMarketCap показують лише TOP-10 за абсолютним об'ємом — ви пропустите спайк на новій парі в Uniswap або CEX з низькою ліквідністю. Наші screener-двигуни моніторять 500+ пар на 10 біржах одночасно, обчислюючи Volume Ratio, Relative Volume (RVOL) та тренд об'єму в реальному часі. Кожна секунда затримки коштує грошей: професійний трейдер втрачає можливість увійти в позицію до натовпу. Тому ми реалізуємо збір даних з мінімальною затримкою, кастомні метрики та алерти в Telegram/Slack.

Ключова фішка нашого підходу — адаптивний threshold: ми не використовуємо жорсткі пороги, а підлаштовуємось під волатильність кожної пари на кожному таймфреймі. Це дає в 2–3 рази менше хибних спрацьовувань порівняно з фіксованим ratio 3. Результат — ви бачите тільки ті спайки, які дійсно варті уваги, а не шум.

Чому простого Volume Ratio недостатньо?

Volume Ratio = поточний об'єм / середній за N періодів. Ratio > 3 — потенційний спайк. Але якщо брати лише цей показник, ви отримаєте хибні спрацьовування на парах із добовими циклами. Наприклад, на ETH/USDT о 2:00 ночі норма — 10 000 ETH, а о 14:00 — 100 000 ETH. Ratio 3 вночі — це всього 30 000, що вдень вважається нормою. Тому ми додаємо RVOL — Relative Volume за часом доби (Relative volume).

RVOL вирівнює сезонність: для кожної години зберігається середній об'єм за 30 днів. Поточний об'єм ділиться на середнє для цієї години. RVOL > 2 = аномалія незалежно від часу.

Метрика Формула Що дає
Volume Ratio поточний / середній за 20 Виявлення зростання об'єму
RVOL поточний / середній за цю годину Врахування добової сезонності
Volume Spike разовий сплеск > 3x попередньої свічки Вхід великого гравця
OBV накопичувальний індикатор Потік money flow (накопичення/розподіл)
Volume Trend нахил регресії за 5 свічок Напрямок (зростає/падає)

Як збирати дані з 5 бірж одночасно?

Паралельний збір — ключова складність. Одна біржа віддає дані за 50–200 мс, а 5 — вже 1 секунда послідовно. Ми використовуємо Promise.all з розбиттям на чанки по 10 символів і паузами між чанками, щоб не перевищити rate limit.

Ось приклад класу VolumeDataCollector — він кешує свічки та фільтрує пари за мінімальним Volume Ratio.

class VolumeDataCollector { private candleCache = new Map<string, OHLCV[]>(); private exchange: ccxt.Exchange; async fetchAllCandles(symbols: string[], timeframe: string): Promise<void> { const chunks = chunkArray(symbols, 10); for (const chunk of chunks) { await Promise.all( chunk.map(async (symbol) => { const candles = await this.exchange.fetchOHLCV(symbol, timeframe, undefined, 100); this.candleCache.set(`${symbol}:${timeframe}`, candles.map(formatCandle)); }) ); await sleep(100); } } async getScreenerData(timeframe: string, minVolumeRatio: number = 2): Promise<VolumeScreenerItem[]> { const results: VolumeScreenerItem[] = []; for (const [key, candles] of this.candleCache) { if (!key.endsWith(`:${timeframe}`)) continue; const symbol = key.split(':')[0]; if (candles.length < 21) continue; const metrics = calculateVolumeMetrics(candles.slice(0, -1), candles[candles.length - 1]); if (metrics.volumeRatio >= minVolumeRatio) { results.push({ symbol, currentVolume: candles[candles.length - 1].volume, ...metrics, }); } } return results.sort((a, b) => b.volumeRatio - a.volumeRatio); } } 
Як розраховуються метрики об'єму (розшифровка)

Функція calculateVolumeMetrics бере останні 20 свічок для середнього, поточну свічку для Volume Ratio, а також 5 останніх для тренду. Volume Trend вважається через лінійну регресію: позитивний нахил = збільшення, негативний = зменшення. Спайк фіксується при Ratio > 3 незалежно від тренду.

function calculateVolumeMetrics( candles: OHLCV[], currentCandle: OHLCV ): VolumeMetrics { const period = 20; const recentCandles = candles.slice(-period); const avgVolume = recentCandles.reduce((sum, c) => sum + c.volume, 0) / period; const volumeRatio = currentCandle.volume / avgVolume; const recentVolumes = candles.slice(-5).map(c => c.volume); const volumeTrendSlope = linearRegressionSlope(recentVolumes); const priceChange = (currentCandle.close - candles.slice(-2)[0].close) / candles.slice(-2)[0].close; const volumeChange = currentCandle.volume / candles.slice(-2)[0].volume - 1; const confirming = (priceChange > 0 && volumeChange > 0) || (priceChange < 0 && volumeChange > 0); return { avgVolume, volumeRatio, volumeTrend: volumeTrendSlope > 0.1 ? 'increasing' : volumeTrendSlope < -0.1 ? 'decreasing' : (volumeRatio > 3 ? 'spike' : 'normal'), volumePrice: confirming ? 'confirming' : 'diverging', }; } 

UI для трейдера: що ми вбудовуємо

Інтерфейс — React-таблиця з сортуванням по колонках і візуальною індикацією. Ми використовуємо компонент VolumeRow, який підсвічує рядки з Ratio > 5 оранжевим фоном — трейдер бачить термінові сигнали за секунду.

const VolumeRow: React.FC<{ item: VolumeScreenerItem }> = ({ item }) => ( <tr className={item.volumeRatio > 5 ? 'highlight-spike' : ''}> <td><a href={`/trade/${item.symbol}`}>{item.symbol}</a></td> <td> <VolumeRatioBar ratio={item.volumeRatio} /> <span>{item.volumeRatio.toFixed(1)}x</span> </td> <td>{item.rvol.toFixed(1)}x</td> <td>{formatVolume(item.currentVolume)}</td> <td className={item.priceChange > 0 ? 'green' : 'red'}> {item.priceChange > 0 ? '+' : ''}{item.priceChange.toFixed(2)}% </td> <td><TrendIcon trend={item.volumeTrend} /></td> <td> <span className={item.volumePrice === 'confirming' ? 'green' : 'yellow'}> {item.volumePrice === 'confirming' ? '✓ Confirm' : '⚡ Diverge'} </span> </td> </tr> ); 

Як налаштувати алерти під свою стратегію?

Недостатньо показувати дані — трейдер повинен отримувати сповіщення. Налаштовуємо алерти на Telegram, email або webhook. Кожен алерт прив'язаний до символу та мінімального Ratio. Як тільки значення досягнуто, надсилається повідомлення з деталями.

Канал Формат Типова затримка
Telegram Текст з markdown 1–3 секунди
Email HTML 10–30 секунд
Webhook JSON 0.5–2 секунди
async function checkVolumeAlerts(screenerData: VolumeScreenerItem[], alerts: VolumeAlert[]) { for (const alert of alerts) { const item = screenerData.find(d => d.symbol === alert.symbol); if (!item) continue; if (item.volumeRatio >= alert.minVolumeRatio) { await sendAlert(alert.notifyVia, { message: `Volume spike on ${item.symbol}! Ratio: ${item.volumeRatio.toFixed(1)}x avg | Price: ${item.priceChange > 0 ? '+' : ''}${item.priceChange.toFixed(2)}%`, }); } } } 

Процес роботи

  1. Аналітика — обговорюємо біржі, пари, метрики, типи алертів.
  2. Проектування — архітектура збору, кешування, фільтрації; дизайн UI.
  3. Розробка — збір даних, розрахунок метрик, алерти, інтерфейс; паралельно пишемо тести.
  4. Інтеграція — підключаємо біржі через API, налаштовуємо rate limits.
  5. Тестування — на історичних даних перевіряємо хибні спрацьовування, оптимізуємо пороги.
  6. Деплой — розгортаємо в хмарі (AWS/GCP), налаштовуємо моніторинг.

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

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

  • Архітектурна документація та схеми потоків даних
  • Вихідний код volume screener з відкритим API
  • Адаптивна таблиця з сортуванням і фільтрами
  • Система алертів (Telegram, email, webhook)
  • Розгортання в хмарній інфраструктурі
  • Документація з експлуатації
  • Гарантійна підтримка 2 тижні після деплою

Строки: від 4 до 6 тижнів залежно від кількості бірж і метрик. Вартість розраховується індивідуально після аналізу вашого кейсу. Досвід нашої команди: 5+ років у розробці Web3, 50+ реалізованих проєктів, сертифіковані інженери з Solidity та Rust. Ми гарантуємо дотримання SLA та прозорий процес.

Бажаєте отримати volume screener під свої завдання? Оцінимо проєкт за 2 дні — замовте розробку та отримайте аналіз ринку в подарунок.