Исполнение ордеров: от заявки до фактической сделки · 6 / 6
Сверить уникальные исполнения при повторных статусах ордера
Статус ордера — не дополнительная сделка. Повторная доставка и гонки исполнения с отменой требуют разделять уникальные исполнения и накопленные сводки.
Athenum8 минОбновлено:
Удаление дублей по ID исполнения, а не по ID ордера
Для условного линейного инструмента используйте идентификатор исполнения в области конкретной биржи, счёта и продуктового контракта. Идентичная повторная доставка той же сделки учитывается один раз. Разные исполнения одного ордера считаются отдельно: удаление дублей только по ID ордера отбросит настоящие частичные сделки. Количество здесь выражено в единицах базового актива, цена — в USDT за единицу. В примерах с деривативами расчёт линейный, в USDT; при наличии контрактного множителя сначала нужно перевести количество в эти единицы.
Сохраняйте количество, цену, комиссию и её валюту. Проверьте правила идентификаторов, прежде чем предполагать уникальность между счетами и биржами. Если записи с одинаковым ID противоречат друг другу, расследуйте, а не заменяйте значение молча. Разорванный поток — неполное доказательство; восстановите историю и сверьтесь с состоянием счёта, подтверждённым биржей.
Накопленные обновления исполнения и гонка исполнения с отменой
Обновления ордера часто показывают накопленное исполненное количество. Последовательность 2, затем 3, затем 3 не означает торговлю 8 единицами. Сравните эти состояния с журналом уникальных сделок и конечной позицией. Принятие запроса отмены также не доказывает отсутствие одновременного исполнения.
Bybit описывает гонку исполнения и отмены с двумя сообщениями Filled: одно сообщает об исполнении, другое — об отклонённой отмене, поскольку сделка уже произошла. Это предупреждение для конкретной площадки, а не свидетельство двух сделок. Общая задача проверки — сверять факты, а не считать уведомления.
Пример: два исполнения закрывают 3 из 5 единиц, несмотря на повтор
Изначально открыта длинная позиция 5 единиц, других изменений нет. E1 продаёт 2 по 100 с комиссией 0,10 USDT. E2 продаёт 1 по 99,50 с комиссией 0,05 USDT. E2 доставляется повторно без изменений. Уникальные сделки закрывают 3 единицы: исполненный номинал 299,50 USDT, средняя цена 99,833333… и комиссии 0,15 USDT. Две единицы остаются в длинной позиции.
Отмена неисполненного остатка не продаёт эти 2 единицы. Номинал 299,50 USDT не является зачислением на счёт по этому деривативу. При исходной средней цене входа 90 USDT за единицу ценовой P&L закрытой части равен 299,50 − 3 × 90 = 29,50 USDT. После указанных комиссий выхода 0,15 USDT остаётся 29,35 USDT, до учёта соответствующих комиссий входа и фандинга. Высвобожденное обеспечение не является прибылью. В отдельном сценарии одновременной отмены и исполнения E3 продаёт последние 2 по 99 до отмены. Тогда закрыты 5 единиц, даже если приходят два статуса Filled.
| Доставка | Количество | Цена | Новое учтённое количество |
|---|---|---|---|
| E1 | 2 | 100 | 2 |
| E2 | 1 | 99,50 | 1 |
| E2 идентичный повтор | 1 | 99,50 | 0 |
Увеличить схему- ID исполнений с заданной областью
- Журнал уникальных сделок
- Сравнение накопленного состояния
- Проверка конечной позиции
Оригинальный журнал исполнений; все указанные комиссии в USDT. Сверяйте разные доказательства, не превращая уведомления в сделки.
E2 идентичный повтор: +0.
Ошибка: разрыв связи принят за отсутствие исполнений
После разрыва связи пустой локальный журнал не доказывает отсутствие сделки. Запросите историю исполнений и позицию биржи перед слепой повторной отправкой. Не складывайте комиссии в разных валютах без сохранения единиц и обоснованной базы пересчёта.
Перед решением
- Ограничьте область ID фактическими правилами биржи.
- Учитывайте идентичные повторы исполнения один раз.
- Сохраняйте разные частичные сделки одного ордера.
- Сравнивайте, а не складывайте накопленные состояния.
- Сверьте остаток позиции и неразрешённые пробелы истории.
Проверьте понимание
E2 приходит три раза, E3 отсутствует, отмена неисполненного остатка подтверждена. Сколько остаётся в длинной позиции?
Показать ответ с объяснением
2 единицы. E1 закрывает 2, уникальное E2 закрывает 1, поэтому остаётся 5 − 3 = 2. Повтор E2 не добавляет исполнения. Отмена убирает поручение, а не оставшуюся позицию.
Источники и дополнительное чтение
Продолжить с Athenum
Похожие уроки
- Удалите доказанный повтор, сохранив реальные наблюдения ликвидаций
Отделите локальный дубликат записи от публичных событий с одинаковыми значениями. Исправляйте повтор по происхождению данных, не удаляя реальные наблюдения.
- Частичные выходы: распределите комиссии и фандинг без двойного учёта
Распределите сборы за вход, фандинг и выход по частям позиции. Два выхода дают чистый итог 5,99 USDT без дублирования расходов.