Несколько вопросов при работе с тиками

 

Доброе утро

Возникли такие вопросы:

1. На терминал непрерывно поступают тики.  Реально ли, что эксперт по каким-то причинам получит не все тики..?  ну например за час было 1500 тиков, а мы в действительности увидим только 1480?  как бы некоторые тики были настолько "быстры" или что-то в этом роде, что мы даже их не увидили

2. Что будет если в функции OnTick к примеру сделать задержку Sleep(1000)? То все тики, которые поступят в течении следующий секунды пропадут, поскольку эксперт ожидает?

3. И еще:

например у нас идут тики, ну пусть это будет Bid:   1.08300, 1.082500, 1.08240, 1.08230 (и тут мы выставляем ордер), далее 1.08240, 1.08200, 1.08100, 1.07988

вопрос: Брокер исполнит заявку на ближайшем же тике (если конечно заявка дошла) или он может и через 30 тиков исполнить, если волатильность огромная?

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


4. И еще вопрос немного не по теме..

Например, у нас был отложенный ордер SELLLIMIT или SELLBUY.. и время его истечения вышло.. он не исполнился.. как можно просматривая историю ордеров (допустим он был последний) понять, что ордер не был исполнен? (он просто удалился по истечению времени, т.к. цена не дошла до него)


Спасибо :)  и хороших выходных

 

Тики могут приходить пачками.

Пока ОнТик выполняется в советнике он пропускает все тики что в то время приходят. 

 

Об утере тиков. Маршруты их доставки разные, вплоть до полной утери пакета. Сама сеть "убивает" пакеты, блуждающие дольше 30 секунд. Когда последовательность прихода тиков в терминал отличается от их исходной последовательности, это уже вопрос, что делать с опоздавшими.

Недавно где-то прочел (забыл, где...), как человек принимал на два компьютера с разными интернет-провайдерами котировки с разных счетов одной компании и затем сравнивал. У него вышло, если мне не изменяет память, что терялись порядка один тик на десять тысяч.

 
ramnek:

Доброе утро

Возникли такие вопросы:

1. На терминал непрерывно поступают тики.  Реально ли, что эксперт по каким-то причинам получит не все тики..?  ну например за час было 1500 тиков, а мы в действительности увидим только 1480?  как бы некоторые тики были настолько "быстры" или что-то в этом роде, что мы даже их не увидили 

**** 

 
 Эксперт получает ВСЕ тики, которые приходят на терминал от сервера.

После получения тика:
- эксперт формирует и отправляет торговый приказ на сервер, 
- сервер обрабатывает этот запрос и сообщает результат терминалу,
- эксперт получает ответ сервера и может проанализировать его.

... все, выше перечисленное, происходит за время ОДНОГО тика.

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

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

Надо учитывать еще и то, что в некоторых ДЦ терминал строит график по другим котировкам, отличным от тех, которые получает эксперт.

по вопросу 4: надо просто посмотреть ЛОГИ в журнале терминала, там должна быть полная информация.

 
prorab:

 
 Эксперт получает ВСЕ тики, которые приходят на терминал от сервера.

После получения тика:
- эксперт формирует и отправляет торговый приказ на сервер, 
- сервер обрабатывает этот запрос и сообщает результат терминалу,
- эксперт получает ответ сервера и может проанализировать его.

... все, выше перечисленное, происходит за время ОДНОГО тика.
...

 

 

^:))))))))))))))))))))) 

 
prorab:

 Эксперт получает ВСЕ тики, которые приходят на терминал от сервера.

Важное уточнение: если он в это время не занят обработкой предыдущего тика.

После получения тика:
- эксперт формирует и отправляет торговый приказ на сервер, 
- сервер обрабатывает этот запрос и сообщает результат терминалу,
- эксперт получает ответ сервера и может проанализировать его.

... все, выше перечисленное, происходит за время ОДНОГО тика.

Нет. Торговые операции - достаточно медленные (по сравнению с быстродействием современных ПК). На них уходит время от нескольких миллисекунд до нескольких секунд. Логично, что за это время могут прийти другие тики. В итоге эксперт их не получит, т. к. занят отправкой торгового приказа и ожиданием получения ответа сервера.

 
prorab:

 
 Эксперт получает ВСЕ тики, которые приходят на терминал от сервера.

