Development торгового бота с мобильным приложением
Мобильное приложение для управления торговым ботом — самый сложный интерфейсный слой из возможных. Это не просто «Telegram но с кастомным UI». Это полноценное приложение с real-time данными, push-уведомлениями, биометрической аутентификацией и офлайн-режимом. Здесь сходятся требования к безопасности, производительности и UX.
Architecture: mobile-first API
Мобильное приложение требует специального API — не того же REST, что использует веб. Мобильные клиенты работают в условиях нестабильного соединения, батарейных ограничений и маленьких экранов. API должен это учитывать.
Subscription-based updates: вместо polling — WebSocket или gRPC streaming. Клиент подписывается на нужные данные (positions, balance, alerts) и получает updates по мере их появления. Это экономит трафик и батарею по сравнению с постоянным polling.
Optimistic updates: при отправке команды (пауза бота, изменение параметра) UI обновляется сразу, не дожидаясь ответа сервера. При ошибке — rollback. Пользователь воспринимает это как мгновенный отклик.
Pagination и infinite scroll: история сделок может содержать тысячи записей. Мобильный API должен возвращать страницы по 20-50 записей с cursor-based pagination.
gRPC vs WebSocket vs REST
| Протокол | Use case | Батарея | Сложность |
|---|---|---|---|
| REST | Команды, конфигурация | Нейтрально | Низкая |
| WebSocket | Real-time данные | Умеренно | Средняя |
| gRPC streaming | High-frequency updates | Хорошо | Высокая |
| SSE | Однонаправленные updates | Хорошо | Низкая |
Практический стек: REST для команд + WebSocket для real-time stream.
Технологии разработки
React Native: единая кодовая база iOS + Android, переиспользование логики с веб-версией если она на React. Библиотека react-native-chart-kit или victory-native для графиков. Минус — производительность хуже нативной для сложных анимаций.
Flutter: Dart, компилируется в нативный код. Отличная производительность, красивые UI компоненты из коробки. Хорошо для приложений с кастомным дизайном.
Нативные (Swift/Kotlin): максимальная производительность, доступ ко всем платформенным API. Требует два отдельных кодовых базы. Оправдано для HFT-мониторинга где каждый миллисекунд важен.
Для большинства trading bot apps — React Native или Flutter с преобладанием Flutter по качеству render performance.
Push-уведомления
Push — главная ценность мобильного приложения. Сделка закрылась в 3 ночи — пользователь увидит результат утром.
Стек: Firebase Cloud Messaging (FCM) для Android, APNs для iOS. FCM работает на обеих платформах, обычно используют его как единый gateway.
Типы уведомлений:
- Alert notifications: sound + badge, требуют внимания. Срабатывание SL, ошибка подключения.
- Informational: тихие, в notification center. Открытие позиции, дневной отчёт.
- Silent push: без UI, будят приложение для фоновой синхронизации.
Delivery guarantees: FCM не гарантирует доставку 100%. Для критических алертов (аварийная остановка) дублируйте через SMS (Twilio) или автозвонок.
Notification categories: iOS позволяет добавлять action buttons прямо в уведомление — «Закрыть позицию», «Пауза», «Игнорировать» — без открытия приложения. Реализуется через UNNotificationAction.
Биометрическая аутентификация и безопасность
Мобильное приложение должно использовать все доступные платформенные механизмы безопасности:
Biometric unlock: Face ID / Touch ID / Fingerprint для входа в приложение. Реализуется через LocalAuthentication (iOS) / BiometricPrompt (Android). В React Native — react-native-biometrics.
Secure storage: API ключи и токены сессии хранятся в Keychain (iOS) / Keystore (Android), не в AsyncStorage. AsyncStorage — plain text, читается при root-доступе.
Certificate pinning: мобильное приложение должно доверять только вашему серверному сертификату, не любому CA. Защита от MITM атак в корпоративных сетях с SSL inspection.
Jailbreak/Root detection: на скомпрометированных устройствах security гарантии не работают. Опционально — предупреждение при обнаружении jailbreak.
Auto-lock: автоматическая блокировка при переходе в фон на настраиваемый timeout (по умолчанию 5 минут).
Ключевые экраны приложения
Dashboard: portfolio overview, equity curve за выбранный период, статус бота с цветовым индикатором.
Positions: список открытых позиций с real-time P&L. Swipe-to-close для быстрого закрытия отдельной позиции.
Trade History: infinite scroll список сделок с фильтрацией по стратегии, инструменту, дате.
Bot Settings: параметры стратегий, риск-лимиты. Критичные параметры требуют биометрического подтверждения.
Alerts: история уведомлений с возможностью настройки threshold.
Разработка мобильного приложения увеличивает бюджет проекта на 50-100% по сравнению с только веб-интерфейсом. Оправдано, когда активный мониторинг и быстрое реагирование — бизнес-требование, а не nice-to-have.







