Умовні й алгоритмічні ордери
Умовні й алгоритмічні ордери виконує сам протокол наприкінці блоку, коли виконано їхню умову. Виконання завжди йде через книгу за цінами ордерів у ній.
Умовні ордери
| Ордер | Повідомлення | Що робить |
|---|---|---|
| Stop-loss | MsgSetStopLoss | Закриває позицію, коли ціна оракула доходить до тригера проти позиції |
| Take-profit | MsgSetTakeProfit | Закриває позицію, коли ціна оракула доходить до тригера на користь позиції |
| Брекети | MsgSetBracketOrders | Пара stop-loss і take-profit. Спрацював один - другий скасовується |
| Трейлінг-стоп | MsgSetTrailingStop | Тригер іде за найкращою ціною на заданій відстані у відсотках. Може вмикатися лише після ціни активації |
| ENTRY | MsgSetEntryOrder | Відкриває позицію, коли ціна оракула доходить до тригера. Може одразу ставити брекети й мати строк |
Як працюють
- Спрацювання. Тригер порівнюється з ціною оракула. Для лонга stop-loss спрацьовує, коли ціна на рівні тригера або нижче, take-profit - на рівні тригера або вище. Для шорта навпаки.
- Виконання. Протокол надсилає ринковий reduce-ордер через книгу. З лімітною ціною ордер не виконається гірше за неї. Якщо виконалася лише частина, залишок чекає наступних блоків.
- Частка позиції.
- Частковий відсоток рахується від позиції в момент створення ордера, тому драбина 33/33/34 закриває позицію повністю.
- 100% - уся позиція на момент спрацювання.
- Брекети до ордера.
MsgAttachOrderBracketsприв'язує stop-loss і take-profit до ордера в книзі. Вони починають діяти після його виконання. - ENTRY.
- Відкриває позицію заданого розміру із заданим плечем, ринково або за лімітною ціною.
- Поки позицію не набрано повністю, залишок добирається в наступних блоках.
- Якщо задано строк, після його закінчення невиконаний ENTRY скасовується.
- Закриття позиції. Разом із позицією скасовуються всі її умовні ордери.
TWAP
TWAP ділить обсяг на рівні частини й виконує їх через заданий інтервал блоків. Кожна частина - ринковий ордер через книгу.
| Варіант | Повідомлення | Що робить |
|---|---|---|
| Закриття | MsgCreateTwapOrder | Зменшує позицію. Завершується, коли позицію закрито |
| Відкриття | MsgCreateOpenTwapOrder | Відкриває позицію із заданим плечем |
Невиконана частина окремого слайса не повторюється, вона переходить в останній слайс. Слайсів від 2 до 100, інтервал від 1 до 100 000 блоків. Скасування - MsgCancelTwapOrder.
POV
POV виконує задану частку ринкового обсягу (від 1% до 30%) за період. Якщо найбільша частина POV менша за 10 USDC, такий POV не приймається.
Chase
MsgSetChase змушує лімітний ордер у книзі йти за ринком:
- Переставлення. Щоблоку ордер переставляється до найкращої ціни свого боку зі зсувом
offset. - Межа. Ордер не відходить далі ніж
max_distanceвід ціни, що була під час увімкнення chase. На межі chase зупиняється. - Post-only. Post-only ордер під час переставлення не перетинає книгу.
Вимкнути chase - MsgCancelChase.
Коли ордери чекають
Поки ринок на паузі, пара оракула на паузі або під circuit breaker, умовні й алгоритмічні ордери за нею не виконуються й чекають. Під час зупинки торгівлі чекають ті, що відкривають позицію.
Ліміти
| Ліміт | Значення |
|---|---|
| Умовних ордерів на позицію | 10 |
| Умовних ордерів на користувача | 50 |
| Брекетів, що чекають виконання ордера, на субакаунт | 500 |
| Спрацювань умовних ордерів за блок | 500, решта в наступному блоці |
| TWAP на користувача | 20 |
| Chase на користувача | 10 |
| POV на користувача | 5 |