На этой странице
Определение
Потоки, которые передают приращения, зависят от прихода каждого изменения по порядку. Поэтому каждый пакет или сообщение несёт номер, растущий с известным шагом. Получатель сравнивает каждый новый номер с последним: равный плюс один — нормально, меньший — дубликат, больший — пропуск. Биржевые потоки, такие как MDP 3.0 у CME, нумеруют свои пакеты и публикуют каждый канал на двух резервных потоках, поэтому пакет, потерянный на одном, берётся с другого.
Пример: обнаружение пропуска
Приходят пакеты 1041 и 1042, затем 1045. Пакеты 1043 и 1044, два пакета, отсутствуют. Любое обновление стакана, которое они несли, неизвестно, поэтому стакану, имеющемуся после 1045, нельзя доверять до восстановления.
Пример: сшивка снимка с потоком
Binance передаёт обновления глубины с первым идентификатором U и последним u, а снимок — с полем lastUpdateId. На Spot со снимком L = 500: отбросьте буферизованные события, у которых u не больше 500; первое сохранённое событие обязано удовлетворять U <= 501 <= u, например U = 498 и u = 503; каждое следующее событие обязано начинаться с предыдущего u + 1, здесь U = 504. Фьючерсы USD-M используют другое правило сцепки — поле pu, которое обязано равняться предыдущему u, — и применение правила одного рынка к другому либо зацикливает пересинхронизацию, либо пропускает разрыв.
В Senzoukria
Синхронизатор стакана Binance применяет эти процедуры отдельным протестированным модулем, держа правила Spot и USD-M раздельно, и пересинхронизируется с нового снимка при обнаружении пропуска вместо заплатки. Его исходник объясняет, почему: неверная сшивка не поднимает ошибки, она даёт нормально выглядящий стакан с уровнями, которых больше нет, худший возможный дефект на тепловой карте ликвидности. Для данных CME восстановление на уровне биржи ведёт поставщик. На живой сессии сделок Databento, прерванной разрывом связи, приложение открывает её заново с метки времени последней полученной сделки плюс одна наносекунда, поэтому сделки в промежутке повторяются, а не теряются; стакан MBP-10 не повторяется.
Частые ошибки
- Продолжать применять обновления после пропуска, потому что стакан всё ещё выглядит правдоподобно.
- Использовать метки времени вместо номеров последовательности для обнаружения потери.
- Применять правило сшивки одной площадки к другой площадке или другому рынку.
См. также
В этом же разделе
- Номинал с поправкой на дельту
- Нижняя граница стоимости
- Номинальная стоимость
- Неудавшийся аукцион
- Ночной инвентарь
- Нетронутый POC
- Ночной хай и лой
- Нереализованная просадка
Эта страница на других языках
Частые вопросы
- Что платформе делать после пропуска в последовательности?
- Перестать доверять стакану, восстановиться через повтор или новый снимок и только затем возобновить применение обновлений. Рисовать устаревший стакан в это время означает показывать ликвидность, которой способно уже не быть.
- Бывают ли пропуски последовательности и в потоках сделок?
- Да. Пропуск в сделках означает отсутствующие принты, что занизит объём и исказит дельту на затронутых ценах. Восстановление повтором, где источник его предлагает, их возвращает.