Вот поэтому нужно писать максимально короткий код - если думаете, что есть ошибка.
Пример:
//+------------------------------------------------------------------+ //| Expert 1.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //--- input parameters input int Input1=9; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- datetime time_current=TimeCurrent(); Comment(TimeToString(time_current,TIME_DATE|TIME_SECONDS)); } //+------------------------------------------------------------------+
код отображает всё синхронно, нет никаких задержек.
Единственное замечание: если этот код разместить на символе на котором очень мало тиков - Вы будете видеть "якобы задержку" так как в момент прихода тика время обновится корректно и затем замрёт до прихода следующего тика.
Всем привет!
Не могу понять, почему не обновляется своевременно TimeCurrent();
Фрагмент кода (код, естественно, больше). Есть соображения на этот счет?
Если вы работаете в OnTick(), то ваш код срабатывает только тогда, когда приходит тик по конкретному активу. Если нет тиков, значит нет обновления информации.
А время сервера не зависит от OnTick() вашей программы. Это другой поток.
Всеuда нужно помнить, что MQL4\5 - это событий язык.
Если вы работаете в OnTick(), то ваш код срабатывает только тогда, когда приходит тик по конкретному активу. Если нет тиков, значит нет обновления информации.
А время сервера не зависит от OnTick() вашей программы. Это другой поток.
Всеuда нужно помнить, что MQL4\5 - это событий язык.
Вот поэтому нужно писать максимально короткий код - если думаете, что есть ошибка.
Пример:
код отображает всё синхронно, нет никаких задержек.
Единственное замечание: если этот код разместить на символе на котором очень мало тиков - Вы будете видеть "якобы задержку" так как в момент прихода тика время обновится корректно и затем замрёт до прихода следующего тика.
Владимир, а может быть вариант, что код не успевает отработать между тиками? ИЛи же код полностью отрабатывает не зависимо от того, пришел ли в процессе обработки новый тик или нет? Я так, понимаю, что новые тики игнорятся до момента полной отработки кода. Если же новый тик запускает код сначала, то может быть и банально не успевает...
Вот поэтому нужно писать максимально короткий код - если думаете, что есть ошибка.
Почему не следуете своей рекомендации? Привели огромный избыточный код.
Владимир, а может быть вариант, что код не успевает отработать между тиками? ИЛи же код полностью отрабатывает не зависимо от того, пришел ли в процессе обработки новый тик или нет? Я так, понимаю, что новые тики игнорятся до момента полной отработки кода. Если же новый тик запускает код сначала, то может быть и банально не успевает...
Может. Если сложные вычисления ВНУТРИ OnTick, то тики пропускаются.
Может. Если сложные вычисления ВНУТРИ OnTick, то тики пропускаются.
Значит время должно отображаться нормально - без опозданий. Ладно, поковыряю еще. Найду решение - отпишусь.
Значит время должно отображаться нормально - без опозданий. Ладно, поковыряю еще. Найду решение - отпишусь.
Странный лаг. Есть предположение что это может быть связано с тем как вы эту функцию используете.
Если вам нужно значение datetime, нет смысла использовать функцию, в которую передается структура mqldatetime, т.е. лучше использовать TimeCurrent() вместо TimeCurrent(ts)
Если вы используете TimeCurrent(ts) есть смысл работать дальше со структурой ts а не с возвращаемым значением.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Не могу понять, почему не обновляется своевременно TimeCurrent();
Фрагмент кода (код, естественно, больше). Есть соображения на этот счет?