Как и прошлые записи, эта является продолжением предыдущей. Поэтому, для более ясного понимания содержания и терминологии рекомендую прочесть прошлые записи по порядку:
1. Немного о маркетмейкерах.
2. Моделирование рынка.
3. Биржевой алгоритм.
Итак, теперь пару слов о лимитных ордерах на бирже.
Корректный биржевой алгоритм не допускает в ценообразовании публичной ситуации Bid >= Ask. В самом алгоритме по мере приема заявок на начальном этапе формируется стакан, в котором частенько бывают ситуации Bid >= Ask. В такой ситуации включается исполнительная часть биржевого алгоритма, задача которой разрулить эту ситуацию до состояния Ask > Bid. И только после разруливания уже сформированный стакан с соответственно сформированными Last-данными становится публичным — доступным всем.
SellLimit всегда исполняется по цене Bid,
BuyLimit — исполняется по Ask.
Но только эти Bid и Ask являются непубличными ценами сформированного на начальном этапе стакана, как описал выше.
Если вы выставляете SellLimit — это желание вами продать, что равно предложения для других купить у вас. По этой причине SellLimit попадает в Ask-банды. Например, если вы выставляете внутрь спреда SellLimit, то формируется наилучший Ask-банд с уровнем и объемом вашего лимитника. Т.е. выставив вовнутрь спреда SellLimit, вы меняете Ask-цену. Если кто-то захочет купить по Ask-цене, то он будет заливать ваш лимитник. Говорить в таком случае, что SellLimit исполняется по Ask-цене, либо же исполняется без спреда — очень расплывчатая формулировка. Лучше просто понимать механизм, как и везде.
Приведу пример исполнения. Вы выставили SellLimit внутрь спреда, значит Ask приравнивается к SellLimit. Теперь вы же выставляете BuyLimit равный Ask. В этой ситуации (см. первый абзац) в биржевом алгоритме получается, что Bid приравнивается к BuyLimit. Т.е. в итоге выходит, что Bid = Ask. Все, пошло разруливание ситуации, пока Ask не станет больше Bid. Пока алгоритм не разрулит, никто корректный стакан не увидит. Для простоты пускай объемы SellLimit и BuyLimit равны Vol. Получается, что оба лимитника схлопываются, Bid и Ask становятся равны следующим лучшим бандам в стакане, т.е. Ask > Bid. Далее Last-данные содержат в себе цену исполнения, которая равна вашим SellLimit (== BuyLimit), объем Vol и направление BUY (потому что BuyLimit был отправлен позже SellLimit).
Заметьте, что если в той же ситуации сначала послать BuyLimit, а затем SellLimit, то результат будет один и тот же — вы купите/продадите сами себе, потеряв на двойной комиссии. Но только в Last-данных флажок направления будет противоположный — SELL.
Возвращаясь к вопросу цены, по которому исполняются лимитники:
Если вы будете смотреть на бары мелкого ТФ на каком-нибудь слаболиквидном символе, то увидите, что Bid-бары подрезаются снизу (BuyLimit-ами), а Ask-бары — сверху (SellLimit-ами).
Рассмотрим опять же ситуацию SellLimit. В побаровом тестере SellLimit исполнится только тогда, когда его HighBid >= SellLimit. Обратите внимание, что HighBid (как и LowAsk) практически не подрезаются на биржах. И забегая вперед — совсем не подрезаются на ECN/STP. Т.е. если вам нужно протестировать стратегию с лимитниками, то для вас главная информация по исполнению SellLimit является значение Bid-цены, а точнее ее High. Это может быть еще одним аргументом в пользу утверждения, что SellLimit исполняется именно по Bid-ценам.
Отвлекаясь немного, можно сказать, что из этих же соображений строятся ЗигЗаги с вершинками на Bid-данных и низинками на Ask-данных. И именно на основании такого построения оценивается максимальная потенциальная доходность.
Алгоритм формирования биржевой площадки является очень частным случаем более сложных площадкообразующих алгоритмов — децентрализованных рынков (даркпулов).