Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Блин, наврал.
Вот такой код я всегда использовал, для нахождения времени открытия дня.
Визуально похоже на то, что написал Ihor Herasko, но работает по другому и результат выдаёт правильный.
Доброе утро, Александр! Интересный момент обнаружил при использовании Вашего кода. Оформил его в виде скрипта и запустил на символе EURUSD с таймфреймом М1. Получил результат вывода на печать:
Дальше запускаю на том же самом символе, но уже с таймфреймом D1, а результат уже другой:
Честно говоря, не понял, почему так произошло.
С уважением, Владимир.
PeriodSeconds(PERIOD_H1) я взял для уменьшения объёма полученных тиков. Да и тема размещена там, где нет гарантий, что это касается мосбиржи. Так-что можно заменить (timeDay+PeriodSeconds(PERIOD_H1))*1000 даже на TimeCurrent()*1000
О какой универсальности вы говорите?
Хочется, чтоб один раз написал, а работало оно везде, хоть на форексе, хоть на Мосбирже, хоть на CME и не зависимо от перехода на зимнее/летнее время :)
Если в Вашем коде вместо PERIOD_CURRENCY использовать PERIOD_D1, то вот тогда время совпадает на всех таймфреймах и равно 00:00:00. Хотя, время, когда появился первый тик по текущему символу, было 02:00:00. Вот такая ситуация.
С уважением, Владимир.
Доброе утро, Александр! Интересный момент обнаружил при использовании Вашего кода. Оформил его в виде скрипта и запустил на символе EURUSD с таймфреймом М1. Получил результат вывода на печать:
Дальше запускаю на том же самом символе, но уже с таймфреймом D1, а результат уже другой:
Честно говоря, не понял, почему так произошло.
С уважением, Владимир.
Потому, что : справка - "время открытия баров должны соответствовать таймфрейму M1". А код берёт значение времени открытия бара. На дневке не может быть бара с часами и минутами, только 00:00
Вот поэтому код от Alexey Viktorov будет корректно работать на всех таймфреймах, но не на всех торговых площадках.
А мой код корректен на всех торговых площадках, но не на всех таймфреймах )))
Но если исправить на
То вполне корректно будет на разных таймах.
Потому, что графики строятся кратно минуте. А код берёт значение времени открытия свечи.
Вот поэтому код от Alexey Viktorov будет корректно работать на всех таймфреймах, но не на всех торговых площадках.
А мой код корректен на всех торговых площадках, но не на всех таймфреймах )))
Но если исправить на
То вполне корректно будет на разных таймах.
Спасибо. Только что, хотел предложить решение с PERIOD_M1, но Вы меня уже опередили. :)
С уважением, Владимир.
Хочется, чтоб один раз написал, а работало оно везде, хоть на форексе, хоть на Мосбирже, хоть на CME и не зависимо от перехода на зимнее/летнее время :)
От перехода на зимнее\летнее время и так ничего не зависит. А вот на форексе или мосбирже зависит от типа тиков. Так-что если есть огромное желание скрестить топор и метлу, то можете поставить соответствующую проверку и от этого запрашивать какие тики считать.
Бурная дискусия образовалась :) Всем привет и спасибо за комментарии! Все верно: основная проблема в том, что время открытия бара кратно таймфрейму. Если на графике время открытия дневного бара 00:00:00, то по факту это совершенно не означает, что рынок открылся в это же время. При попытке получения котировок первого часа по времени открытия дневного бара система возвращает данные последнего бара предыдущего дня, потому что бара с запрашиваемым временем открытия по факту не существует. Это описано в документации:
При запросе данных по начальной дате и количеству требуемых элементов возвращаются только данные, дата которых меньше (раньше) или равна указанной. При этом интервал задается и учитывается с точностью до секунды. То есть дата открытия любого бара, для которого возвращается значение (объем, спред, значение в индикаторном буфере, цена Open, High, Low, Close или время открытия Time), всегда равна или меньше указанной.
https://docs.mql4.com/ru/series/copytime
Поэтому было решено написать функцию. Для определения фактического времени открытия рынка (в данном случае используется первый минутный бар в сутках) мы перебираем минутные бары с 23 часов предыдущего дня до 4 часов следующего дня (для надежности :)) и ищем первый бар в новом дне. Может кому пригодится:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Узнать время первого часового бара дня
multiwins, 2023.02.14 22:13
Бурная дискусия образовалась :) Всем привет и спасибо за комментарии! Все верно: основная проблема в том, что время открытия бара кратно таймфрейму. Если на графике время открытия дневного бара 00:00:00, то по факту это совершенно не означает, что рынок открылся в это же время. При попытке получения котировок первого часа по времени открытия дневного бара система возвращает данные последнего бара предыдущего дня, потому что бара с запрашиваемым временем открытия по факту не существует. Это описано в документации:
Поэтому было решено написать функцию. Для определения фактического времени открытия рынка (в данном случае используется первый минутный бар в сутках) мы перебираем минутные бары с 23 часов предыдущего дня до 4 часов следующего дня (для надежности :)) и ищем первый бар в новом дне. Может кому пригодится:
Что за глупость? У вас входящая переменная типа datetime, а потом вы её проверяете со строкой "0"
Дальше даже смотреть нет желания. Тоже чушь несусветная… Если вам надо получить время с точностью до минуты, то проще так
Стесняюсь спросить, а зачем копировать 10 значений, если использоваться будет только ОДНО??? И зачем кувыркать массивы с ног на голову?