Условные и алгоритмические ордера

Условные и алгоритмические ордера исполняет сам протокол в конце блока, когда выполнено их условие. Исполнение всегда идёт через книгу по ценам ордеров в ней.

Условные ордера

ОрдерСообщениеЧто делает
Stop-lossMsgSetStopLossЗакрывает позицию, когда цена оракула доходит до триггера против позиции
Take-profitMsgSetTakeProfitЗакрывает позицию, когда цена оракула доходит до триггера в пользу позиции
БрекетыMsgSetBracketOrdersПара stop-loss и take-profit. Сработал один - второй отменяется
Трейлинг-стопMsgSetTrailingStopТриггер следует за лучшей ценой на заданном расстоянии в процентах. Может включаться только после цены активации
ENTRYMsgSetEntryOrderОткрывает позицию, когда цена оракула доходит до триггера. Может сразу ставить брекеты и иметь срок

Как работают

  • Срабатывание. Триггер сравнивается с ценой оракула. Для лонга 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