Maker Protection

Останнє оновлення: 30 вересня 2026 р.

Maker Protection — це коротка фіксована затримка, яка застосовується до ордерів, що можуть забирати ліквідність на окремих ринках Kraken Derivatives. Вона дає розміщеним мейкер-ордерам короткий проміжок часу для реагування на нову інформацію, перш ніж вхідний ордер зможе торгувати проти них. Maker Protection діє з 24 вересня 2026 року.

На ринку з Maker Protection будь-яка дія з ордером, що може забрати ліквідність, затримується на короткий час, перш ніж потрапити до Рушія зіставлення ордерів. Розміщення ордерів «лише для мейкера» та всі скасування ніколи не затримуються.

  • •

    Затримка: 20 мс на момент запуску, але не більше 100 мс. Затримка публікується окремо для кожного ринку у полі makerProtectionMillis.

  • •

    Ринки: Лише вибрані ринки Derivatives (фʼючерси). Спот-ринку це не стосується.

  • •

    Узгодженість: Поведінка однакова для REST, WebSocket і FIX.

  • •

    Рівність умов: Затримка застосовується до всіх клієнтів однаково. Винятків для окремих облікових записів немає.

  • •

    Як уникнути затримки: Надсилайте ордер із позначкою «лише для мейкера». Лімітний ордер без цієї позначки затримується, навіть якщо він залишився б у книзі ордерів, — затримка залежить від типу ордера, а не від результату його виконання.

Затриманий ордер посідає місце в черзі в момент вивільнення, а не в момент його отримання.

Авторитетним джерелом є поле makerProtectionMillis в ендпоїнтах GET /instruments і GET /trading/instruments. Якщо для ринку Maker Protection не встановлено, поле відсутнє, тож відсутність поля та значення нуль означають одне й те саме: затримки немає.

  • •

    На момент запуску 24 вересня 2026 року було охоплено 59 ринків.

  • •

    10 найліквідніших лінійних ринків безстрокових фʼючерсів виключено, щоб не сповільнювати активний потік тейкерів на основних інструментах.

  • •

    Кожен безстроковий інструмент, що виходить на лістинг після 24 вересня 2026 року, має Maker Protection з моменту запуску.

  • •

    Про додавання нових ринків повідомляється на status.kraken.com перед кожним технічним вікном обслуговування.

Дія

Затримується?

Лімітний ордер, IOC, FOK або ринковий ордер

Так

Ордер «лише для мейкера»

Ні

Редагування ордера, що може перебувати в книзі та забирати ліквідність

Так

Редагування розміщеного в книзі ордера «лише для мейкера»

Ні

Розміщення стоп-ордера, тейк-профіту або трейлінг-стопу

Ні

Ордер, що спрацьовує за тригером стоп-ордера або тейк-профіту

Так, якщо спрацьований ордер не є ордером «лише для мейкера»

Група ордерів із новим батьківським ордером без режиму post-only

Так

Група ордерів, що приєднується до наявного ордера

Ні

Скасування, скасування всіх ордерів, скасування всіх ордерів після певного часу

Ні

Блокові угоди та інші позакнижкові потоки також звільнені від затримки.

У публічному API немає стану «утриманого» ордера. Maker Protection проявляється як додаткова затримка на агресивних ордерах. Наведені нижче особливості варто врахувати при проектуванні системи:

  • •

    Перевірка відбувається в момент звільнення. Маржа, цінові ліміти та статус ринку перевіряються після закінчення затримки, а не в момент подання. Ордер, що був коректним під час подання, може бути відхилено.

  • •

    Вікно завжди відпрацьовується повністю. Якщо ліквідність, через яку Ваш ордер став агресивним, зникає протягом вікна, ордер все одно очікує до кінця затримки. Утримані ордери не переоцінюються.

  • •

    Ордери звільняються в порядку надходження. Утримання знімаються за методом FIFO (First In, First Out – «першим прийшов, першим пішов»), тому пізніший ордер не може випередити раніший.

  • •

    Затримка — «не менше» налаштованого вікна. Ордери, ініційовані тригером стоп-лосу або тейк-профіту, звільняються наступною подією, яку обробляє Рушій зіставлення ордерів, тому на спокійному ринку вони можуть очікувати помітно довше за налаштоване вікно.

  • •

    Не вимірюйте затримку вручну. Зчитуйте значення makerProtectionMillis — його може бути змінено в будь-який момент.

