Инструмент для МТ4, фиксирующий проскальзывания

 

Здравствуйте,

скажите-подскажите, есть ли какой-нибудь инструмент для МТ4 (скрипт, индикатор или советник), который умеет фиксировать в логах проскальзывания ордеров, открываемых другим советником (или вручную)?

 
corintho:

Здравствуйте,

скажите-подскажите, есть ли какой-нибудь инструмент для МТ4 (скрипт, индикатор или советник), который умеет фиксировать в логах проскальзывания ордеров, открываемых другим советником (или вручную)?

Дык. В логах итак это записано.
 
eevviill14:
Дык. В логах итак это записано.

Нет, не пишет

0 23:57:00.779 '71820': order sell market 0.02 USDCAD.ecn sl: 0.00000 tp: 0.00000

0 23:57:01.029 '71820': order was opened : #7001119 sell 0.02 USDCAD.ecn at 1.34352 sl: 0.00000 tp: 0.00000

 Будет писать, если режим исполнения у брокера Instant execution. Как видно по логу, у меня Market execution

 
corintho:

Здравствуйте,

скажите-подскажите, есть ли какой-нибудь инструмент для МТ4 (скрипт, индикатор или советник), который умеет фиксировать в логах проскальзывания ордеров, открываемых другим советником (или вручную)?

При маркет-исполнении, для отслеживания проскольза нужно каким-то образом фиксировать цену запроса (чтобы сравнивать ее с ценой исполнения).

Значит, дорабатывать советников и придумывать какой-то считыватель цены в момент клика мышки по кнопке для ручной торговли.

Иначе — никак.

 

Можно кое-что сделать. Писать не в лог-файлы терминала, конечно, а в свой файл протокола. И если под проскальзыванием понимать отличие курса открытия не от курса в момент отсылки запроса на открытие сделки, а от курса в момент самого открытия сделки.

1. Ведем тиковую историю по нужным инструментам на глубину 5 минут (время, Bid, Ask). По ней можно определить курсы Бид и Аск в любой момент за эти 5 минут.

2. По этим же инструментам держим список последних учтенных номеров тикетов сделок на этом счете.

3. Раз в секунду или с другой нужной частотой опрашиваем историю на предмет появления сделок с номерами тикетов, большими, чем учтенные.

4. Выстраиваем новые сделки в порядке возрастания времени открытия (упорядочиваем массив номеров тикетов по возрастанию). Необязательно, но все же.

5. По очереди заносим в свой протокол данные об имевших место курсах в момент открытия и самом курсе открытия, их разницу (проскальзывание).

Повторюсь, это будет проскальзывание не относительно курсов в момент отсылки запроса на сервер, а в момент исполнения запроса на открытие.

 
Vladimir:

Повторюсь, это будет проскальзывание не относительно курсов в момент отсылки запроса на сервер, а в момент исполнения запроса на открытие.

Если все сделать правильно, курс в момент исполнения будет совпадать с ценой исполнения. Какой в этом смысл?

Советник отправляет приказ на открытие бай по 1.2345. Но ордер исполняется по 1.2350 (именно эта котировка должна прийти вместе с информацией об ордере, если нет рассинхронизации или задержки в доставке той или иной информации).

Нужно узнать разницу между тем, что хотели (1.2345), и тем, что получили (1.2350). Она составит -5 пунктов. 

 
Советник постоянно опрашивает журнал (WinAPI) терминала на наличие новых сообщений. Как только появляется маркет-сообщение, делается снимок Обзора рынка. Далее цены из снимка сравниваются с ценами исполнения.
 
Andrey Khatimlianskii:

Если все сделать правильно, курс в момент исполнения будет совпадать с ценой исполнения. Какой в этом смысл?

Если брокер ведет себя правильно, Вы хотели сказать. Так ведь? Забудем пока об имеющемся систематическом отставании котировок в терминале от котировок на сервере на половину пинга.

Бороться с систематическим проскальзыванием в худшую для клиента сторону нечем, но узнать об этом вовремя было бы полезно.

У меня ситуация проще, сам советник и отсылает приказы, и пишет в протокол, какой при этом был курс, и протоколирует проскальзывания. От некоторых компаний пришлось сразу отказаться, поскольку они вообще не грешили проскальзыванием в пользу клиента.

Это важный показатель. Собственно, даже на этом форуме среди комплектов характеристик сигналов есть закладка "Проскальзывание". Вообще-то они характеризуют не только брокера, но и торговую систему. Если она основана на прогнозах до 5 секунд вперед, то проскальзывание в худшую сторону для нее естественно. Однако сравнение курса открытия с курсом в терминале в этот момент все равно остается важной характеристикой - нужно видеть, насколько нас надувают.

Вообще-то других целей протоколирования проскальзывания я, пожалуй, и назвать не смогу. А зачем еще?

 
Vladimir:

сам советник и отсылает приказы, и пишет в протокол, какой при этом был курс, и протоколирует проскальзывания

Только так и можно, я об этом и сказал. А цена в момент исполнения будет совпадать с ценой ордера, тут брокер не при чем, это просто доставляется информация с сервера в терминал.
 
fxsaber:
Советник постоянно опрашивает журнал (WinAPI) терминала на наличие новых сообщений. Как только появляется маркет-сообщение, делается снимок Обзора рынка. Далее цены из снимка сравниваются с ценами исполнения.

Сомнительное решение с посредственной точностью (если торговля активная, а котировки шустрые).

Но вполне реализуемое. 

 
Andrey Khatimlianskii:

Сомнительное решение с посредственной точностью (если торговля активная, а котировки шустрые).

Точность можно поднять (почти до 100%) через запись тиков последней секунды. И выбор из них в качестве снимка наилучшего - HighBid и LowAsk.

Отлично будет работать такая реализация.

Интересно другое - насколько востребован такой функционал?

Сам пишу цену акцепта и для отложенных ордеров в неиспользуемые поля OrderSend. Тогда на вопросы уровня проскальзываний отвечаю через анализ истории торгов. 

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