Android Kotlin · MVVM · Firebase

TradeFlow Android

Мобильный торговый терминал для управления портфелем

Мобильное приложение для трейдинга
< 800 мс
тап → ордер
1.2 сек
push-уведомление
18 МБ
размер APK
2 тапа
закрыть позицию

О проекте

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

Это не попытка воссоздать десктоп на телефоне. Мобильное приложение решает конкретную задачу: контроль и быстрые операции, пока вы не за столом.

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

Стек

Язык: Kotlin. Нативная разработка под Android — полный контроль над производительностью.

Архитектура: MVVM + Clean Architecture. Раздельные слои позволяют тестировать бизнес-логику независимо от UI и менять биржевые интеграции без переписывания интерфейса.

Real-time данные: WebSocket-соединения работают в фоновом Foreground Service. Данные обновляются даже если приложение свёрнуто.

Push-уведомления: двухуровневая система. Критические события (исполнен ордер) — серверный push через Firebase Cloud Messaging. Ценовые алерты — локальная обработка в приложении.

Локальная БД: Room (SQLite). История ордеров хранится локально — отсюда офлайн-режим.

UX-решения

Быстрое закрытие позиции

Требование «2 тапа» реализовано через bottom sheet с подтверждением. Первый тап: свайп по позиции вправо. Второй: подтверждение суммы и биржи. Рыночный ордер отправляется немедленно.

Экран портфеля

Главный экран: суммарный PnL за день, список открытых позиций с текущим PnL. Цены обновляются в реальном времени — PnL пересчитывается немедленно при каждом обновлении.

Адаптация под мобильные ограничения

Батарея

В режиме «экономии батареи» переходим на polling с интервалом 30 секунд вместо постоянного WebSocket.

Нестабильная сеть

WebSocket-клиент переподключается за < 1 секунды при восстановлении сети и сразу запрашивает актуальное состояние.

Результат

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