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.
Pourquoi n'est-il pas nul dans MT4 mais n'affiche pas l'indicateur sous cette barre ?
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.
Alexey Kozitsyn: 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().
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 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.
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
Je suis donc surpris que l'arrondi particulier se produise dans une expression - je pensais que c'était lorsqu'une variable se voyait attribuer une valeur que la valeur après la virgule était ignorée.
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 ?