Self-Hosted DCA Bot: автоматизация криптотрейдинга на 100+ биржах

Проблема: зависимость от внешних сервисов

Большинство DCA (Dollar Cost Averaging) ботов для криптовалют — это SaaS-решения типа 3Commas или TradingView. Вы платите подписку, доверяете свои API-ключи третьей стороне и привязываетесь к ограниченному списку бирж.

Но что если вы хотите:

  • Полный контроль над данными и логикой торговли
  • Независимость от платных подписок
  • Гибкость — использовать любую из 100+ бирж
  • Безопасность — API-ключи остаются у вас на сервере
  • Кастомизацию — добавлять свою логику и стратегии

Именно для этого я создал self-hosted DCA bot на Go с поддержкой CCXT.

Что это такое

Это Production-ready open-source бот для автоматизации стратегии усреднения стоимости (DCA) на криптовалютных биржах:

  • Мультибиржевость: Bybit, Binance, OKX, BingX и 100+ бирж через CCXT
  • Smart DCA: покупает больше при просадке цены (адаптивное усреднение)
  • Web Dashboard: современный React-интерфейс для управления и мониторинга
  • Real-time PNL: отслеживание прибыли/убытков по всем парам
  • Price Conditions: покупка ниже MA, при определённом RSI или триггерной цене
  • Уведомления: Telegram и Email оповещения о сделках
  • Production-ready: graceful shutdown, panic recovery, structured logging
  • Single Binary: один исполняемый файл с встроенным фронтендом

Архитектура: просто и надёжно

Одно из ключевых преимуществ — архитектура single binary. Всё упаковано в один исполняемый файл:

┌─────────────────────────────────────┐
│  crypto-bot-server (один бинарник)  │  Port 8080
│  ┌─────────────┐ ┌─────────────────┐ │
│  │ REST API    │ │ React Dashboard │ │
│  │ /api/*      │ │ Встроен (embed) │ │
│  └──────┬──────┘ └─────────────────┘ │
└─────────┼────────────────────────────┘
          │
     ┌────▼─────┐
     │ CCXT     │  Интеграция с биржами
     │ Wrapper  │
     └────┬─────┘
          │
     ┌────▼──────────────────────┐
     │  100+ бирж                │
     │  Bybit │ Binance │ OKX... │
     └────────────────────────────┘

Tech Stack:

  • Backend: Go 1.21+ с CCXT v4 (через wrapper)
  • Frontend: React 18 + Vite (встроен в бинарник через //go:embed)
  • Exchanges: CCXT (универсальная библиотека для 100+ бирж)
  • Deployment: Docker + Docker Compose или standalone binary

Как это работает: Smart DCA в действии

Классический DCA — это покупка на фиксированную сумму через равные интервалы. Но бот умеет больше благодаря Smart DCA:

{
  "trading_pair": "BTC-USDT",
  "order_amount_usdt": 50,
  "interval_hours": 24,
  "smart_dca": {
    "enabled": true,
    "deviation_threshold": 5.0,    // Если цена ниже средней на 5%
    "max_multiplier": 2.0,          // Покупаем в 2 раза больше
    "multiplier_type": "linear"     // Линейное или экспоненциальное увеличение
  }
}

Пример: Если ваша средняя цена покупки BTC — $50,000, а текущая цена упала до $47,500 (-5%), бот автоматически купит не на $50, а на $100. Это позволяет быстрее усреднить позицию при просадках.

Деплой за 3 минуты

Один из самых важных критериев для меня — простота развёртывания. Бот можно установить тремя способами:

1. Standalone Binary (рекомендуется)

# Собираем бинарник со встроенным фронтендом
make build

# Запускаем
./bin/crypto-bot-server

# Открываем браузер
http://localhost:8080

Всё! Один файл, один порт, никаких зависимостей.

2. Docker (для продакшена)

# Настраиваем API-ключи в .env
cp .env.example .env
nano .env

# Запускаем
docker compose up -d

# Проверяем логи
docker compose logs -f

3. Development Mode (для разработки)

# Запускает backend + frontend с hot-reload
make run

# Backend: http://localhost:8080
# Frontend: http://localhost:3000 (с HMR)

Применение

  • Trading-as-a-Service: добавьте multi-tenancy и продавайте как SaaS
  • Custom Trading Bots: используйте как основу для своих алгоритмов
  • Интеграции с биржами: CCXT даёт доступ к 100+ биржам из коробки
  • Portfolio Management: отслеживание PNL и балансов в реальном времени
  • Автоматизация DCA-стратегии без абонентской платы
  • Полный контроль над логикой торговли (open source)
  • Тестирование на testnet перед реальными сделками

Безопасность и надёжность

  • API-ключи: хранятся локально в .env, никогда не покидают ваш сервер
  • Testnet First: можно тестировать на тестовой сети перед продакшеном
  • Graceful Shutdown: корректное завершение сделок при остановке
  • Panic Recovery: автоматическое восстановление при ошибках CCXT
  • Structured Logging: logrus для детального мониторинга
  • Non-Root Docker: контейнер работает от непривилегированного пользователя
  • Health Checks: встроенные проверки здоровья для Docker

Реальные цифры: размер и производительность

  • Binary Size: ~30MB (включая фронтенд)
  • Docker Image: ~35MB (Alpine base)
  • Memory Usage: ~50-100MB RAM в runtime
  • Cold Start: <1 секунда
  • API Response Time: <100ms для большинства эндпоинтов

Кастомизация и интеграция

  • Добавление новых стратегий (Grid Bot, Martingale, Arbitrage)
  • Интеграция с внутренними системами
  • Multi-tenancy для SaaS-моделей
  • WebSocket для real-time данных
  • Margin/Futures trading
  • Copy-trading функционал
  • Kubernetes deployment
  • Мониторинг (Prometheus, Grafana, Datadog)

Технический стек

  • Go: concurrency, error handling, structured logging
  • React + Vite: современный фронтенд с HMR
  • Docker Multi-Stage Build: оптимизация размера образов
  • CCXT Integration: универсальная работа с биржами
  • go:embed: встраивание статики в бинарник
  • Graceful Patterns: context, channels, waitgroups
  • Testing: unit + integration тесты

Заключение

Self-hosted DCA bot — полноценное решение для автоматизации криптотрейдинга:

  • Работает на 100+ биржах через CCXT
  • Не требует подписок и внешних сервисов
  • Полный контроль над логикой и данными
  • Deployment за 3 минуты (один бинарник или Docker)
  • Production-ready (error handling, logging, monitoring)

Если нужна кастомизация или интеграция с биржами — свяжитесь со мной.