Questions des débutants MQL5 MT5 MetaTrader 5 - page 141

 
forexman77:

Merci beaucoup ! Ça marche.

Expliquez la logique de mql5. Dans mql4, int Hour() est utilisé pour déterminer le temps en heures. Dans mql5, il n'y a pas de telle constante, d'après ce que j'ai compris.

Comment le programme reconnaît-il que nous demandons le temps en heures ? Je suppose que c'est à partir deMqlDateTime?

Pour ajouter l'heure actuelle en minutes à l'heure actuelle en heures, c'est-à-dire pour connaître l'heure actuelle en minutes, la construction serait la suivante

1. Oui

2. Bien.

 

Deuxième jour de remaniement de l'EA de mql4 à mql5.

1. Je dois trouver l'heure d'ouverture de la barre quotidienne en secondes à partir du 01.01.1970. J'ai trouvé la fonction sur le forum :

//--- переменные для указания параметров функции
int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(tp[0]);

Je ne suis pas sûr que la fonction trouve l'heure de la dernière ou de la première mesure.

L'heure est affichée comme le début de la journée de négociation, sous forme de date et d'heure.

J'ai trouvé la fonction StringToTime; elle semble faire ce dont j'ai besoin mais j'ai essayé différentes combinaisons et maintenant je me sens comme un chimpanzé qui ne peut pas comprendre quel bouton appuyer pour ouvrir la porte de la pomme.

3. Je n'ai pas les fonctions iBarShift, iLow, iLowest dans mql5. Pourriez-vous m'indiquer comment trouver le minimum quotidien pour une certaine période de temps ou quelles fonctions demql5 doivent être utilisées pour résoudre ce problème ?

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
forexman77:

Deuxième jour de remaniement de l'EA de mql4 à mql5.

1. Je dois trouver l'heure d'ouverture de la barre quotidienne en secondes à partir du 01.01.1970. J'ai trouvé la fonction sur le forum :

2. J'ai trouvé la fonction StringToTime et elle semble faire ce dont j'ai besoin. Mais j'ai essayé différentes combinaisons et maintenant je me sens comme un chimpanzé qui ne sait pas sur quel bouton appuyer pour ouvrir la porte de la pomme.

Je n'ai pas de fonctions iBarShift, iLow, iLowest dans mql5. Pouvez-vous me dire comment trouver le minimum sur une certaine période de temps chaque jour, ou quelles fonctions demql5 je dois utiliser pour résoudre ce problème ?

1,2. Veuillez lire ici.

3. lire ici.

 
DC2008:

1,2. Lire ici.

3. lisez ici.

Sur la deuxième question. Relisez tout ce qui concerne les dates. "Le type datetime est destiné à stocker la date et l'heure sous la forme du nombre de secondes écoulées depuis le 01 janvier 1970."

Pourquoi alors lors de l'appel de l'alerte il est dit : 2013.10.02 00:00:00, pas le nombre de secondes.

 
forexman77:

Sur la deuxième question. Relisez tout ce qui concerne l'heure du jour. "Le type datetime est destiné à stocker la date et l'heure sous la forme du nombre de secondes écoulées depuis le 01 janvier 1970."

Pourquoi alors lorsque l'alerte est appelée, elle affiche : 2013.10.02 00:00:00 et non le nombre de secondes.

Maintenant, lisez ici. Pour l'afficher dans l'alerte, vous devez convertir le type datetime en type int.

 
DC2008:

Maintenant, lisez ici. Pour l'affichage dans l'alerte, vous devez convertir le type datetime en type int.

J'ai fait une construction comme celle-ci :

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
int st=tp[0];
Alert("st=",st);

Je l'ai comparé avec metatrader 4 et j'ai obtenu le même chiffre.

Mais le message est jaune lors de la compilation de mql5 :

perte éventuelle de données due à la conversion de type

J'ai essayé de faire comme ça :

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(IntegerToString(tp[0]));
Aucune erreur. Mais je ne sais pas où attacherIntegerToString pour obtenir la valeur sans alerte, car elle sera utilisée par Expert Advisor pour les calculs. Seulement, je ne comprends pas qu'il s'agira d'une valeur de type chaîne, c'est-à-dire qu'elle pourra être utilisée comme comparaison avec un autre nombre ?
 
forexman77:

J'ai fait une construction comme celle-ci :

Je l'ai comparé à metatrader 4, il s'avère que le nombre est le même.

Sauf que le message sort en jaune lors de la compilation de mql5 :

perte éventuelle de données due à la conversion de type

C'est plus simple que ça !

//--- вывод результата
Alert("st=",(int)tp[0]);
 

Pouvez-vous me dire comment créer un signal si j'ai déjà été abonné à un autre ?

C'est-à-dire que je me suis déjà désabonné. Est-ce vraiment impossible ?

J'ai fait 100% en moins de 2 semaines et je ne peux partager avec personne(

 
c'est aussi une question intéressante
 
DC2008:

C'est plus simple que ça !

Pourtant, je vais avoir besoin de la variable "st" non seulement dans Alert, mais aussi pour les calculs, et l'avertissement "possible data loss due to type conversion" apparaît lors de la compilation.

Je suppose que c'est parce que j'obtiens un nombre à 10 chiffres, alors que la valeur maximale en int est 2 147 483 647, j'obtiens actuellement 1 380 758 400. Peut-être est-il judicieux d'utiliser une longue durée et l'EA consommera probablement beaucoup de ressources dans cette partie ?

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
Общие функции / Alert - Документация по MQL5