Задержка в исполнении OrderSend()

 
Команда OrderSend() исполняется с задержкой.

Так, в советнике записано:

if (...[перечисляются условия сигнала])
{
OrderSend(...);
Print("Ордер отправлен, сейчас ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),", Bid: ",Bid,", ошибка: ",GetLastError());
}

То есть Print идёт после OrderSend.

Запись в логе экспертов "Ордер отправлен ..." появляется в 16:50:04. Верно указывается тик (Bid), бывший в тот момент; код ошибки при этом - 0.

Тем не менее, в логе самого терминала запись "instant order ..." появляется только 16:50:07 (через три секунды). Bid уже указывается другой - который был на седьмой секунде согласно истории тиков.

Подскажите, пожалуйста, почему возникает задержка в три секунды?

Сообщений об ошибках, в том числе переквотировках, в логах нет.

Торговля реальная, брокер Alpari NZ Limited, MetaTrader версии 4.0 (build 419).

Огромное спасибо!
 
DVS75:

Подскажите, пожалуйста, почему возникает задержка в три секунды?


часы на компе на 3 секунды переведите :)


а вообще исполнение происходит ведь на сервере. в вашем случае за 3 секунды.

фишка в том, что в течении этих 3 секунд вы не сможете отправить ни одного нового ордера.

будет занят контекст торговли терминала.

 
sergeev:
... исполнение происходит ... на сервере, в вашем случае за 3 секунды.

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

Из лога терминала:

...50:07 [номер счёта]: instant order buy ...
...50:08 [номер счёта]: request was accepted by server
...50:08 [номер счёта]: request in process
...50:10 [номер счёта]: order was opened : #325...
 
DVS75:
Команда OrderSend() исполняется с задержкой.

Так, в советнике записано:

То есть Print идёт после OrderSend.

Запись в логе экспертов "Ордер отправлен ..." появляется в 16:50:04. Верно указывается тик (Bid), бывший в тот момент; код ошибки при этом - 0.

Тем не менее, в логе самого терминала запись "instant order ..." появляется только 16:50:07 (через три секунды). Bid уже указывается другой - который был на седьмой секунде согласно истории тиков.

Подскажите, пожалуйста, почему возникает задержка в три секунды?

Сообщений об ошибках, в том числе переквотировках, в логах нет.

Торговля реальная, брокер Alpari NZ Limited, MetaTrader версии 4.0 (build 419).

Огромное спасибо!


Продублируйте оператор Print() еще и впереди, получите точку отсчета:

Print("Ордер отправлен ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Bid: ",Bid);
OrderSend(...);
Print("Ответ получен ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Bid: ",Bid,", ошибка: ",GetLastError());
 
prorab:


... точку отсчета.


Согласно истории тиков брокера сигнал появился на четвёртой секунде.

То есть, раньше этого времени ордер отправлен быть и не мог.

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

Раньше этого времени (четвёртой секунды) команда Print также не исполнялась.

 
Нашли к чему придраться... Теперь попробуйте открыть ордер меньшим объёмом. Тогда задержка возможно будет меньше. И да, это реальность. На исполнение приказа нужно время. И это время зависит от очень многих факторов (особенно, когда торгуешь на реальном счету).
 
MaxZ:
Нашли к чему придраться... Теперь попробуйте открыть ордер меньшим объёмом. Тогда задержка возможно будет меньше. И да, это реальность. На исполнение приказа нужно время. И это время зависит от очень многих факторов (особенно, когда торгуешь на реальном счету).

3 секунды "тугодумия" терминала вовсе не от объема зависит.

Автор пишет не о разнице во времени отправки ордера и его открытием.

Запись в логе экспертов "Ордер отправлен ..." появляется в 16:50:04. Верно указывается тик (Bid), бывший в тот момент; код ошибки при этом - 0.

Тем не менее, в логе самого терминала запись "instant order ..." появляется только 16:50:07 (через три секунды). Bid уже указывается другой - который был на седьмой секунде согласно истории тиков.

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

Читайте внимательно. (с) Катана Дж.

 
avatara:

3 секунды "тугодумия" терминала вовсе не от объема зависит.

Автор пишет не о разнице во времени отправки ордера и его открытием.

Читайте внимательно. (с) Катана Дж.

Ну да... По поводу объёма, Я был не прав. Поспешил с выводами, невнимательность. Значит в другом причина.

Конвеер запросов занят, ждёт своей очереди? А почему бы и нет? Или интернет-соединение барахлит? Автор даже не расскажет на демо это у Него случилось или на реале. Сколько раз из скольки ордеров повторяется данная ситуация и т.д.... Да, блин, комп лаганул!! :))) Сетевая атака была в это время или антививирус скачивал базы и загрузил процессор на полную, съел всю виртуальную память. Кто знает... Например, Мой "доисторический" комп легко вешает DC или Torrent, или страница в интернете, забитая Flash'ем...

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