Desktop Rust · Tauri · React

QuantTerminal Pro

Десктопный торговый терминал с единым API для 18 бирж

Торговый терминал
< 5 мс
обновление данных
18
бирж в v1
80–120
МБ RAM
3+ мес
без перезапусков

О проекте

Клиент — независимый трейдер с многолетним опытом, торгующий одновременно на нескольких биржах. Основная боль: приходилось держать открытыми 5–6 вкладок браузера с разными биржами, переключаться между ними вручную, а данные везде были в разных форматах.

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

Технические требования

Стек и архитектура

Frontend: Tauri (Rust backend + React UI). Выбор Tauri вместо Electron обусловлен жёсткими требованиями к производительности и памяти. Аналогичное Electron-приложение потребляло бы 400–600 МБ RAM; Tauri держится в пределах 80–120 МБ.

Слой работы с биржами: Rust. Написали единый адаптер, нормализующий данные от каждой биржи к общему формату. Новая биржа добавляется через реализацию стандартного интерфейса — без затрагивания остального кода.

WebSocket-менеджер: пул соединений с автоматическим переподключением, ведением состояния ордербука, логикой синхронизации snapshot + incremental updates. Написан на Rust с использованием tokio async runtime.

Хранилище: SQLite для локального хранения истории ордеров, настроек и профилей. Real-time данные хранятся только в памяти.

Где было сложно

Агрегированный ордербук

Самая нетривиальная часть. Разные биржи присылают данные с разной частотой и в разных форматах. Нужно было объединять их в единый ордербук, корректно обрабатывая расхождения по времени и формату. Добавили fuzzy matching для идентификации одного инструмента на разных биржах (BTC-USDT vs BTCUSDT vs BTC/USDT).

Рендеринг под нагрузкой

Ордербук с 50 уровнями обновляется несколько раз в секунду. Наивная реализация (перерисовывать всё при каждом обновлении) создавала заметные фризы. Перешли на виртуализированный список с точечными обновлениями только изменившихся строк.

Разные rate limits на разных биржах

Каждая биржа имеет свои ограничения. Написали централизованный rate limiter с очередью запросов per-exchange.

Результат

Нужен торговый терминал под ваши требования? Расскажите о задаче — оценим за 24 часа.
Все кейсы Обсудить похожий проект