Реализация DCA-бота (Dollar Cost Averaging) в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация DCA-бота (Dollar Cost Averaging) в мобильном приложении
Средняя
~5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация DCA-бота (Dollar Cost Averaging) в мобильном приложении

DCA-бот покупает актив через равные интервалы на фиксированную сумму: каждый понедельник в 10:00 — $50 в BTC, независимо от цены. Стратегия простая, но мобильный интерфейс для управления ею требует точной работы с расписаниями, историей покупок и текущей позицией.

Настройка DCA-стратегии

Пользователь задаёт несколько параметров:

  • Актив и биржа — BTC/USDT на Binance
  • Сумма ордера — $50 за раз
  • Интервал — каждые 7 дней / каждые 24 часа / каждые N часов
  • Первая покупка — немедленно или по расписанию
  • Лимит по средней цене (опционально) — не покупать, если цена выше $X

Интервал удобно задавать через picker с предустановленными вариантами (1ч / 4ч / 12ч / 24ч / 7д / 30д) плюс возможность кастомного значения. На бэкенде это превращается в cron-выражение или в scheduled job с execute_at.

// Flutter — выбор интервала
enum DcaInterval {
  oneHour('1ч', Duration(hours: 1)),
  fourHours('4ч', Duration(hours: 4)),
  oneDay('24ч', Duration(hours: 24)),
  oneWeek('7д', Duration(days: 7));

  const DcaInterval(this.label, this.duration);
  final String label;
  final Duration duration;
}

// Segment control или ChoiceChip
Wrap(
  spacing: 8,
  children: DcaInterval.values.map((interval) => ChoiceChip(
    label: Text(interval.label),
    selected: selectedInterval == interval,
    onSelected: (_) => setState(() => selectedInterval = interval),
  )).toList(),
)

Текущая позиция и статистика

Главный экран DCA-бота показывает, как накапливается позиция:

  • Средняя цена входа — взвешенная средняя по всем покупкам
  • Текущая цена — актуальная, из биржи или price API
  • Unrealized PnL — разница между текущей ценой и средней ценой входа, умноженная на объём
  • Следующая покупка — countdown до следующего исполнения

Средняя цена входа считается бэкендом и хранится в модели бота. Не доверяем клиенту считать её самостоятельно — расхождения из-за комиссий, частичных исполнений и округлений.

История покупок

Список всех выполненных ордеров: дата, цена исполнения, количество актива, сумма в USD. Визуально полезно наложить точки покупок на ценовой график актива — пользователь видит, что часть покупок пришлась на локальные дна. Именно это демонстрирует суть DCA.

На Flutter: fl_chart LineChart с ценой BTC как линией и кастомными FlSpot маркерами для каждой DCA-покупки.

LineChartBarData(
  spots: priceHistory.map((p) => FlSpot(p.timestamp.toDouble(), p.price)).toList(),
  isCurved: true,
  color: Colors.blue,
  dotData: FlDotData(
    show: true,
    checkToShowDot: (spot, barData) => dcaPurchaseDates.contains(spot.x),
    getDotPainter: (spot, percent, barData, index) => FlDotCirclePainter(
      radius: 5,
      color: Colors.green,
    ),
  ),
)

Стоп-условия

DCA-бот не работает вечно — нужны условия остановки:

  • Достигнуто максимальное число покупок (например, 52 покупки = год еженедельного DCA)
  • Накоплено максимальное количество актива
  • Достигнут target PnL (например, +30% по позиции — зафиксировать)

Эти условия задаются в настройках и отображаются как «прогресс к цели»: 12 из 52 покупок, 0.18 из 0.5 BTC накоплено.

Что входит в работу

  • Форма создания DCA-стратегии с выбором интервала и условий остановки
  • Дашборд: средняя цена входа, текущий PnL, countdown до следующей покупки
  • График цены с отмеченными точками покупок
  • История ордеров с пагинацией
  • Push при каждом исполнении ордера

Сроки

4–6 рабочих дней. Стоимость рассчитывается индивидуально после анализа требований.