Erreurs, bugs, questions - page 2177

 
Maxim Khrolenko:
Merci beaucoup !

Terriblement lent et pas optimal pour gérer les conversions de variables de type chaîne.

Vous avez la réponse ci-dessus :

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

Alexey Viktorov, 2018.03.30 19:30

Remplir la structure MqlDateTime et obtenir la date et l'heure complètes à partir de celle-ci.


 
Maxim Khrolenko:
Merci beaucoup !

Nous ne cherchons pas la facilité. Bien joué...

 
Alexey Viktorov:

Nous ne cherchons pas à trouver une issue facile. Bien joué...

Donnez-lui un petit exemple ;)

 
Alexey Viktorov:

Remplissez la structure MqlDateTime et récupérez la date et l'heure complètes.

Intéressant de voir comment cela fonctionne dans le code

 
Artyom Trishkin:

Donnez-lui un petit exemple ;)

Il a été dit

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

Maxim Khrolenko, 2018.03.30 18:49

Je ne trouve pas de réponse à la question suivante : comment écrire une valeur temporelle correspondant aux paramètres donnés dans une variable de type datetime à partir de 6 variables de type int (année, mois, jour, heure, minute) ? Je dois alors trouver l'indice de la bougie qui s'est ouverte à ce moment-là, mais ce n'est pas un problème pour moi. Si quelqu'un a un lien où trouver la réponse, s'il vous plaît, je me débrouillerai tout seul.

MqlDateTime dateTime;

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

datetime _Time = StructToTime(dateTime);
 
Alexey Viktorov:

Il a été dit.


Quel jour de la semaine cela fait-il ? Avez-vous vérifié ? Je me demande juste s'il le calcule lui-même pendant la conversion ou non.

Même ces deux-là : jour_de_la_semaine et jour_de_l'année

 
Artyom Trishkin:

Quel jour de la semaine sommes-nous ? Avez-vous vérifié ? Je me demande simplement s'il le calcule lui-même pendant la conversion ou non.

Même ces deux-là : day_of_week et day_of_year.

Si vous le remettez dans la structure après coup.

  TimeToStruct(_Time, dateTime);

ça va bien se passer.

jour_de_semaine = 5

jour_de_l'année = 88

 
Artyom Trishkin:

Quel jour de la semaine sommes-nous ? Avez-vous vérifié ? Je suis juste curieux de savoir s'il le calcule lui-même pendant la conversion ou non.

Même ces deux-là : jour_de_la_semaine et jour_de_l'année


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



Cela ne fonctionne pas lorsque le jour_de_l'année est renseigné (

 


Une pause très étrange de 22 secondes. Qui peut l'expliquer ?

//+------------------------------------------------------------------+
//|                                                      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()));
  }
//+------------------------------------------------------------------+

résultat :

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
 
Alexey Viktorov:

Si vous le remettez ensuite dans la structure

il s'affichera bien.

jour_de_semaine = 5

jour_de_l'année = 88

Je vois. Merci de vérifier - je suis moi-même loin de l'ordinateur.