Ви надсилаєте ордер на 10 000 одиниць, а в книзі за вашою ціною є лише 1 000. Що станеться з рештою 9 000? Відповідь на це питання кожен ордер несе в собі ще до відправлення. Fill or kill, immediate or cancel і all or none — це три способи відповісти на нього, і вони не є трьома різновидами одного налаштування.
Що насправді вирішує time-in-force
Налаштування time-in-force — це вказівка, прикріплена до ордера, і вона вирішує рівно одне питання: що станеться з тією частиною, яку не можна виконати просто зараз. Або ця частина чекає в книзі, або її відкидають у момент зіставлення.
Оце і вся вісь. Ордер good-till-cancelled іде першою гілкою: він лежить у книзі, доки не виконається або доки ви його не приберете. Ордер good-till-date чекає так само, але спиняється на строку, який ви задали. Immediate or cancel і fill or kill ідуть другою гілкою, де взагалі нічого не лишається чекати.
Протокол FIX, давня галузева специфікація обробки ордерів, описує це поле як таке, що задає, скільки часу ордер лишається чинним, а власне значення за замовчуванням у ньому — налаштування на торговий день, успадковане від майданчиків, які закриваються. Kraken ставить good-till-cancelled за замовчуванням у власному інтерфейсі ордерів. Написані повністю під час першої появи, далі ці три налаштування скорочуються до IOC, FOK і AON.
Immediate or cancel: узяти те, що є, решту відкинути
Ордер immediate-or-cancel торгує в ту мить усе, що може, проти книги, а решту відкидає. Він дозволяє часткове виконання: якщо з ваших 10 000 за вашою ціною можуть торгуватися 1 000, то 1 000 торгуються, а інші 9 000 просто перестають існувати.
Kraken описує це налаштування як таке, що негайно скасовує будь-який обсяг, який не вдалося виконати одразу після надходження. Coinbase формулює ту саму поведінку як скасування будь-якого залишкового обсягу. Два майданчики, один механізм.
Слово immediate тут вказує на момент зіставлення, а не на швидкість. Коли книга досить глибока, щоб поглинути весь ордер, IOC і звичайний лімітний ордер за тією самою ціною проходять той самий шлях і завершуються однаково. Різниця з'являється тільки в ту мить, коли щось лишається.
Fill or kill: усе одразу або нічого
Ордер fill-or-kill додає до тієї самої негайності одну умову: увесь обсяг або нічого. Це IOC плюс вимога повноти, і обидві умови мають виконатися разом. Якщо з ваших 10 000 могли б торгуватися 9 000, то IOC торгує ці 9 000, а FOK не торгує нічого.
FOK гарантує обсяг, а не ціну. Він може виконатися повністю за середньою ціною, набагато гіршою за ту, на яку ви дивилися, бо споживає стільки глибини, скільки потрібно, щоб довести справу до кінця. Контроль ціни — це окремий інструмент, лімітна ціна або допуск прослизання, і хапатися за fill or kill, щоб уникнути поганої ціни, означає просити в нього того, чого він не дає.
Kraken фіксує ще одне обмеження, яке варто знати, перш ніж шукати це налаштування: його опція fill-or-kill доступна лише для лімітних ордерів.
All or none — це інше налаштування, а не третій строк
All or none виглядає як родич fill or kill, але ним не є. У FIX time-in-force живе в одному полі з вісьмома значеннями, і all or none серед них немає. Воно живе в окремому полі для вказівок з обробки ордерів, під кодом G, де його описано як all or none.
Наслідок тут практичний, а не канцелярський. Оскільки AON сидить в іншому полі, його можна поєднати зі строком: ордер all-or-none, який водночас є good-till-cancelled, лежить у книзі й чекає, але торгуватиметься лише одним цілим шматком. Fill or kill зв'язує негайність і повноту в одне значення time-in-force, тож чекати він не може нічого.
| Чи може залишок лежати в книзі | Часткове виконання дозволене | Часткове виконання не дозволене |
|---|---|---|
| Так, він чекає | Good-till-cancelled | All or none, що лежить |
| Ні, його відкидають | Immediate or cancel | Fill or kill |
Що каже статус, коли нічого не виконалося
Ордер, який жодного разу не торгувався, не є автоматично невдалим або простроченим ордером. За FIX невиконаний ордер fill-or-kill чи immediate-or-cancel завершується як скасований, і специфікація прямо називає ці два винятками зі стану «Прострочено».
Це дивно читається на тлі звичного значення слова «скасований», яке передбачає, що щось полежало, а потім його прибрали. Узгоджується це так: ордер таки став активним, він просто ніколи не лягав у книгу. Coinbase каже те саме з іншого боку: ордер fill-or-kill потрапляє в книгу лише тоді, коли він виконався б негайно й повністю.
Офіційний розбір послідовності робить арифметику видимою. Ордер fill-or-kill на 10 000, який не можна завершити, закінчується тим, що не торгувалося нічого: виконаний обсяг дорівнює 0, залишок теж 0. Ордер immediate-or-cancel на ті самі 10 000, який знаходить доступними 1 000, закінчується тим, що 1 000 виторговано, а 9 000 скасовано. Ті самі таблиці містять і гілку з відхиленням, а специфікація окремо зазначає, що ордер може перейти зі стану «Новий» у «Відхилено» навіть після того, як його підтверджено. Відхилений і скасований — це два різні результати, тож читайте той статус, який повідомляє ваш майданчик, а не припускайте, який із них застосовний.
Налаштування поруч
| Налаштування | Залишок | Часткове виконання | У якому полі живе |
|---|---|---|---|
| Good-till-cancelled | Лежить, доки не виконається або доки його не приберуть | Дозволене | Time-in-force |
| Good-till-date | Лежить до вашого строку | Дозволене | Time-in-force |
| Immediate or cancel | Відкидається одразу | Дозволене | Time-in-force |
| Fill or kill | Відкидається одразу | Не дозволене | Time-in-force |
| All or none | Залежить від строку, з яким його поєднано | Не дозволене | Вказівка з обробки ордера |
Коли яке з них — правильний вибір
Беріться за fill or kill тоді, коли часткова позиція гірша за відсутність позиції. Арбітражна нога або нога хеджу, яка працює лише в повному розмірі, — очевидний випадок: половина від неї не дає половини користі, а створює нову й небажану експозицію. Ціна, яку ви приймаєте за цю визначеність, — те, що ордер, який ледь не влучив, не повертає нічого.
Беріться за immediate or cancel тоді, коли хочете спожити ліквідність, що зараз перед вами, не лишаючи по собі видимого ордера. Він проходить крізь заявки, що лежать у книзі, майже так само, як це робить ринковий ордер, хоча ринковий ордер — про те, щоб брати найкращі доступні ціни, а не про те, що робити із залишком.
Беріться за налаштування, яке лишає ордер у книзі, тоді, коли чекання і є сенсом. Якщо вашої ціни в книзі ще немає, а ви готові сидіти, доки вона не з'явиться, відкидання ордера в момент зіставлення руйнує весь задум.
Підсумок
Налаштування time-in-force відповідає на одне питання і тільки на одне: що станеться з обсягом, який не може торгуватися просто зараз. Immediate or cancel відкидає залишок і лишає те, що встиг узяти. Fill or kill повністю відмовляється від часткового результату, тож він або завершується, або лишає вас ні з чим. All or none — це взагалі не строк, а правило повноти в іншому полі, і саме тому воно може чекати в книзі, а fill or kill не може.
Перш ніж застосувати одне з них, перевірте, на яке з двох питань ви насправді відповідаєте: як довго ордер має жити або чи прийнятний неповний результат. Плутанина між ними і перетворює fill or kill на очікуваний захист ціни, яким він ніколи не був. Щоб продовжити вивчати основи, читайте інші матеріали Bitbase Academy.
Схожі матеріали
Інші матеріали Bitbase на цю тему:
- Дисбаланс книги заявок, CVD і вплив на ринок
- Стіни покупок, стіни продажів і глибина книги заявок
- Комісії мейкера й тейкера в крипті: у чому різниця?
- Захист ринкового ордера та ліміти fat-finger
- Індикатор MACD: як він працює
Застереження: Ця стаття є освітнім матеріалом Bitbase Academy і надається лише для інформації. Вона не є інвестиційною, торговою, податковою чи фінансовою порадою. Криптоактиви волатильні — оцінюйте ризики самостійно. Написано станом на вересень 2026 року; орієнтуйтеся на найновішу офіційну інформацію.
Джерела
[1] FIX Trading Community, FIX Application Layer: Order State Changes (FIX Latest станом на EP284, листопад 2023 року) fixtrading.org
[2] Onix Solutions, словник FIX 4.4, TimeInForce(59) onixs.biz
[3] Onix Solutions, словник FIX 4.4, ExecInst(18) onixs.biz
[4] Документація API Kraken, WebSocket v2, Add Order (поле time_in_force) docs.kraken.com
[5] Документація для розробників Coinbase, Advanced Trade API, Create Order docs.cdp.coinbase.com