Утриманий ордер ще не потрапив до книги ордерів і не має гарантії потрапити туди. Протягом вікна на ордер можуть впливати події, не повʼязані з Вашою торгівлею:

  • •

    Ринок призупинено: ордер відхиляється з кодом marketSuspended.

  • •

    Ваш обліковий запис де-ризикується або ліквідується: ордер відхиляється з кодом CANCELLED_WHILE_HELD.

  • •

    Маржа або цінові ліміти змінюються не на Вашу користь: ордер може бути відхилено в момент звільнення.

  • •

    Ви змінюєте кредитне плече або режим маржі: зміна відхиляється, поки є будь-які утримані запити. Повторіть спробу після звільнення утримань.

Якщо Ви отримали відхилення приблизно через одне вікно після надсилання ордера, це зазвичай не означає, що сам ордер був некоректним. Перевірте повернений статус.

Ви можете скасувати ордер під час його утримання — скасування ніколи не затримуються. Однак скасування не відкликає зафіксованої агресії. Скасування позбавляє ордер права залишитися в книзі, але не знімає з нього зобовʼязання виконати угоду.

Результат залежить від типу утримуваного запиту:

  • •

    Лімітний ордер: скасування підтверджується, після чого ордер звільняється як «виконати або скасувати» (IOC). Він забирає все, що може, а залишок відкидається. Ви отримуєте дві відповіді: на скасування та на сам ордер — приблизно через одне вікно. Якщо ордер не може виконатися в момент звільнення, REST v3 повертає iocWouldNotExecute.

  • •

    IOC, FOK або ринковий ордер: конвертація неможлива, тому скасування повертає ORDER_NOT_FOUND, а ордер все одно надходить до книги в момент звільнення.

  • •

    Редагування неринкового ордера: початковий ордер залишається активним за старою ціною протягом вікна. Скасування поглинається, а в момент звільнення редагування переписується так, що ордер отримує нову ціну і більше не може залишатися в книзі.

  • •

    Група ордерів: групу із затриманим батьківським ордером не можна скасувати протягом вікна — вона стає активною після його завершення. Скасуйте її після активації.

  • •

    Аварійний блокіратор (cancelallordersafter): затриманий ордер конвертується так само. Аварійний блокіратор не відкликає затриманий ордер.

Якщо Вам потрібно, щоб жоден ордер не залишився в книзі і жоден новий не виконався, дочекайтеся завершення вікна (не більше 100 мс), а потім скасуйте.

Після звільнення затриманий ордер завжди скасовує будь-який Ваш неринковий ордер, з яким міг би зматчитися, незалежно від стратегії запобігання самоторгівлі, налаштованої для Вашого облікового запису. Це стосується всього дерева облікових записів: Основного рахунку, суміжних рахунків і субрахунків.

  • •

    Ваш неринковий ордер скасовується з причиною CANCELLED_BY_SELF_TRADE, а звільнений ордер виконується.

  • •

    Виняток становлять ордери FOK та RFQ — для них застосовується налаштована Вами стратегія у звичайному режимі.

  • •

    Ордерів, які ніколи не були затримані, це також не стосується.

Одночасні затримки. Одночасно може бути затримано не більше 250 запитів. Запит понад цю межу відхиляється та повертається як перевищення ліміту ордерів (tooManyOrders у REST v3, TOO_MANY_ORDERS у REST v4, ORDER_LIMIT_EXCEEDED у ринкових даних і SBE). Ліміт обмежує кількість активних затримок одночасно, а не швидкість надсилання ордерів. Він є спільним для Основного рахунку та його субрахунків; повторну спробу можна безпечно виконати після завершення попередніх затримок.

