Налаштування торгового бота в мобільному застосунку
Торговий бот працює на сервері, мобільний застосунок — його панель управління. Користувач приходить не програмувати бота, а налаштовувати: виставити тейк-профіт, стоп-лос, розмір позиції, обрати пари. Помилка в одному полі (наприклад, плече 100x замість 10x) може призвести до непередбачених ордерів. Інтерфейс має бути передбачуваним — невірні значення не повинні йти на сервер. Ми розробляємо такі екрани під ключ з 7+ років досвіду у фінансових мобільних застосунках (понад 50 проєктів). Гарантуємо відповідність App Store Review Guidelines і політикам Google Play.
Як правильно валідувати числові параметри?
Параметри торгового бота поділяються на кілька груп. Числові з обмеженнями: тейк-профіт у відсотках (0.1–50%), розмір ордера в USDT (мінімум диктує біржа), плече для ф'ючерсів (1x–125x). Для таких параметрів використовуємо TextField з валідацією на льоту плюс слайдер для швидкого вибору поширених значень. Слайдер у 3 рази прискорює налаштування типових значень порівняно з полем введення.
Переліки: тип ордера (limit/market/stop), напрямок (long/short/both), таймфрейм для сигналу. Тут — Picker / DropdownMenu / сегментовані кнопки. Торгові пари: користувач обирає зі списку доступних пар на біржі. Список підвантажується через API біржі, кешується та підтримує пошук. Реалізація на Flutter з використанням StateNotifier для керування станом.
// Flutter — форма параметрів з валідацією class BotSettingsForm extends ConsumerStatefulWidget { ... } class _BotSettingsFormState extends ConsumerState<BotSettingsForm> { final _formKey = GlobalKey<FormState>(); late TextEditingController _takeProfitController; late TextEditingController _stopLossController; @override Widget build(BuildContext context) { return Form( key: _formKey, child: Column( children: [ TextFormField( controller: _takeProfitController, keyboardType: const TextInputType.numberWithOptions(decimal: true), inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,2}'))], validator: (value) { final v = double.tryParse(value ?? ''); if (v == null || v < 0.1 || v > 50) return 'Допустимо: 0.1 – 50%'; return null; }, decoration: const InputDecoration( labelText: 'Тейк-профіт (%)', suffixText: '%', ), ), // ... інші поля ElevatedButton( onPressed: _submit, child: const Text('Зберегти'), ), ], ), ); } void _submit() { if (!_formKey.currentState!.validate()) return; final params = BotParams( takeProfit: double.parse(_takeProfitController.text), stopLoss: double.parse(_stopLossController.text), ); ref.read(botSettingsProvider.notifier).save(params); } } Як захистити бота від випадкових змін?
Зміна параметрів працюючого бота — небезпечна операція. Якщо бот тримає відкриті позиції, зміна стоп-лосу або розміру ордера може викликати непередбачені ордери. Тому перед відправкою — підтвердження з показом diff: «Тейк-профіт: 2% → 3.5%». Додатково: деякі параметри можна змінювати тільки при зупиненому боті (наприклад, торгові пари або тип стратегії). Такі поля блокуються в UI, якщо bot.status == RUNNING, з поясненням «Зупиніть бота для зміни».
Чому pessimistic update, а не optimistic?
Для операцій з налаштуваннями використовуємо pessimistic update: спочатку запит на сервер, при успіху — оновлюємо UI. Не оптимістично, тому що якщо бот відхилив параметри (наприклад, мінімальний ордер на біржі — $10, а користувач ввів $5), потрібно одразу показати помилку з сервера, а не відкатувати. На Riverpod (Flutter) паттерн через AsyncNotifier:
class BotSettingsNotifier extends AsyncNotifier<BotSettings> { @override Future<BotSettings> build() => ref.read(botRepositoryProvider).getSettings(botId); Future<void> save(BotParams params) async { state = const AsyncLoading(); state = await AsyncValue.guard( () => ref.read(botRepositoryProvider).updateSettings(botId, params), ); } } Які типові помилки виникають при налаштуванні?
Початківці часто забувають про мінімальний крок зміни для деяких бірж (наприклад, тейк-профіт з кроком 0.1%). Або вводять плече, що перевищує допустиме для обраної торгової пари. Щоб цього уникнути, ми додаємо динамічні підказки під полями: вони показують поточний ліміт при введенні значення за межами норми. Також використовується debounce для запиту валідації на сервері, щоб не перевантажувати API.
Як зберегти налаштування? Покрокова інструкція
- Заповніть форму: введіть числові параметри (тейк-профіт, стоп-лос, розмір ордера). Валідація спрацьовує при введенні.
- Виберіть торгові пари з пошукового списку.
- Перевірте diff в діалозі підтвердження: червоним старі значення, зеленим нові.
- Натисніть «Зберегти». Якщо бот активний, небезпечні поля заблоковані — спочатку зупиніть бота.
- Після успішної відповіді сервера — оновлення UI. У разі помилки — повідомлення сервера.
Порівняння optimistic vs pessimistic update
| Критерій | Optimistic | Pessimistic |
|---|---|---|
| Швидкість UI | Миттєво | Після відповіді |
| Ризик розсинхрону | Високий | Нульовий |
| Підходить для | Чати, лайки | Фінансові операції |
| Обробка помилок | Відкат стану | Показ помилки сервера |
Pessimistic update надійніший для торгових ботів: запобігає помилковим ордерам.
Що входить в роботу
| Компонент | Опис |
|---|---|
| Форма налаштувань | Валідація всіх числових полів (min/max, precision) |
| Вибір торгових пар | Пошук, підвантаження з API біржі, кешування |
| Блокування небезпечних полів | При активному боті поля блокуються з поясненням |
| Confirmation dialog | Показує diff змін перед відправкою |
| Чернетка | Збереження в SharedPreferences / UserDefaults |
Строки розробки
Орієнтовно 4–6 робочих днів залежно від кількості параметрів і складності валідаційних правил. Вартість розраховується індивідуально після аналізу вимог. Щоб отримати точну оцінку, напишіть нам — ми проаналізуємо вашу специфікацію і запропонуємо рішення.
Чому обирають нас
Ми — команда мобільних розробників з 7+ років досвіду у фінансових застосунках. Налагоджений процес code review та тестування. Всі рішення відповідають App Store Review Guidelines та політикам Google Play. Оцінимо ваш проєкт безкоштовно і дамо рекомендації. Зв'яжіться з нами, щоб обговорити ваш проєкт. Отримайте консультацію з налаштування UI для торгового бота. Замовте розробку екрана налаштувань вже сьогодні.







