Skip to content

Архитектура ​

Проект построен по микросервисной схеме с общими слоями:

  • PostgreSQL + TimescaleDB — основная реляционная база данных.
  • Redis / Valkey — кеш, pub/sub рыночных данных, исторические снапшоты, состояние торговых форков.
  • FastAPI backend — API авторизации, пользователей, платежей, админки, рынков, сигналов, триггеров.
  • Frontend (Vue 3 + Vite) — пользовательский веб-терминал.
  • Admin frontend (Vue 3 + Vite) — административная панель.
  • Торговый агент (spreadracer-v3-trading-agent, отдельный репозиторий и сервер) — исполнение сделок, мониторинг триггеров, GSL.
  • Воркеры — фоновые сервисы сбора данных и алертинга.

Структура репозитория ​

spreadracer-v3/
├── backend/                  # FastAPI backend + воркеры
│   ├── app/                  # API, модели, схемы, сервисы
│   ├── alembic/              # Миграции
│   ├── index_scanner/        # Составы индексных цен, DEX/CEX якоря (Связки)
│   ├── contract_validator/   # Валидация DEX-контрактов через GMGN
│   ├── market_data_gateway/  # WebSocket-шлюз к биржам
│   ├── market_loader/        # Синхронизация инструментов
│   ├── listing_worker/       # Мониторинг листингов/делистингов
│   ├── splash_worker/        # Детекция резких скачков цен (сплешей)
│   └── Dockerfile
├── cex_scanner/              # Сканер межбиржевых спредов (standalone)
├── dex_scanner/              # Сканер DEX-спредов
├── frontend/                 # Пользовательский терминал
├── admin-frontend/           # Админ-панель
├── anyex/                    # Унифицированная библиотека для работы с биржами
├── cex-listings/             # Парсер листингов бирж
├── docs-site/                # Эта документация (VitePress)
├── proxies/                  # Прокси-файлы по биржам
├── scripts/                  # Скрипты деплоя и webhook
├── DEPLOY.md                 # Инструкции по деплою
├── docker-compose.yml        # Dev-окружение
└── docker-compose.prod.yml   # Production

Поток данных ​

  1. market_data_gateway и ticker_worker пишут тикеры и стаканы в Redis (snapshot:last:{market_id}) и PostgreSQL (price_snapshots).
  2. cex_scanner / dex_scanner ищут спреды и шлют сигналы в backend (POST /agent/signals).
  3. Frontend показывает сигналы, графики и терминал.
  4. Пользователь создаёт триггер → backend сохраняет его и передаёт торговому агенту через Redis.
  5. Торговый агент мониторит спреды, исполняет сделки и публикует события (fork:events) → backend шлёт Telegram-уведомления и пишет исполнения в PostgreSQL.

Ключевые Redis-ключи ​

КлючНазначение
snapshot:last:{market_id}Последний тикер рынка
markets:{exchange}:{market_type}Кеш инструментов биржи
forks:{user}:{fork_id}Состояние форка у трейдера
positions:{user}:{fork_id}Открытая позиция
spread:{user}:{fork_id}Live-спред для карточки триггера
fork:eventsСтрим торговых событий (agent → backend)