Ліміти облікового запису визначаються в момент відкриття затримки. Щоб унеможливити зміну налаштувань рахунку під час вікна, деякі ліміти закріплюються в момент відкриття затримки, а не при звільненні:

  • •

    Ліміт відкритих ордерів: якщо ліміт вичерпано, ордер приймається, але конвертується так, що не може залишитись у книзі.

  • •

    Максимальна позиція: бюджет резервується під ордер у момент подання. Ордер, відхилений на цьому етапі, залишається відхиленим навіть після вивільнення бюджету; зарезервований бюджет недоступний для наступних ордерів — вони відхиляються з кодом MAX_POSITION_EXCEEDED.

  • •

    Клієнтські ідентифікатори ордерів: затримка резервує клієнтський ідентифікатор ордера на весь час вікна. Повторне використання цього ідентифікатора для іншого розміщення негайно відхиляється з кодом clientOrderIdAlreadyExist. Дочекайтеся завершення вікна перед повторним використанням ідентифікатора або обробляйте незавершені скасування за ідентифікатором ордера.

Пакет не затримується як єдине ціле. Відлік вікна починається з першої інструкції, що забирає ліквідність.

  • •

    Інструкції до першої агресивної надсилаються негайно.

  • •

    Перша агресивна інструкція та всі наступні очікують завершення вікна разом.

  • •

    Скасування завжди надсилаються негайно. Скасування, розміщене після цільового ордера в пакеті, перебирає на себе його затримку. Скасування, розміщене до нього, — ні.

Щоб пасивна інструкція потрапила до книги ордерів без затримки, розмістіть її перед будь-якою агресивною інструкцією в пакеті.

REST. Зʼєднання утримується на час затримки, а відповідь містить остаточний результат. Встановіть тайм-аут на стороні клієнта з достатнім запасом понад вікно. Оскільки вікно ніколи не перевищує 100 мс, одного бюджету тайм-ауту вистачає для всіх ринків. Якщо Ви надсилаєте processBefore для агресивного ордера, це значення має враховувати утримання — інакше ордер щоразу відхилятиметься з кодом wouldProcessAfterSpecifiedTime.

WebSocket. Поки ордер затримано, жодних публікацій немає. Звичайні події open_orders та fills надходять після звільнення ордера — приблизно на одне вікно пізніше, ніж раніше.

FIX. Шлюз надсилає інформаційний ExecutionReport, коли запит затримано: Pending New (39=A) для розміщення або Pending Replace (39=E) для зміни. Звіт є лише інформаційним і не є кінцевим станом. Затримане розміщення ще не має OrderID, тому ClOrdID — єдиний ідентифікатор ордера протягом вікна. Реальне підтвердження надходить після звільнення.

На ринках із Maker Protection перевіряйте виконання ордерів після кожного заповнення суміжної ноги в групі — не припускайте, що одна нога автоматично скасувала іншу.

Maker Protection увімкнено на стартових ринках у клієнтському середовищі UAT з 27 серпня 2026 року — з тим самим вікном у 20 мс і лімітом у 250 утримань, що й у продакшені. Щоб отримати доступ до UAT, зверніться до свого менеджера облікового запису. Рекомендуємо протестувати:

  • •

    Скасування під час утримання та обробку ордера, який усе одно заповнюється після цього

  • •

    Скасування під час утримуваного редагування

  • •

    Скасування Вашого неринкового ордера звільненим ордером навіть за встановленого REJECT_TAKER

  • •

    Обробку tooManyOrders під час розміщення ордера та повторну спробу

  • •

    Повторне використання ідентифікатора клієнтського ордера в межах одного вікна

  • •

    Порядок інструкцій у пакеті та таймаути на стороні клієнта вище за значення makerProtectionMillis ринку