Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Версия DealingWithTime.mqh v. 1.01 из статьи Dealing with Time (Part 2): Функции ( https://www.mql5.com/en/articles/9929 ) перестала работать, потому что MQ изменил поведение функции CopyTime( ) через некоторое время после публикации этой статьи. Теперь эта функция больше не возвращает значения будущего времени, если они больше, чем TimeCurrent(), указанные для параметров start_time и/или stop_time. Вместо этого в качестве наибольшего возможного значения возвращается время открытия последнего текущего бара.
Поскольку окончание FX-сессии определялось таким образом для определения временного сдвига брокера, теперь это приводит к неверным значениям!
Этот расчет был изменен в версии 2.03. Эта версия уже доступна на CodeBase здесь: https://www.mql5.com/en/code/45287.
Кроме того, расчет сдвига времени был полностью изменен, так что теперь охватываются сложные моменты сдвига времени в Сиднее (Австралия) до 1970-х годов.
Также прилагается таблица DST 1975 - 2030.xlsx в zip-файле со всеми изменениями времени с 1970-х годов, чтобы каждый мог проверить правильность работы формул, вот пример серии из таблицы:
1 января 1982 года - стандартное время в США (DST==0), следующее изменение произойдет 25 апреля 1982 года, в последнее (25-е число месяца) воскресенье апреля (4). Таблица уже отсортирована по географическому часовому поясу (столбец A), затем по часовому поясу года (столбец L, spr=весна, aut=осень,) и, наконец, по дате запроса (столбец C). Таблица может быть создана автоматически с помощью прилагаемого эксперта (скрипт не может быть запущен в режиме отладки). Test_DST 2.mq5, если вы запустите его в режиме отладки и скопируете строки из журнала дневника в отладчике и вставите их в электронную таблицу; разделителем ячеек будет пробел.
Кроме того, появилась новая простая функция SecTillClose(), которая выдает время, оставшееся в секундах (валюта времени MQ) до закрытия рынка Форекс - без CopyTime(). Это интересно для тех, кто хочет закрыть свои позиции перед выходными или не хочет открывать новую позицию в определенный период перед выходными.
Входящий в комплект индикатор DealingWithTime_TestIndi.mq5 в виде комментария к графику показывает не только переход на летнее время в Европе, США и Австралии (Сидней), но и текущее время и разницу во времени разных городов. Здесь же вы можете найти таблицу с разным местным временем в основных городах для сравнения: https://www.timeanddate.com/worldclock/. Таким образом, вы можете проверить значения в любое время. Этот индикатор также показывает, как определяются и используются эти значения (что из чего вычитается или к чему прибавляется), что упрощает его самостоятельное использование - копирование и вставка, самая быстрая форма программирования.
Последние две строки также показывают последнюю секунду текущей FX-сессии и оставшееся время в часах (что проще для восприятия) и в секундах. В Нью-Йорке, когда сессия FX закрывается в 17:00 по местному времени в пятницу, нет ни одного действующего бара, открытого в 17:00 по нью-йоркскому времени. Поэтому в этой функции 1 секунда вычитается, чтобы получить время открытия последнего бара по времени брокера. Однако некоторые брокеры закрывают свою FX-сессию на несколько минут раньше, прекращая предоставлять цены и не принимая торговые ордера.
Время обработки статьи (часть 2): Версия функции DealingWithTime.mqh v. 1.01 ( https://www.mql5.com/en/articles/9929 ) перестала работать, потому что MQ изменила CopyTime(), чтобы она работала через некоторое время после публикации этой статьи. Теперь функция больше не возвращает значение будущего времени, если оно больше, чем TimeCurrent(), указанное для параметров start_time и/или stop_time. Вместо этого возвращается время открытия последнего текущего бара как максимально возможное значение.
Поскольку конец FX-сессии определяется таким образом для определения смещения времени брокера, это приводит к некорректному значению!
Этот расчет был изменен в версии 2.03. Эта версия теперь доступна в кодовой базе: https: //www.mql5.com/en/code/45287.
Также был полностью изменен расчет изменения времени, так что теперь он охватывает сложное время изменения времени от Сиднея (Австралия) до 1970-х годов.
Также в zip-файле прилагается таблица DST 1975 - 2030.xlsx со всеми изменениями времени с 70-х годов, чтобы каждый мог проверить правильность работы формул, а ниже приведен пример серии из таблицы:
1 января 1982 года наступило стандартное время США (DST==0), а следующее изменение произойдет 25 апреля 1982 года, в последнее (25-е число месяца) воскресенье (4) апреля. Таблица отсортирована по географическому часовому поясу (столбец A), затем по часовому поясу года (столбец L, spr=весна, aut=осень), и, наконец, по дате запроса (столбец C). Таблица может быть создана автоматически с помощью прилагаемого эксперта(скрипт нельзя запустить в режиме отладки). Test_DST 2.mq5 Если запустить его в режиме отладки и скопировать строки журнала регистрации из отладчика и вставить их в электронную таблицу, то разделителями ячеек будут пробелы.
Кроме того, появилась новая простая функция SecTillClose(), которая выдает оставшееся время в секундах до закрытия рынка Форекс (валюта времени MQ) - не нужно использовать CopyTime(). Это интересно для тех, кто хочет закрыть позицию до выходных или не хочет открывать новую позицию в течение указанного времени до выходных.
Входящий в комплект индикатор DealingWithTime_TestIndi.mq5 в качестве примечания к графику показывает не только переход на летнее время в Европе, США и Австралии (Сидней), но и текущее время, а также разницу во времени между городами. Здесь вы можете найти таблицы для сравнения разного местного времени в крупных городах: https: //www.timeanddate.com/worldclock/. Таким образом, вы можете проверить эти значения в любой момент. Индикатор также показывает, как определять и использовать эти значения (что из чего вычитать или к чему прибавлять), облегчая вам самостоятельное использование - копирование и вставка, что является самой быстрой формой программирования.
Последние две строки также показывают последнюю секунду текущей сессии Forex, а также оставшееся время в часах (так проще судить) и секундах. В Нью-Йорке, когда сессия Forex закрывается в 17:00 по местному времени в пятницу, нет ни одного действующего бара, открытого в 17:00 по нью-йоркскому времени. Поэтому в этой функции вычтите 1 секунду, чтобы получить время открытия последнего действительного бара по времени брокера. Однако некоторые брокеры закрывают торговлю на Форекс на несколько минут раньше и больше не предлагают цены и не принимают торговые ордера.
Версия DealingWithTime.mqh v. 1.01 из статьи Работа со временем (Часть 2): Функции ( https://www.mql5.com/ru/articles/9929 ) перестала работать, так как MQ изменил поведение CopyTime( ) через некоторое время после публикации этой статьи. Теперь эта функция больше не возвращает будущие значения времени, если они больше, чем TimeCurrent() , указанный для параметров start_time и/или stop_time. Вместо этого возвращается максимально возможное значение времени открытия последнего текущего бара.
Так как окончание валютной сессии было определено таким образом, чтобы определить смещение времени брокера, теперь это приводит к неверным значениям!
Этот расчет был изменен в версии 2.03. Эта версия теперь доступна в CodeBase здесь: https://www.mql5.com/ru/code/45287 .
Но также был полностью изменен расчет перевода времени, так что теперь охвачены сложные времена перевода времени из Сиднея (Австралия) обратно в 70-е годы.
Также прилагается таблица DST 1975 - 2030.xlsx в виде zip-файла со всеми временными изменениями с 70-х годов, чтобы каждый мог проверить правильность работы формул, вот пример серии таблицы:
1 января 1982 г. - стандартное время в США (DST == 0), а следующее изменение произойдет 25 апреля 1982 г., в последнее (25-е число месяца) воскресенье апреля (4). Таблица уже отсортирована по географическому часовому поясу (столбец A), затем по часовому поясу года (столбец L, spr=весна, aut=осень) и, наконец, по дате запроса (столбец C). Таблица может быть создана автоматически включенным советником (скрипт не может быть запущен в режиме отладки). Test_DST 2.mq5, если вы запустите его в режиме отладки и скопируете строки журнала журнала в отладчике и вставите их в электронную таблицу; Разделителем ячеек будет пробел.
Кроме того, теперь есть новая простая функция SecTillClose() , которая дает вам оставшееся время в секундах (валюта времени MQ) до закрытия рынка форекс - без CopyTime() . Это интересно для тех, кто хочет закрыть свои позиции до выходных или не хочет открывать новую позицию в определенный период до выходных.
Включенный индикатор DealingWithTime_TestIndi.mq5, как комментарий к графику, показывает не только летнее время в Европе, США и Австралии (Сидней), но также текущее время и разницу во времени различных городов. Здесь вы можете найти таблицу с разным местным временем крупных городов для сравнения: https://www.timeanddate.com/worldclock/ . Таким образом, вы можете проверить значения в любое время. Этот индикатор также показывает, как эти значения определяются и используются (что от чего вычитается или прибавляется), что облегчает самостоятельное использование — копирование и вставка, самая быстрая форма программирования.
Последние две строки также показывают последнюю секунду текущей FX-сессии и оставшееся время в часах (о чем проще судить) и в секундах. В Нью-Йорке, когда сессия FX закрывается в 17:00 по местному времени в пятницу, нет действительного бара, открытого в 17:00 по нью-йоркскому времени. Поэтому в этой функции вычитается 1 секунда, чтобы получить последнее действительное время открытия последнего бара во времени брокера. Однако некоторые брокеры заканчивают свою валютную сессию на несколько минут раньше, больше не предоставляя цены и не принимая торговые приказы.
Привет @Anil Varma
Я прочитал последнее сообщение автора @Carl Schreiber о функции CopyTime(), но так как мне более понятна 1-я версия, я все еще использую DealingWithTime.mqh v . 1.01.
В своем индикаторе я хочу, чтобы:
Присвойте каждому бару сырое время NY секунды), час NY и минуту NY, используя следующие буферы для отображения их в окне данных: double NyRawTimeBuffer[]; double NyHourBuffer[]; double NyMinuteBuffer[];Функция работает только тогда, когда на графике таймфрейма, на котором запущен терминал, установлено значение H1.
Если я закрываю терминал и таймфрейм устанавливается, допустим, на M5, а затем я перезапускаю терминал, то он выдает следующую ошибку:
2024.02.18 15:33:38.048 MyFractals_V4 (EURUSD,M5) 240: CopyTime() FAILED for EURUSD H1: нужны времена от 2024.02.12 02:00:00, а есть только от 1970.01.01 00:00:00 error: 4401
Вы уже предложили мне через сообщения использовать CheckLoadHistory() из этой статьи ( https://www.mql5.com/ru/code/1251 ) и разместить ее перед функцией CopyXXXX() в вашей библиотеке:
Но проблема осталась.
В файле checkhistory.mqh (строка 19) я заметил следующий комментарий, но я не понимаю, может ли это быть проблемой. Я попытался закомментировать его и снова протестировать программу, но ничего не вышло.
Есть ли способ исправить ошибку, не переходя на обновленную библиотеку DealingWithTimeV2.03.mqh , не переписывая весь код?
Является ли "Альтернативный вариант использования через входные переменные" единственным способом получить правильное время в тестере стратегий?
Привет
Я попытался изменить код, как показано ниже, и пока что он работает для меня. Обратите внимание, что я преобразовал класс с конструкторами и все методы являются частью класса. Класс должен быть вызван и инициализирован в классе вашего эксперта/стратегии.
CDealWithTime.OnTick() должен быть помещен в EA/Strategy OnTick()
Этот код автоматически рассчитывает DST для европейских и американских брокеров:
https://www.mql5.com/ru/code/27860
Приведенный выше код был использован в Forex Market Hours https://www.mql5.com/ru/code/27771 для расчета изменения времени перехода на летнее время.
Аналогичные функции можно построить для разных регионов мира.
Привет Амрали
Хороший и простой код в качестве альтернативы статье DealingWithTime v2.03. Я рассмотрю его для более детального изучения.
DealingWithTime.mqh v . 1.01.
Привет, Дэниел
DealingWithTime.mqh v . 1.01. Эта статья и ее код больше не работают из-за изменений в методах расчета MQL, как объяснил Карл в статье DealingWithTime.mqh v 2.03 https://www.mql5.com/ru/code/45287.
Вам не следует использовать ее вообще.