Questions des débutants MQL5 MT5 MetaTrader 5 - page 535
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vous devez donc spécifier une telle demande dès maintenant :) .
La situation est la suivante : s'il y a une barre dans le graphique, elle correspond à une cellule dans le tampon de l'indicateur. Tant que vous n'écrivez pas quelque chose dans cette cellule, elle stockera des déchets.
Lorsque vous divisez des entiers (int, long, datetime, etc.), le résultat est un entier, c'est-à-dire que le reste est éliminé. 00:00 aujourd'hui et 23:59:59 hier, la différence sera de 1 jour.
Premièrement, ce n'est pas le cas - c'est prouvé expérimentalement dans l'indicateur.
Deuxièmement, comment obtenir un 1 - montrez-moi mathématiquement, étant donné que nous calculons initialement en secondes.
Exactement de la même manière que la mise à zéro des types simples. En leur attribuant une valeur de 0. Une fois que les champs obligatoires ont reçu une valeur de 0, utilisez l'opération inverse StructToTime().
Remis à zéro :
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks:
Tout d'abord, ce n'est pas - prouvé expérimentalement dans l'indicateur.
Ne discutez pas des principes de base).
-Aleks:
Deuxièmement, comment obtenez-vous 1 - montrez-moi mathématiquement, étant donné que nous avons initialement le calcul en secondes.
Utilisez la structure de conversion, si elle est plus facile à comprendre.
Ne remettez pas en cause les principes de base)
Utilisez la conversion de structure si elle est plus facile à comprendre.
Ce qui est compris est ce qui a été traité. Je n'ai pas essayé votre code pour l'exécuter, mais je pense que vous l'avez fait vous-même, alors expliquez à mon inintelligent comment cela fonctionne :
86401/86400-86400/86400 est égal à 1, si par les règles des mathématiques 1.000012-1=0.000012 , alors que int doit être arrondi à un nombre entier, c'est-à-dire 0.
Ce qui est compris est ce qui a été traité. Je n'ai pas essayé d'exécuter votre code, mais je pense que vous l'avez fait vous-même, alors expliquez à mon inintelligence comment cela fonctionne :
86401/86400/86400 est égal à 1, si selon les règles des mathématiques 1.000012-1=0.000012 , et int doit être arrondi au nombre entier, c'est-à-dire 0.
mais faites-le)
Début du jour 00:00:00 est divisé par 86400 sans reste, le précédent est au moins 1 seconde de moins. Arrondi - le reste de la division est éliminé, pas l'expression entière.
86400/86400=1
86399/86400=0
et ensuite l'exécuter)
Le début du jour 00:00:00 est divisé par 86400 sans reste, le précédent étant inférieur d'au moins 1 seconde. Arrondi - le reste de la division est éliminé, pas l'expression entière.
86400/86400=1
86399/86400=0
Les gars ! Est-il possible d'afficher l'indicateur sur le graphique de manière programmatique ? Ou seulement à la main ?