Лимитные заявки внутри стакана и закрытие встречными mt5

 

Тестирую робота в режиме "Каждый тик на основе реальных тиков"

фьюч SRH4 31.01.2024

В определенный момент роботом создаётся лимитный ордер на продажу 

Его дата: 31.01.2024 09.00.07 по цене 28249 (внутри спреда ASK: 28250 BID: 28248). Но робот по факту отправил запрос в 09.00.06 (сразу после получения последнего тика в эту секунду)

Немного спустя в 09.00.07 Появляется встречная Лимитная заявка на покупку по этой цене (именно мейкерская заявка так же внутри спреда)

В связи с чем появляются "риторические" вопросы:

1. При тестировании - правильно ли опираться только на "тейкиров"? Ибо как интуитивно мы понимаем, что мейкерские заявки навряд ли будут появляться внутри спреда, если уже есть заявки в противоположном направлении. Быть может кто-то сталкивался с данной ситуацией... В смысле есть ли понимание на сколько в итоге сильно будут отличаться результаты в реале?

2. Есть ли возможность в mt5 тестировать только по тейкерским тикам? Опять же - предполагая, что мейкеры не будут в реале становиться тейкирами и будут выставлять свои заявки по факту учитывая наличие других заявок внутри спреда.

3. И не совсем понятно... Почему дата моего лимитного ордера 09.00.07? Я в отладчике вижу, что на момент отправки запроса время стоит 09.00.06

Файлы:
mttt.png  63 kb
 
В Тестере тики и исполнение идут по тейкерской истории: не можете быть мейкером.
 
fxsaber #:
В Тестере тики и исполнение идут по тейкерской истории: не можете быть мейкером.
 Не совсем понятно " не можете быть мейкером ". В смысле?  Что значит не могу? Вы имеете ввиду, что не могу по лимитным ордерам работать?
Смотрите. Вот я привёл конкретный пример. 
Вся суть в том, что в моей системе тестирования - данная заявка закрывается в 09.00.14 когда появляется именно тейкерский ордер. А в mql5 - эта же заявка закрывается в 09.00.07 - при появлении встречной заявки. Т.е. тестер как бы реагирует не на ТОРГОВЫЙ тик, а на выставленный лимитный ордер по этой же цене. 
 
Ruslan Begidhev #:
 Не совсем понятно " не можете быть мейкером ". В смысле?  Что значит не могу? Вы имеете ввиду, что не могу по лимитным ордерам работать?
Смотрите. Вот я привёл конкретный пример. 
Вся суть в том, что в моей системе тестирования - данная заявка закрывается в 09.00.14 когда появляется именно тейкерский ордер. А в mql5 - эта же заявка закрывается в 09.00.07 - при появлении встречной заявки. Т.е. тестер как бы реагирует не на ТОРГОВЫЙ тик, а на выставленный лимитный ордер по этой же цене. 

Если встречная заявка не была "пассивной", то всё правильно. По крайней мере, для биржевого исполнения.

 
JRandomTrader #:

Если встречная заявка не была "пассивной", то всё правильно. По крайней мере, для биржевого исполнения.

Так в этом то и дело. Посмотрите в прикрепленном файле - там ТИКИ. И моя заявка закрылась в 09.00.07 Тиком у которого стоит флаг =2. Т.е. как я понимаю - это на Вашем языке как раз "пассивная" заявка (я её называю мейкерской, т.е. Лимитной) 
 
Ruslan Begidhev #:
Не совсем понятно " не можете быть мейкером ". В смысле?  Что значит не могу? Вы имеете ввиду, что не могу по лимитным ордерам работать?

Здесь на ресурсе выложен бесплатный тестер, который идентичен MT5-Тестеру. Его автор - я. Поэтому, как работает алгоритм Тестера, - понимаю.

В MT5-Тестере своими лимитными заявками вы не влияете на ценообразование.

 
Ruslan Begidhev #:
Так в этом то и дело. Посмотрите в прикрепленном файле - там ТИКИ. И моя заявка закрылась в 09.00.07 Тиком у которого стоит флаг =2. Т.е. как я понимаю - это на Вашем языке как раз "пассивная" заявка (я её называю мейкерской, т.е. Лимитной) 

Пассивная заявка - лимитка с типом исполнения ORDER_FILLING_BOC (Book or Cancel) - выставляется только если не приводит к немедленной сделке. Если мы ставим лимитку с другим типом в зону встречных ордеров, она будет тут же исполнена (в зависимости от типа исполнения и наличия встречных объёмов) по наилучшим встречным ценам, как рыночная.

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_type_filling
 
JRandomTrader #:

Пассивная заявка - лимитка с типом исполнения ORDER_FILLING_BOC (Book or Cancel) - выставляется только если не приводит к немедленной сделке. Если мы ставим лимитку с другим типом в зону встречных ордеров, она будет тут же исполнена (в зависимости от типа исполнения и наличия встречных объёмов) по наилучшим встречным ценам, как рыночная.

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_type_filling
Наверно я что-то не догоняю)))
Я использую тип заявки ORDER_FILLING_RETURN
И ставлю цену внутри спреда. Т.е. если мне надо продать - я ставлю цену лучше BID и на 1 пункт хуже чем ASK
Всё норм - заявка появляется и "кушается" по мере поступления рыночных встречных ордеров.

Тогда... если я помению тип ордера на   ORDER_FILLING_BOC  - по идее ситуация не измениться (ну если мы берём за аксиому, что на момент выставления заявок - в стакане отсутствуют встречные лимитные заявки по данной цене). Или я что-то не верно понимаю?

И... ну какая разница в моём примере в конечном итоге от типа выставленного ордера? Он выставился (появился в стакане). Вопрос то в том - как и чем он закрывается. 
 
fxsaber #:

Здесь на ресурсе выложен бесплатный тестер, который идентичен MT5-Тестеру. Его автор - я. Поэтому, как работает алгоритм Тестера, - понимаю.

В MT5-Тестере своими лимитными заявками вы не влияете на ценообразование.

Я бы с удовольствием попробовал Ваш тестер, но мне бы для начала разобраться в тестером mt5 и добиться схожих результатов с моим тестером. А для этого мне надо понять, как решать ту проблему, что я описал выше. 
Вот Ваш тестер учитывает только торговые тики или как в mt5 ещё и изменения цен (с флагом 2 и 4) без проведения торговых операций? Этот вопрос НЕ актуален, если Ваш тестер ориентирован на роботы, работающие только по рыночным ордерам.
 
Ruslan Begidhev #:
мне надо понять, как решать ту проблему, что я описал выше.
Приведите хронологию на простом примере, какой видите правильную работу тестера.
 
fxsaber #:
Приведите хронологию на простом примере, какой видите правильную работу тестера.

Ну смотрите.. я в прикреплённом файлике - тики.

я в 09.00.06 Выставляю Лимитный ордер на продажу по цене 28249
Далее я отслеживаю стакан и если появляются ордера по цене, лучше чем у меня - я становлюсь перед ними.

Таким образом мой ордер по идее должен быть исполнен при первом поступившем рыночном тике на покупку.

Такой тик появляется только 09.00.14 по цене 28243 - и моя система ориентируется именно по нему.


А в mt5 - после того, как я выставил свой ордер на продажу по цене 28249 - тут же (но после меня) появляется лимитный (не торговый тик с флагом 2) по этой же цене ордер на покупку. И система  mt5 вполне вроде как логично исполняет мой ордер. 


Причина обращения: