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

 
Karputov Vladimir:

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 ?
 
Aleksey Lebedev:

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().

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));

Tout a fonctionné - merci !
 

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.

datetime today=D'2016.03.09 00:00:00';
datetime yesterday=D'2016.03.08 23:59:59';
Print("today=",86400*(today/86400)," value=",int(today));
Print("yesterday=",86400*(yesterday/86400)," value=",int(yesterday));
Print("разница в днях = ",int(today/86400-yesterday/86400));

Utilisez la structure de conversion, si elle est plus facile à comprendre.

 
Aleksey Lebedev:

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.

 
-Aleks-:

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

 
Aleksey Lebedev:

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

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.
 
Les gars ! Est-il possible d'afficher l'indicateur sur le graphique de manière programmatique ? Ou seulement à la main ?
 
Vladimir Tkach:
Les gars ! Est-il possible d'afficher l'indicateur sur le graphique de manière programmatique ? Ou seulement à la main ?
Vous pouvez le fairehttps://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
c'est dans mql5, et dans mql4 ?
Raison: