Erreurs, bugs, questions - page 1395

 
Ilya Malev:

Peu importe la valeur vide ou le fait qu'il reste des valeurs aléatoires au début du graphique. Ce qui est important, c'est qu'il y a des valeurs de 0 à -5 dans la mémoire tampon1 qui ne sont pas affichées sur le graphique puisqu'il s'agit de DRAW_NONE et que la valeur d'échelle minimale de 0 est définie.

Dans cette situation, MT4 met correctement à l'échelle le graphique de 0 à la valeur maximale de la mémoire tampon dans la fenêtre, tandis que MT5 met à l'échelle du minimum (-5, pas 0) au maximum comme 0,0605 et ajoute quelque chose comme 10% au-dessus, ce qui casse complètement l'échelle.

Pas du tout. Une valeur vide n'est pas nulle. Ça peut être n'importe quoi et n'importe qui.
 
Ilya Malev:

La valeur vide n'a pas d'importance, ni le fait qu'il reste des valeurs aléatoires au début du graphique. Ce qui est important, c'est qu'il y a des valeurs de 0 à -5 dans la mémoire tampon2 qui ne sont pas affichées sur le graphique car il s'agit de DRAW_NONE et la valeur d'échelle minimale de 0 est définie.

Dans cette situation, MT4 met correctement à l'échelle le graphique de 0 à la valeur maximale de la mémoire tampon dans la fenêtre, tandis que MT5 met à l'échelle du minimum (-5, pas 0) au maximum comme 0,0605 et ajoute quelque chose comme 10% au-dessus, ce qui casse complètement l'échelle.

D'ailleurs, pourquoi mettre à l'échelle le graphique par des valeurs tampons qui ne sont pas affichées ?
 
Karputov Vladimir:
Pas du tout. Une valeur vide n'est pas nulle. Ça peut être n'importe quoi et n'importe qui.

Essayez de changer la ligne en"buffer2[i]=-MathRand()%5*Point(); " Et vous verrez comment l'échelle changera dans l'exemple. Cela prouve que, dans ce cas, le fait de remplir les premiers éléments de l'historique n'a aucun effet sur la mise à l'échelle. Parce que si tu multiplies par Point, ça s'aligne.

 
Anatoli Kazharski:
Au fait, pourquoi devrions-nous mettre à l'échelle le graphique en fonction des valeurs du tampon qui n'est pas affiché ?

Bonne question ! C'est exactement ce que je demandais. Pourquoi MT ferait-elle une telle mise à l'échelle si le tampon est déclaré comme DRAW_NONE ?

C'était aussi le cas dans MT4, mais seulement si les valeurs de ce tampon étaient dans la plage d'affichage limitée par indicator_maximum et minimim. Et dans MT5, les valeurs situées en dehors des contraintes sont incluses dans la formule de mise à l'échelle.

 
Ilya Malev:

Essayez de changer la ligne en"buffer2[i]=-MathRand()%5*Point();" et vous verrez comment l'échelle changera dans cet exemple. Cela prouve que, dans ce cas, le fait de remplir les premiers éléments de l'historique n'a aucun effet sur la mise à l'échelle. Parce que si tu multiplies par Point, ça s'aligne.

Votre exemple est tordu et vous ne voulez pas le réparer. Je le vérifierai quand vous le corrigerez.
 
Ilya Malev:
Bonne question ! C'est exactement ce que je demandais.

C'est dans votre code, n'est-ce pas ?

buffer2[i]=-MathRand()%5;

Ce qui est dit est ce que vous obtenez. Quel est l'intérêt de faire cela pour un tampon qui n'est pas affiché. C'est ce que je demandais. ))

 
Anatoli Kazharski:

Ce qui est écrit est ce que nous obtenons. Quel est l'intérêt de faire cela pour un tampon qui n'est pas affiché. C'est ce que je demandais. ))

Oui, donc quand le terminal le fait, c'est OK (il met à l'échelle les valeurs avec DRAW_NONE et est même inférieur au seuil d'affichage de indicator_minimum - au moins dans MT4 c'était adéquat), mais quand un utilisateur met ses propres valeurs arbitraires dans le tampon sans affichage (DRAW_NONE), ce n'est pas OK (comme garder et ne pas laisser, qui se soucie de savoir pourquoi l'utilisateur en a besoin ?)

La raison est triviale - ces attributs affichent des attributs numériques importants des barres du graphique, dont le trader a besoin pour l'analyse. C'est-à-dire qu'ils sont utilisés par le trader et utilisés par les conseillers experts.

 
Ilya Malev:

Oui, c'est à dire, quand le terminal le fait, c'est OK (mise à l'échelle par les valeurs avec DRAW_NONE, et même en dessous du seuil indicateur_minimum - au moins c'était adéquat dans MT4), mais quand l'utilisateur met ses valeurs arbitraires dans le buffer sans affichage (DRAW_NONE), ce n'est pas OK (comme garder et ne pas laisser, qui se soucie de savoir pourquoi l'utilisateur en a besoin ?)

La raison est triviale - ces attributs affichent des attributs numériques importants des barres dans la fenêtre de données, dont le trader a besoin pour l'analyse.

Eh bien, je n'ai pas parlé de normal ou d'anormal. Je me suis juste demandé pourquoi le faire. )

Je pense que les tampons qui ne sont pas affichés (DRAW_NONE) ne devraient pas être impliqués dans le calcul de l'échelle.

Vous pouvez essayer de signaler cette erreur à Servicedesk et attendre une réponse.

 
Anatoli Kazharski:

Eh bien, je ne parlais pas de normal ou d'anormal. Je me demandais juste pourquoi tu ferais une telle chose. )

Je pense que les tampons qui ne sont pas affichés (DRAW_NONE) ne devraient pas être impliqués dans le calcul de l'échelle.

Dans l'exemple, j'ai créé MathRand juste pour montrer comment l'échelle fonctionne. Dans l'original, j'avais le calcul des niveaux numériques en utilisant la méthodologie d'un auteur de trader. Au début, nous voulions les faire de 1 à 5, mais même MT4 n'a pas réussi à obtenir l'échelle adéquate, même avec de telles valeurs dans le tampon avec DRAW_NONE. Après les avoir rendus négatifs et avoir fixé le minimum à 0, le problème était résolu. Lors du portage de l'indicateur sur MT5, il est apparu que cette solution ne fonctionnait pas non plus. J'ai dû multiplier par Point comme l'a dit Voldemar.
 
Ilya Malev:
J'ai fait MathRand dans l'exemple juste pour montrer comment l'échelle fonctionne. Dans l'original, j'avais le calcul des niveaux numériques en utilisant la méthodologie d'un auteur de trader. Au début, nous voulions les faire de 1 à 5, mais même MT4 n'a pas réussi à obtenir l'échelle adéquate, même avec de telles valeurs dans le tampon avec DRAW_NONE. Après les avoir rendus négatifs et avoir fixé le minimum à 0, le problème était résolu. Lors du portage de l'indicateur sur MT5, il est apparu que cette solution ne fonctionnait pas non plus. J'ai dû multiplier par Point comme l'a dit Voldemar.

Au fait, j'ai complètement oublié. ))

Essayez comme ça :

   SetIndexBuffer(0,buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer2,INDICATOR_CALCULATIONS);

INDICATEUR_CALCULS >>>

Raison: