Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 532
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мы получим секунды, которые требуется округлить - проблема в округлении.
дык
и есть округление до начала дня. 86400=24*60*60Да не могу я въехать, как это использовать.
Вот второе значение требуется "MqlDateTime& dt_struct // структура для принятия значений ", а как этим MqlDateTime пользоваться - не понимаю.
Есть время. У времени есть такие параметры как: год, месяц, день, часы, минуты, секунды и т.д. Вызвав функцию TimeToStruct() Вы раскладываете время на эти составляющие. Далее, например, можно обнулить часы, минуты и секунды - получите начало дня.
MqlDateTime - это тип данных, такой же, как int, bool и т.д. Просто это составной тип, т.е. чтобы получить доступ к его полям (часам, минутам, секундам...) нужно использовать точку. Например: dt_struct.hour - значение часов. Про структуры подробнее https://www.mql5.com/ru/docs/basis/types/classes.
дык
и есть округление до начала дня. 86400=24*60*60Есть время. У времени есть такие параметры как: год, месяц, день, часы, минуты, секунды и т.д. Вызвав функцию TimeToStruct() Вы раскладываете время на эти составляющие. Далее, например, можно обнулить часы, минуты и секунды - получите начало дня.
MqlDateTime - это тип данных, такой же, как int, bool и т.д. Просто это составной тип, т.е. чтобы получить доступ к его полям (часам, минутам, секундам...) нужно использовать точку. Например: dt_struct.hour - значение часов. Про структуры подробнее https://www.mql5.com/ru/docs/basis/types/classes.
По Вашей формуле мы получим количество дней между текущем баром и отдаленным, но эти дни условны т.е. это может быть 9 часов текущего дня и 1 час позапрошлого дня , тогда разница в секундах составит 122400 , что равняется 1,42 дня - при округлении будет 1 день, а нужно что б было 2.
день потеряли, 23ч+24ч+9ч=2 дня 8ч... Эта формула нафих не надо, если требуецо:
Мне необходимо произвести расчет на каждом графике текущего ТФ. Для расчета требуется знать дату верхнего ТФ (дни). Выше я приложил код - смысл в том, что б знать на каждом баре максимальную цену верхнего ТФ на момент открытия бара на текущем ТФ.
А ви таки говорите - структуры.. :)
день потеряли, 23ч+24ч+9ч=2 дня 8ч... Эта формула нафих не надо, если требуецо:
Повторюсь:А ви таки говорите - структуры.. :)
Почему у Вас 23 часа - я ж написал 1 час , впрочем суть не меняется
24(позавчера - в час вчера)+24(вчера - в час сегодня)+8 ( после часа сегодня - минус час)=56/24=2,33 т.е. получилось два дня согласны?
Почему у Вас 23 часа - я ж написал 1 час , впрочем суть не меняется
24(позавчера - в час вчера)+24(вчера - в час сегодня)+8 ( после часа сегодня - минус час)=56/24=2,33 т.е. получилось два дня согласны?
23ч до начала вчерашнего дня+
24ч вчерашний+
9ч сегодня=
2дня 8ч=2,(33)дня
Правильно всё-таки как-то так:
Неважно, это не нужно)23ч до начала вчерашнего дня+
24ч вчерашний+
9ч сегодня=
2дня 8ч=2,(33)дня
Правильно всё-таки как-то так:
Неважно, это не нужно)А теперь представим, что не 9 часов сего дня, а 19
24(позавчера - в час вчера)+24(вчера - в час сегодня)+18 ( после часа сегодня - минус час)=66/24=2,75 т.е. получилось три дня согласны?
Как бы диапазон не изменился дневной, а расчет в течении дня даёт то 2, то 3 дня - в этом беда.
Вариант
int DayN=time[0]/86400-time[163]/86400;
Вариант так же не годится, если мы представим что текущий бар 1 час, а расчетный - 23 часа, в этом случае будет результатом вычисления ноль, а должен быть 1.
Будет 1, оба времени сначала округляются до целого дня, после вычитаются.