Подскажите, пожалуйста, почему возникает задержка в три секунды?
а вообще исполнение происходит ведь на сервере. в вашем случае за 3 секунды.
фишка в том, что в течении этих 3 секунд вы не сможете отправить ни одного нового ордера.
будет занят контекст торговли терминала.
... исполнение происходит ... на сервере, в вашем случае за 3 секунды.
Как я понял, через три секунды (на седьмой) ордер только отправляется на сервер.
Из лога терминала:
...50:08 [номер счёта]: request was accepted by server
...50:08 [номер счёта]: request in process
...50:10 [номер счёта]: order was opened : #325...
Команда 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());
... точку отсчета.
Согласно истории тиков брокера сигнал появился на четвёртой секунде.
То есть, раньше этого времени ордер отправлен быть и не мог.
Непонятно, почему ордер был отправлен на сервер позже сигнала на три секунды (7-4).
Раньше этого времени (четвёртой секунды) команда Print также не исполнялась.
Нашли к чему придраться... Теперь попробуйте открыть ордер меньшим объёмом. Тогда задержка возможно будет меньше. И да, это реальность. На исполнение приказа нужно время. И это время зависит от очень многих факторов (особенно, когда торгуешь на реальном счету).
3 секунды "тугодумия" терминала вовсе не от объема зависит.
Автор пишет не о разнице во времени отправки ордера и его открытием.
Запись в логе экспертов "Ордер отправлен ..." появляется в 16:50:04. Верно указывается тик (Bid), бывший в тот момент; код ошибки при этом - 0.
Тем не менее, в логе самого терминала запись "instant order ..." появляется только 16:50:07 (через три секунды). Bid уже указывается другой - который был на седьмой секунде согласно истории тиков.
Непонятно, почему ордер был отправлен на сервер позже сигнала на три секунды (7-4).
Читайте внимательно. (с) Катана Дж.
3 секунды "тугодумия" терминала вовсе не от объема зависит.
Автор пишет не о разнице во времени отправки ордера и его открытием.
Читайте внимательно. (с) Катана Дж.
Ну да... По поводу объёма, Я был не прав. Поспешил с выводами, невнимательность. Значит в другом причина.
Конвеер запросов занят, ждёт своей очереди? А почему бы и нет? Или интернет-соединение барахлит? Автор даже не расскажет на демо это у Него случилось или на реале. Сколько раз из скольки ордеров повторяется данная ситуация и т.д.... Да, блин, комп лаганул!! :))) Сетевая атака была в это время или антививирус скачивал базы и загрузил процессор на полную, съел всю виртуальную память. Кто знает... Например, Мой "доисторический" комп легко вешает DC или Torrent, или страница в интернете, забитая Flash'ем...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Так, в советнике записано:
if (...[перечисляются условия сигнала])
{
OrderSend(...);
Print("Ордер отправлен, сейчас ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),", Bid: ",Bid,", ошибка: ",GetLastError());
}
Запись в логе экспертов "Ордер отправлен ..." появляется в 16:50:04. Верно указывается тик (Bid), бывший в тот момент; код ошибки при этом - 0.
Тем не менее, в логе самого терминала запись "instant order ..." появляется только 16:50:07 (через три секунды). Bid уже указывается другой - который был на седьмой секунде согласно истории тиков.
Подскажите, пожалуйста, почему возникает задержка в три секунды?
Сообщений об ошибках, в том числе переквотировках, в логах нет.
Торговля реальная, брокер Alpari NZ Limited, MetaTrader версии 4.0 (build 419).
Огромное спасибо!