В справке по MQL4 написано иначе: "OnTick Событие NewTick генерируется только для экспертов при поступлении нового тика по символу, к графику которого прикреплен эксперт. "

Значит, не ВСЕ, а только по символу своего графика. Эксперт, прикрепленный к графику GBPUSD, не запустит обработку прихода нового тика по USDJPY. При этом, конечно же, эксперт может самостоятельно ловить такие моменты. Доступ к текущим курсам всех символов, по которым приходят котировки, у него полный.

 
ramnek:
 

3. И еще:

например у нас идут тики, ну пусть это будет Bid:   1.08300, 1.082500, 1.08240, 1.08230 (и тут мы выставляем ордер), далее 1.08240, 1.08200, 1.08100, 1.07988

вопрос: Брокер исполнит заявку на ближайшем же тике (если конечно заявка дошла) или он может и через 30 тиков исполнить, если волатильность огромная?

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

Абсолютно все форекс-компании не берут на себя никаких обязательств в секундах по продолжительности реакции сервера на запросы терминала. Большинство резервируют управление временем своей реакции за ситуациями, когда клиент начинает выводить средства или просто торгует слишком, по их мнению, прибыльно. Смотрите, например, http://kroufr.ru/forum/index.php?topic=24733.msg218222#msg218222 : "После первого вывода денег мне установили задержку исполнения ордеров в 40 секунд, после второго вывода задержку поставили больше минуты."

Очевидно, никакой связи с последовательностью прихода тиков и выставления ордеров здесь уловить не удастся.

Но даже в самых комфортных условиях, при самом благоприятном отношении компании к торговле клиента - например, на демосчете - сравнивать эти последовательности смысла нет. Вспомните, что исполнение ордера происходит на сервере, и последовательность "1.08240, 1.08230 (и тут мы выставляем ордер), далее 1.08240," относится не к событиям в терминале, а к событиям на сервере. Не надейтесь на то, что компания предоставит Вам все требуемое для анализа последовательностей, то есть тиковую историю в миллисекундах и логи сервера тоже в миллисекундах, включающие серверное время прихода ордера на обработку и серверное же время рассылки сервером каждого из тиков. Компании это делать не обязаны и не делают. Исключение - рассмотрение споров у регулятора, данные направляются опять-таки не Вам, а регулятору, обычно по его запросу. У Вас же в терминале этих данных нет, ведь задержка как минимум в половину пинга между сетевыми картами терминала и сервера в любом случае отделяет приход тиков от сервера в терминал и ордеров от терминала на сервер. И вряд ли Вы будете протоколировать на диск приход в терминал всех тиков. Тем более что этот протокол ни в каком случае не будет принят во внимание при рассмотрении споров. Об этом компании позаботились, задав в клиентских соглашениях приоритет данных с их сервера в случае споров.

P.S. Есть еще и очередь на исполнение. Если компания скажет, что в этот момент резко выросла нагрузка на сервер (новости или просто быстрый рынок), это уже неопровержимый аргумент исполнять почти как угодно. Есть еще и исчезновение ликвидности, которое тоже опровергнуть никак не удастся.

 
Scriptong:

Важное уточнение: если он в это время не занят обработкой предыдущего тика.

Я говорил, что эксперт ПОЛУЧАЕТ все тики, про обработку речь не шла. 
Естественно, что время обработки зависит от сложности эксперта.
(Ну, и козе понятно, что речь идет о том символе, на котором стоит эксперт.)  

Нет. Торговые операции - достаточно медленные (по сравнению с быстродействием современных ПК). На них уходит время от нескольких миллисекунд до нескольких секунд. Логично, что за это время могут прийти другие тики. В итоге эксперт их не получит, т. к. занят отправкой торгового приказа и ожиданием получения ответа сервера.

 Не согласен. 
Проверено на реале: два отложенных ордера ставятся за время одного тика, т.е. по одной котировке. Хоть BUY+SELL, хоть однонаправленные. 
Три не проверял, врать не буду.

Конечно, есть ДЦ, которые искусственно загружают сервер бессмысленными операциями, тем самым увеличивая время обработки, но это проверяется элементарно и уродов вычислить не трудно.

PS. Уточню, эту проверку делал года три назад, экспериментировал с частичным закрытием позиции,
потом нашел более удобный способ с встречным ордером и функцией OrderCloseBy(). 
Так что имейте ввиду, что проверку все-равно надо будет повторить. Это не сложно.