Я написал функцию:
Думал, что так буду возвращать дату с временем в локальном часовом поясе. Но что не передаю через параметр, всё-равно возвращается время, которое на данный момент, а не то, которое я передаю, даже если это сколько-нибудь дней назад. По сему возник вопрос. Этот параметра вообще для чего нужен?
Я думал, что TimeLocal() т.е. без параметров возвращает текущее время локальное, а с параметрами TimeLocal(dt) возвращает время на дату dt. Если нет, то какой смысл в этом параметре?
Потому, что TimeLocal(dt) не возвращает дату, а записывает её в структуру dt.
Примечание
Если в качестве параметра была передана переменная типа структуры MqlDateTime, то она заполняется соответствующим образом.
Она это структура...
Потому, что TimeLocal(dt) не возвращает дату, а записывает её в структуру dt.
Она это структура...
С чего бы это вдруг? Читаем..
Параметры
dt_struct
[out] Переменная типа структуры MqlDateTime.
Возвращаемое значение
Значение типа datetime
- www.mql5.com
Примечание
Если в качестве параметра была передана переменная типа структуры MqlDateTime, то она заполняется соответствующим образом.
С чего бы это вдруг? Читаем..
Возвращаемое значение datetime. Тип функции datetime. Как может функция ничего не возвращать?Запусти такой скрипт
/********************Script program start function*******************/ void OnStart() { MqlDateTime mqlDateTime; TimeToStruct(D'2017.10.12 16:00', mqlDateTime); Print(mqlDateTime.day, ".", mqlDateTime.mon, ".", mqlDateTime.year); TimeLocal(mqlDateTime); Print(mqlDateTime.day, ".", mqlDateTime.mon, ".", mqlDateTime.year); }/*******************************************************************/
Прочти что распечатает
2018.04.16 20:53:46.744 00 (EURUSD,H1) 12.10.2017 2018.04.16 20:53:46.744 00 (EURUSD,H1) 16.4.2018и потом повтори что написано в документации.
Запусти такой скрипт
Прочти что распечатает
и потом повтори что написано в документации.Спасибо. Я уже понял. Это ущербность мкл в целом, в плане, не возможности возвращать массивы нормально, а только через параметры функции. Я привык работать писать с удобствами, а здесь вот такие моменты присутствуют. Кроме того, та жу функция TimeLocal() сама по себе всё-таки void. А то что возвращается через параметры это уже как-бы не относится к этому. Это первое, что может запутать. У меня хватает функций. которые сами по себе void, но возвращаются что-то через параметры. Поэтому я даже не заморачивался когда читал справку.
Спасибо. Я уже понял. Это ущербность мкл в целом, в плане, не возможности возвращать массивы нормально, а только через параметры функции. Я привык работать писать с удобствами, а здесь вот такие моменты присутствуют. Кроме того, та жу функция TimeLocal() сама по себе всё-таки void. А то что возвращается через параметры это уже как-бы не относится к этому. Это первое, что может запутать. У меня хватает функций. которые сами по себе void, но возвращаются что-то через параметры. Поэтому я даже не заморачивался когда читал справку.
Простите за мое невежество, а в каком языке функция возвращает целый массив? Насколько я знаю в Си возвращается указатель на массив. В MQL указатель вернуть нельзя. Безопасность. Потому как тогда можно залезть в системную память и чего нибудь там наделать. (тут я возможно тоже не совсем прав).
Простите за мое невежество, а в каком языке функция возвращает целый массив? Насколько я знаю в Си возвращается указатель на массив. В MQL указатель вернуть нельзя. Безопасность. Потому как тогда можно залезть в системную память и чего нибудь там наделать. (тут я возможно тоже не совсем прав).
Да лааадно... Используем стандартный наследник CArray - и возвращай себе указатели.
Единственная проблема с указателями на массивы в MLQ - это стандартные массивы таймсерий, передаваемые в индикаторы. Взять указатель непосредственно нельзя, приходится копировать. Но это - единственный случай. Во всех остальных - используем класс-наследник CArray, и все проблемы с указателями на массивы исчезают.
Простите за мое невежество, а в каком языке функция возвращает целый массив? Насколько я знаю в Си возвращается указатель на массив. В MQL указатель вернуть нельзя. Безопасность. Потому как тогда можно залезть в системную память и чего нибудь там наделать. (тут я возможно тоже не совсем прав).
В Java я так всегда работал. В C# тоже думаю должно такое быть. Слишком они похожу. Разве что в Java делегатов нет..
Да лааадно... Используем стандартный наследник CArray - и возвращай себе указатели.
Единственная проблема с указателями на массивы в MLQ - это стандартные массивы таймсерий, передаваемые в индикаторы. Взять указатель непосредственно нельзя, приходится копировать. Но это - единственный случай. Во всех остальных - используем класс-наследник CArray, и все проблемы с указателями на массивы исчезают.
Жорж, ты говоришь с ТС на инопланетном языке )))) Веселый форум, скоро надо будет вызывать Петросяна.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я написал функцию:
Думал, что так буду возвращать дату с временем в локальном часовом поясе. Но что не передаю через параметр, всё-равно возвращается время, которое на данный момент, а не то, которое я передаю, даже если это сколько-нибудь дней назад. По сему возник вопрос. Этот параметра вообще для чего нужен?
Я думал, что TimeLocal() т.е. без параметров возвращает текущее время локальное, а с параметрами TimeLocal(dt) возвращает время на дату dt. Если нет, то какой смысл в этом параметре?