
Fibonacci Assistant Telegram Bot
Дей-трейдеры, работающие на волатильных крипторынках, не всегда могут полагаться на тяжеловесное десктопное ПО вроде TradingView, находясь в движении. Клиенту требовалось молниеносное mobile-first решение для точного расчета математических уровней на основе динамики цены прямо в мессенджере, где они обсуждают сделки.
Техническая Архитектура
- Базовый фреймворк:
grammy.js(TypeScript) - Агрегация данных: Binance WebSocket Streams + REST
- Управление состоянием: Redis (кэширование сессий и rate-limiting)
- Инфраструктура: Node.js, Docker, деплой на AWS EC2
- База данных: PostgreSQL (Настройки пользователей и подписки)
Инженерные Вызовы
1. Обработка высокочастотных потоков данных (High-Frequency Streams)
Для точного расчета уровней Фибоначчи нужна абсолютная точность максимумов (H) и минимумов (L) на определенном таймфрейме. Бот должен был парсить сотни тиков цены в секунду, не блокируя event loop в Node.js и не отставая от живого рынка.
Решение: Я реализовал специализированный буфер WebSocket'ов, использующий алгоритм скользящего окна (sliding window). Вместо того чтобы пересчитывать уровни на каждый тик, бот агрегировал данные OHLCV в оперативной памяти и запускал ресурсоемкие вычисления только тогда, когда пользователь делал запрос, или если цена пересекала заранее рассчитанный критический порог (threshold).
2. Управление состоянием (Conversational State) в диалогах Telegram
Определение сложных технических индикаторов требует многократного ввода данных от пользователя (торговая пара, таймфрейм и опорные точки). Организовать это через стандартный, линейный интерфейс чата очень сложно.
Решение: Я использовал возможности продвинутых Conversation-механик во фреймворке grammy.js. Я построил конечный автомат (State Machine), который управлял сессиями пользователей в Redis, проводя их через интерактивные inline-кнопки вместо монотонного ввода текстовых команд. Это кардинально улучшило UX, сократив среднее время на генерацию расчета с 15 секунд до двух тапов.
Бизнес-Итог
Бот радикальным образом изменил то, как трейдерское комьюнити клиента совершало сделки «на ходу». Снизив барьер (трение) для получения сложных математических данных, клиент получил взрывной рост вовлеченности в своих премиум-каналах. Инфраструктура спокойно масштабировалась для обработки тысяч одновременных пользователей во время высокой рыночной волатильности, без какого-либо снижения скорости ответа.