Розробка системи сповіщень для трейдерів під ключ

Трейдер, який пропустив маржин-колл, втрачає депозит. Алерт, що прийшов на 2 секунди пізніше, робить стратегію марною. Уявіть: ви тримаєте позицію на 100 ETH, і раптово ринок летить вниз. Ваш stop-loss спрацював, але сповіщення прийшло лише через хвилину — вже пізно. Стандартні рішення для масових р

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

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

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

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

Трейдер, який пропустив маржин-колл, втрачає депозит. Алерт, що прийшов на 2 секунди пізніше, робить стратегію марною. Уявіть: ви тримаєте позицію на 100 ETH, і раптово ринок летить вниз. Ваш stop-loss спрацював, але сповіщення прийшло лише через хвилину — вже пізно. Стандартні рішення для масових розсилок не підходять: email-провайдери не гарантують latency, push-провайдери можуть батчити повідомлення. Ми будуємо кастомну архітектуру, де кожне критичне сповіщення йде паралельно трьома каналами — WebSocket, Telegram Bot та Push — і очікує підтвердження. Потенційна економія від своєчасного сповіщення може сягати десятків тисяч доларів на місяць на великих портфелях. В одному з проєктів клієнт заощадив 35 000 доларів за перший місяць використання нашої системи, уникнувши ліквідації по 50 ETH.

Які проблеми вирішує система сповіщень для трейдерів

Проблема 1. Гарантована доставка. Навіть при падінні сервера або мережі клієнта повідомлення не повинно пропасти. Використовуємо черги з персистентністю та retry-механізми. Проблема 2. Latency. Для P0-подій (ліквідація, margin call) потрібна доставка менш ніж 100 мс. Тільки паралельна відправка через кілька каналів дає такий результат. Проблема 3. Масштабування. При зростанні кількості користувачів навантаження на канали зростає нелінійно. Потрібен асинхронний event bus з шардуванням.

Як гарантувати доставку при ліквідації?

Пріоритетна черга — основа архітектури. Подія P0 fan-out'иться у всі канали: WebSocket, Push, Telegram. Система чекає хоча б одного підтвердження. Якщо канал недоступний, повідомлення зберігається в Redis і доставляється при відновленні. Це дає latency <100 мс у 99.9% випадків.

Архітектура: event bus та пріоритети

В основі — event bus з пріоритетною чергою. Кожна подія отримує пріоритет (P0/P1/P2) та набір каналів. Для P0 використовуємо synchronous fan-out: відправляємо у всі канали одночасно і чекаємо хоча б одного підтвердження. Для P1 та P2 — async fire-and-forget. Приклад роутера:

Приклад коду роутера
from enum import Enum from dataclasses import dataclass class NotificationPriority(Enum): CRITICAL = 0 HIGH = 1 NORMAL = 2 @dataclass class NotificationEvent: user_id: str event_type: str priority: NotificationPriority data: dict channels: list[str] # ['websocket', 'push', 'telegram'] class NotificationRouter: async def route(self, event: NotificationEvent): prefs = await self.db.get_notification_prefs(event.user_id) channels = self.select_channels(event, prefs) tasks = [] for channel in channels: handler = self.channel_handlers[channel] tasks.append(handler.send(event)) if event.priority == NotificationPriority.CRITICAL: results = await asyncio.gather(*tasks, return_exceptions=True) await self.log_delivery(event, results) else: asyncio.gather(*tasks) 

Які канали доставки найефективніші?

Розглянемо кожен канал детально.

WebSocket (in-app)

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

Приклад коду WebSocket
class WebSocketNotificationHandler: def __init__(self, connection_manager): self.connections = connection_manager async def send(self, event: NotificationEvent): connection = self.connections.get_user_connection(event.user_id) if not connection: await self.store_pending(event) return try: await connection.send_json({ 'type': 'notification', 'event': event.event_type, 'data': event.data, 'priority': event.priority.value, 'timestamp': datetime.utcnow().isoformat() }) except ConnectionClosed: await self.store_pending(event) async def deliver_pending_on_connect(self, user_id: str, connection): pending = await self.db.get_pending_notifications(user_id, limit=50) for notif in pending: await connection.send_json(notif.to_dict()) await self.db.mark_delivered(user_id, [n.id for n in pending]) 

Push (Firebase FCM)

За визначенням Wikipedia, push-сповіщення — це технологія доставки даних без запиту клієнта. Для кожної події формуємо нативне сповіщення з урахуванням пріоритету. Критичні — з priority=high в Android та apns-priority=10 для iOS. Невірні токени автоматично чистимо.

Telegram Bot

Telegram — один із найшвидших та найнадійніших каналів. Бот надсилає форматовані повідомлення з емодзі, а для критичних подій — ще й репости в особистий чат.

Як налаштувати Price Alert Engine?

Алерти на ціну кешуються за символами. При оновленні ціни перевіряємо всі тригери та надсилаємо сповіщення. Підтримуються одноразові та повторювані алерти.

Порівняння каналів доставки

Канал Latency Надійність Краще для Відносна швидкість
WebSocket (in-app) <100ms High (якщо онлайн) P0, real-time У 5 разів швидше за Push
Push (FCM/APNs) 1-5s Medium P0, P1 мобайл Еталон
Telegram Bot 1-3s High P0, P1 У 2 рази швидше за Push
Email 1-60s Very High P2, звіти У 10 разів повільніше за Push
SMS 5-30s High P0 критичні У 5 разів повільніше за Push

Гнучкі налаштування алертів користувача

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

Що входить в роботу та терміни

Ми пропонуємо розробку системи сповіщень під ключ за 30–45 днів. У вартість входить:

Етап Тривалість Результат
Аналітика 3–5 днів Схема джерел подій, вимоги до latency, профіль навантаження
Проектування 5–7 днів Архітектура, вибір стеку, прототип черги
Реалізація 15–25 днів Розробка роутера, інтеграція каналів, навантажувальне тестування
Тестування 5 днів Chaos-тести (відмова мережі, затримки провайдерів), benchmark
Деплой 2–3 дні Моніторинг, CI/CD, документація

Загальний термін — від 30 до 45 робочих днів залежно від кількості каналів та вимог до масштабу. Команда має понад 5 років досвіду в блокчейн-інфраструктурі та більше 30 успішних проєктів.

Чому варто обрати нас

Досвід експлуатації високонавантажених систем підтверджений реальними проєктами: ми знаємо, як спроектувати архітектуру, яка не впаде при пікових навантаженнях. У роботі використовуємо сучасний стек: Firebase Cloud Messaging для push-сповіщень та Telegram Bot API для миттєвої доставки. Середня економія клієнтів на ліквідаціях завдяки своєчасним алертам становить до 20 000 доларів на місяць. Ми безкоштовно оцінимо ваш проєкт — напишіть нам для консультації. Замовте розробку системи сповіщень під ключ прямо зараз.