Ошибки, баги, вопросы - страница 2177

 
Konstantin Nikitin:

StringToTime

Премного благодарен!
 
Maxim Khrolenko:
Премного благодарен!

Ужасно медленно и не оптимально работать с преобразованием строковых переменных.

Вам ответили же выше:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Viktorov, 2018.03.30 19:30

Заполнить структуру MqlDateTime и из неё получить полноценную дату и время.


 
Maxim Khrolenko:
Премного благодарен!

Лёгких путей мы не ищем. Так держать...

 
Alexey Viktorov:

Лёгких путей мы не ищем. Так держать...

Напиши ему примерчик маленький ;)

 
Alexey Viktorov:

Заполнить структуру MqlDateTime и из неё получить полноценную дату и время.

Интересно посмотреть как это работает в коде

 
Artyom Trishkin:

Напиши ему примерчик маленький ;)

Сказано было

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Maxim Khrolenko, 2018.03.30 18:49

Не могу найти ответа на вопрос, как на основании 6 переменных типа int (год, месяц, день, час, минута) в переменную типа datetime записать значение времени, соответствующее заданным параметрам? Потом мне надо найти индекс свечи, которая открылась в это время, но для меня это не проблема. Если у кого есть линк, где можно найти ответ, киньте пжлст, я там сам разберусь.

MqlDateTime dateTime;

dateTime.year = 2018;
dateTime.mon = 3;
dateTime.day = 30;
dateTime.hour = 21;
dateTime.min = 15;

datetime _Time = StructToTime(dateTime);
 
Alexey Viktorov:

Сказано было


А какой при этом день недели получается? Проверял? Просто интересно - высчитывает он его сам во время преобразования, или нет.

Даже вот эти два: day_of_week и day_of_year

 
Artyom Trishkin:

А какой при этом день недели получается? Проверял? Просто интересно - высчитывает он его сам во время преобразования, или нет.

Даже вот эти два: day_of_week и day_of_year

Если потом вернуть обратно в структуру

  TimeToStruct(_Time, dateTime);

то всё будет нормально показывать.

day_of_week  = 5

day_of_year  = 88

 
Artyom Trishkin:

А какой при этом день недели получается? Проверял? Просто интересно - высчитывает он его сам во время преобразования, или нет.

Даже вот эти два: day_of_week и day_of_year


void OnStart()
  {
//---
   MqlDateTime timeDate, time;
   
   timeDate.year=2018;
   timeDate.day_of_year=32;
   
   datetime date1=StructToTime(timeDate);
   Print("День года - ",timeDate.day_of_year);
   
   time.year=2018;
   time.mon=2;
   time.day=1;
   time.hour=0;
   time.min=0;
   
   datetime date2=StructToTime(time);
   Print("День года - ",time.day_of_year);
  }

День года - 879007969
День года - 32



С заполнением дня года вариант не проходит (

 


Очень странная пауза в 22 секунды. Кто может объяснить?

//+------------------------------------------------------------------+
//|                                                      BagBars.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+

void OnStart()
  {
   datetime Arr[];
   if(CopyTime(_Symbol,PERIOD_H4,0,1,Arr)<0) Print("Ошибка");
   Print("1 "+TimeToString(Arr[0])+" CurrentTime = "+TimeToString(TimeCurrent()));
   
   int Res=::Bars(_Symbol,PERIOD_W1,Arr[0],TimeCurrent());  // выполнение происходит 22 секунды!!!
   
   Print("2 CurrentTime = "+TimeToString(TimeCurrent()));
  }
//+------------------------------------------------------------------+

результат:

2018.03.30 16:37:16.941 BagBars (EURUSD,W1)     1 2018.03.30 20:00 CurrentTime = 2018.03.30 23:37
2018.03.30 16:37:38.862 BagBars (EURUSD,W1)     2 CurrentTime = 2018.03.30 23:37
Причина обращения: