При тестировании на RealTimeEmulationTrader при значении настройки у MarketEmulator MatchOnTouch = false заполнение заявок происходит путем «прошивания» уровня цены заявки. При этом цена полученной сделки принимает значение лучше, чем была выставлена цена у лимитированной заявки, что не отражает реальную картину. В связи с тем, что на реальном рынке цена сделки практически всегда соответствует цене заявки.
Подскажите, пожалуйста, каким образом сделать, чтобы при значении настройки MatchOnTouch = false у MarketEmulator заполнение заявок происходило по ценам самих заявок (как при MatchOnTouch = true, но с «прошиванием» уровня цены заявки, а не касанием)?
PS. Речь идет о лимитированных заявках выставленных единичным лотом.
Comentários (10)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Вы же клиент обучения? Скачайте участок ОЛ с контакта, постройте распределение по цене заявки и сделки. И увидите, что это не так.
Выразился не совсем так. С ордер логом согласен, я имел в виду свои заявки, они в 99% случаев исполняются по ценам самих заявок на реале, потому что выставляются всегда ниже бида в случае бая и выше аска в случае селла. А вот если рассматривать эмуляцию при MatchOnTouch = false, то там исполнение, как я уже писал, происходит всегда лучше цены заявки. И в результате получается, что к каждой сделке «приклеивается» пункт, которого на реале практически никогда не встретить.
При включенной опции MatchOnTouch = false исполнение заявки дожидается, когда цена прошьет ее уровень. Рынок уровень прошивает, происходит исполнение, но, как мне кажется логичным, оно должно происходить по цене заявки, а не по цене на сколько данный уровень прошьется. Всё это естественно применимо для заявок, которые выставляются ниже рынка в случае бая и выше в случае селла.
Подскажите, каким образом можно повлиять на цену исполнения заявок?
Или я вас не понимаю, или вы говорите о разных вещах. Цена сделки у лимитки всегда не хуже цены заявки. В этом ее смысл.
Если вы стоите в стакане, и по вам ударяют, то цена ваших сделок будет всегда = цене заявки.
Если вы ударяете по стакану, то цена ваших сделок будет >= лучшей противоположной цене и <= цене заявки.
Вот я как раз об этом, я выставляю отложку, то есть «стою в стакане». По мне «ударяют», то есть прошивают уровень моей заявки, и на реале практически всегда цена сделки получается равной цене заявки. А вот у MarketEmulator при MatchOnTouch = false в таком случае сделка принимает значение цены лучше, чем у заявки.
По моему мнению, это достаточно оптимистический сценарий, который очень редко встречается на реальном рынке, поэтому присутствует необходимость данный момент подправить.
Мы о разных вещах видимо говорим. Не может быть такого как "практически всегда".
То незначительное количество сделок на реале, которые получали цены лучше заявок, видимо, как отметил [USERLINK]devruss[/USERLINK], попросту не успевали вовремя выставляться в нужное место. Спасибо, с этим понятно.
Используя следующий код:
вывожу лог исполнения сделок у MarketEmulator при MatchOnTouch = false:
Как видно из представленного примера исполнение всегда проходит лучше цены заявки..
Действительно, была ошибка. Будет фикс.
Михаил, в версии 4.2.26.0 произведен фикс указанной выше проблемы. Замечательно!
Используя код:
при остановке стратегии результат во всех случаях прогона отличен от ноля. Что явно подтверждает, что проблема не была решена в полной мере!
Пункты уже приклеиваются, конечно, в гораздо меньше количестве сделок, но хотелось бы видеть полное их отсутствие.
Полное отсутствие - это нереально поведение.
Наверное, вы не совсем поняли первоначальную проблему. Была ошибка, что стоящая в стакане заявка исполняется по ценам, лучше чем ее цена. Это исправили. А то что вы пишите - это исправление поведения уже обратного случая - активной заявки (в стакан не ставится).
покажи лог с примером: выведи цены, best bid/ask, отдельно момент выставления заявки, как цена прошивает ордер и тут же цену исполнения.
Если эта ошибка существует, то ты только что убил всем пользователям продукта большинство интрадей стратегий, не говоря про HFT=) Хотя я сам все проверял, у меня было нормально. Единственный момент, когда цена исполнения может быть лучше, чем в лимином приказе - это когда например рынок идет наверх, ты ставишь лимитный приказ на продажу, и до того как он реально поставился на биржу, рынок проходит твой уровень и твой приказ исполняется как бы "по рынку", т.е. по текущим ценам. Такое случается live на сильных движениях, например