💰 Сделка
Автоматическое исполнение
Что такое Сделка?
Сделка - это финальный этап, где стратегия превращается в реальные ордера на бирже. Система отправляет ордера, мониторит их исполнение, управляет открытыми позициями и автоматически закрывает их при достижении стоп-лосса или тейк-профита.
Как это работает в бэкенде?
1. Order Execution Service
Микросервис на Python с прямыми WebSocket подключениями к биржам через CCXT Pro. Получает планы исполнения из Kafka, формирует и отправляет ордера через REST API бирж. Поддерживает retry механизм с exponential backoff при ошибках сети.
2. Order Book Manager
Подписывается на WebSocket стримы order book с бирж, кэширует в Redis. Для limit ордеров вычисляет оптимальную цену на основе спреда и глубины стакана. Использует алгоритм Smart Order Routing (SOR) для выбора лучшей биржи при арбитраже.
3. Position Monitor
Celery beat запускает периодические задачи (каждые 5-10 сек) для проверки открытых позиций. Сравнивает текущую цену со стоп-лоссом и тейк-профитом. При срабатывании триггера публикует событие в Kafka 'trading.close_position'. Логирует все изменения в PostgreSQL.
4. Trade Reconciliation
Ночной процесс сверки: запрашивает историю сделок с бирж через REST API, сравнивает с внутренней БД (PostgreSQL), выявляет расхождения. Обновляет балансы пользователей, рассчитывает комиссии, PnL. Результаты сохраняются в ClickHouse для аналитики.
5. Emergency Circuit Breaker
Система защиты от аномалий: при превышении лимитов убытков (daily loss limit), резком изменении волатильности или проблемах с биржей - автоматически закрывает все позиции и блокирует новые сделки. Отправляет уведомления в Telegram и email.
Жизненный цикл ордера
1. Created
Ордер создан в системе
2. Pending
Отправлен на биржу, ожидает подтверждения
3. Open
Подтвержден биржей, ожидает исполнения
4. Partially Filled
Частично исполнен
5. Filled
Полностью исполнен
6. Cancelled
Отменен пользователем или системой
7. Rejected
Отклонен биржей