Предотвращение самоторговли (STP)
Автоматическая защита от самоторговли.
Обзор
Если входящая (тейкер) заявка должна исполниться против лимитной (мейкер) заявки того же кошелька, движок отменяет обе заявки вместо их исполнения. Это исключает фиктивные сделки (wash trading) и защищает маркетмейкеров от случайного пересечения собственных котировок.
STP действует всегда. Настроек нет, отключить защиту нельзя, альтернативных режимов не предусмотрено.
Поведение
Стратегия: отмена обеих заявок
При обнаружении самоторговли:
- Мейкер-заявка отменяется с причиной
"Self-trade prevention" - Тейкер-заявка отклоняется (если исполнений ещё не было) или отменяется (если она частично исполнена)
Сделка между этими двумя заявками не формируется.
Сопоставление на уровне кошелька
STP сравнивает адреса кошельков, а не ключи агентов. Если вы используете авторизацию агентов и подписываете заявки несколькими ключами, все заявки одного торгового кошелька проверяются STP друг против друга.
Частичные исполнения сохраняются
Если тейкер-заявка успела исполниться против других контрагентов до того, как сработала самоторговля, эти исполнения сохраняются.
Пример: в книге заявок 5 контрактов на продажу от кошелька B, за ними 5 контрактов от кошелька A. Кошелёк A отправляет заявку на покупку 10 контрактов:
| Шаг | Встречная заявка | Результат |
|---|---|---|
| 1 | Кошелёк B (5 контрактов) | Исполнение: 5 контрактов |
| 2 | Кошелёк A (5 контрактов) | Обнаружена самоторговля |
Итог:
- Кошелёк A получает исполнение 5 контрактов против кошелька B
- Мейкер-заявка кошелька A (5 контрактов) отменяется
- Тейкер-заявка кошелька A отменяется с
filled_size: 5
Статус заявки
| Сценарий | Статус тейкера | Причина |
|---|---|---|
| Исполнений не было | REJECTED | "Self-trade prevention" |
| Частичные исполнения до самоторговли | CANCELED | "Self-trade prevention (partial fill kept)" |
Мейкер-заявка всегда получает статус CANCELED с причиной "Self-trade prevention".
GTC-заявки не встают в книгу после самоторговли
Если тейкер-заявка GTC срабатывает на STP, неисполненный остаток не добавляется в книгу заявок, даже если в обычной ситуации заявка осталась бы в ней. Заявка завершается полностью.
Уведомления WebSocket
Отмена или отклонение как тейкер-, так и мейкер-заявки приходят в канал order_updates. Поле reason указывает, что причиной стал STP.
FAQ
Можно ли выбрать другой режим STP (например, отмену более новой заявки или уменьшение объёма)? Нет. Hypercall использует только отмену обеих заявок.
Применяется ли STP к заявкам по перпам? Нет. STP Hypercall распространяется на заявки, сопоставляемые в книге Hypercall: опционы и комбо-заявки. Заявки по перпам исполняются в книге заявок Hyperliquid, где действуют собственные правила самоторговли Hyperliquid.
Применяется ли STP к комбо-заявкам? Да. Сопоставление останавливается до того, как комбо или подразумеваемый маршрут привели бы к сделке аккаунта с самим собой, а мейкер-заявка в книге отменяется. Случаи «всё или ничего» (FOK и атомарная замена) описаны в экспериментальном Combo API.
Применяется ли STP к сделкам RFQ? Да. Если тейкер и поставщик котировки используют один и тот же кошелёк, котировка отклоняется.
Я маркетмейкер и котирую обе стороны. Будут ли мои котировки отменять друг друга? Только если входящая заявка приведёт к их пересечению. Лимитные заявки на противоположных сторонах книги по разным ценам спокойно сосуществуют. STP срабатывает только в момент сопоставления.