Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 531

 
Karputov Vladimir:
Не согласен, ведь человек делает индикатор, а в индикаторе нужно работать с массивами из OnCalculate().
time[0] если нужно, и религия не позволяет использовать TimeCurrent().
 
Aleksey Lebedev:

как-то фсё запущено) Как-то так:

А как узнать, какой день на 163 баре текущего TF?
 
-Aleks-:
А как узнать, какой день на 163 баре текущего TF?
time[163]
Так в индикаторе Вы получите дату открытия бара с индексом 163.
 
-Aleks-:
А как узнать, какой день на 163 баре текущего TF?

Не совсем понял вопрос.

int DayN=(time[0]-time[163])/86400;

0 = сегодняшний

1 = вчерашний и т.д.


Print(time[163]) или Comment(time[163]) выведут дату/время в человеческом виде.


поправил.

 
Karputov Vladimir:
Так в индикаторе Вы получите дату открытия бара с индексом 163.

Провёл эксперимент, поставил 163 и получил строку

2016.03.07 18:46:29.062 Start_day GBPUSD,H1: Start day 2016.02.25 03:00:00

 А на самом деле должен был получить дату 2016.03.01 00:00:00 !

Видимо я плохо объясняю, что хочу получить, попробую ещё раз.

Мне необходимо произвести расчет на каждом графике текущего ТФ. Для расчета требуется знать дату верхнего ТФ (дни). Выше я приложил код - смысл в том, что б знать на каждом баре максимальную цену верхнего ТФ на момент открытия бара на текущем ТФ.

 
Aleksey Lebedev:

Не совсем понял вопрос.

0 = сегодняшний

1 = вчерашний и т.д.


Print(time[163]) или Comment(time[163]) выведут дату/время в человеческом виде.


поправил.

Мы получим секунды, которые требуется округлить - проблема в округлении.
[Удален]  
 

Да не могу я въехать, как это использовать.

Вот второе значение требуется "MqlDateTime&  dt_struct      // структура для принятия значений ", а как этим MqlDateTime пользоваться - не понимаю.

 
-Aleks-:
Мы получим секунды, которые требуется округлить - проблема в округлении.

дык

datetime Day00=86400*(time[n]/86400);//начало дня
и есть округление до начала дня. 86400=24*60*60
[Удален]  
-Aleks-:

Да не могу я въехать, как это использовать.

Вот второе значение требуется "MqlDateTime&  dt_struct      // структура для принятия значений ", а как этим MqlDateTime пользоваться - не понимаю.

Есть время. У времени есть такие параметры как: год, месяц, день, часы, минуты, секунды и т.д. Вызвав функцию TimeToStruct() Вы раскладываете время на эти составляющие. Далее, например, можно обнулить часы, минуты и секунды - получите начало дня.

MqlDateTime - это тип данных, такой же, как int, bool и т.д. Просто это составной тип, т.е. чтобы получить доступ к его полям (часам, минутам, секундам...) нужно использовать точку. Например: dt_struct.hour - значение часов. Про структуры подробнее https://www.mql5.com/ru/docs/basis/types/classes.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5