Руководство по интеграции
### Введение
В высокочастотном трейдинге (HFT) скорость — это не просто удобство, а основа выживания. Цикл **«tick-to-trade»** (время от получения рыночного события до подтверждения отправленного ордера) измеряется миллисекундами. Любая лишняя задержка увеличивает риск **неблагоприятного отбора**, когда ордер исполняется по устаревшей цене.
### Этапы оптимизации задержки (Latency)
1. **Оптимизация Ingestion (Получение данных)**:
- Переход с REST-запросов на постоянные WebSocket-соединения с комбинированными стримами (`@aggTrade` + `@bookTicker`).
- Использование неблокирующих кольцевых буферов (ring buffers) для входящих пакетов, чтобы поток маркет-даты обрабатывался в выделенном потоке ОС без блокировки логики принятия решений.
2. **Strategy Calculation (Расчет сигнала)**:
- Упрощение математического ядра. Использование легковесных типов данных (например, быстрый fixed-point вместо тяжелого Decimal в Python, где это допустимо для скорости, или оптимизированные Cython-библиотеки).
- Предварительный расчет всех триггеров. Уровни пробоя пересчитываются один раз на закрытии свечи/тика, а не на каждом входящем WebSocket-событии.
3. **Order Routing (Отправка ордера)**:
- Размещение серверов (Colocation) в тех же облачных дата-центрах (например, AWS Tokyo/Singapore), где хостятся торговые движки целевых бирж.
- Настройка сетевого стека: Cluster Placement Groups для минимизации сетевых прыжков (hops) внутри облака.
### Контроль времени жизни ордера (Order Lifetime)
Если лимитный ордер пробоя не исполнился в течение `5 секунд` (параметр `--entry-timeout`), он признается устаревшим и немедленно отменяется (`entry_cancel_stale`). Удерживать неисполненные лимитные ордеры дольше этого окна опасно, так как характер рынка в точке пробоя меняется, превращая сделку в токсичную.
В высокочастотном трейдинге (HFT) скорость — это не просто удобство, а основа выживания. Цикл **«tick-to-trade»** (время от получения рыночного события до подтверждения отправленного ордера) измеряется миллисекундами. Любая лишняя задержка увеличивает риск **неблагоприятного отбора**, когда ордер исполняется по устаревшей цене.
### Этапы оптимизации задержки (Latency)
1. **Оптимизация Ingestion (Получение данных)**:
- Переход с REST-запросов на постоянные WebSocket-соединения с комбинированными стримами (`@aggTrade` + `@bookTicker`).
- Использование неблокирующих кольцевых буферов (ring buffers) для входящих пакетов, чтобы поток маркет-даты обрабатывался в выделенном потоке ОС без блокировки логики принятия решений.
2. **Strategy Calculation (Расчет сигнала)**:
- Упрощение математического ядра. Использование легковесных типов данных (например, быстрый fixed-point вместо тяжелого Decimal в Python, где это допустимо для скорости, или оптимизированные Cython-библиотеки).
- Предварительный расчет всех триггеров. Уровни пробоя пересчитываются один раз на закрытии свечи/тика, а не на каждом входящем WebSocket-событии.
3. **Order Routing (Отправка ордера)**:
- Размещение серверов (Colocation) в тех же облачных дата-центрах (например, AWS Tokyo/Singapore), где хостятся торговые движки целевых бирж.
- Настройка сетевого стека: Cluster Placement Groups для минимизации сетевых прыжков (hops) внутри облака.
### Контроль времени жизни ордера (Order Lifetime)
Если лимитный ордер пробоя не исполнился в течение `5 секунд` (параметр `--entry-timeout`), он признается устаревшим и немедленно отменяется (`entry_cancel_stale`). Удерживать неисполненные лимитные ордеры дольше этого окна опасно, так как характер рынка в точке пробоя меняется, превращая сделку в токсичную.