[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 30

 

Chers membres du forum, aidez-nous à résoudre le problème de précision de l'indicateur Standart Deviation, si vous regardez la comparaison purement visuelle de deux valeurs adjacentes de l'indicateur, vous pouvez voir que la valeur actuelle est supérieure/inférieure à la précédente, mais si vous comparez ces deux valeurs dans les valeurs réelles par exemple dans la fenêtre de données, vous pouvez voir que les valeurs seront les mêmes.



 
Les valeurs à afficher dans l'étiquette de texte sont tronquées au 4e chiffre, ce qui ne garantit pas leur égalité réelle, le cinquième chiffre et les chiffres suivants étant différents.
 
evillive:
Les valeurs à afficher dans l'étiquette de texte sont tronquées au 4ème chiffre, cela ne garantit pas leur égalité réelle, le cinquième chiffre et les chiffres suivants sont différents.
Et pour obtenir le 5e caractère et les caractères suivants, il faut connaître plus précisément les valeurs de l'indicateur. J'ai essayé NormalizeDouble pour obtenir plus de précision mais rien ne fonctionne.
 
Alexandr24:
Pour obtenir 5 chiffres et plus, vous devez connaître les valeurs de l'indicateur avec plus de précision. J'ai essayé NormalizeDouble pour obtenir plus de précision, mais rien ne fonctionne.

Il est préférable d'utiliser DoubleToStr().
 
evillive:

Il est préférable d'utiliser DoubleToStr().
Oui, vous pouvez le faire, mais les valeurs apparaissent sous forme de chaîne de texte et vous ne pouvez pas travailler avec du texte, par exemple vous ne pouvez pas ajouter une valeur à une autre.
 

Je comprends que cette valeur est nécessaire pour le marqueur sur le graphique, et si le chiffre est reçu de l'indicateur standard, alors il est déjà converti en chiffres, il n'y a probablement rien à faire, sauf si vous implémentez l'algorithme de l'indicateur dans votre code.

Ou pour les calculs, vous pouvez essayer de reconvertir en Double, avec des chiffres plus élevés...

 
evillive:

Je comprends que cette valeur est nécessaire pour le marquage sur le graphique et si le nombre est reçu de l'indicateur standard, il sera converti en chiffres, probablement rien ne peut être fait sauf d'implémenter l'algorithme de l'indicateur dans le code.

Ou pour les calculs, vous pouvez essayer de reconvertir en Double, avec une capacité de chiffres accrue...

Le retour au double ne fonctionne pas lorsqu'il est arrondi à 4 chiffres. Merci pour votre aide.

UPD : J'ai supprimé la question, je pense avoir trouvé la solution, j'ai juste multiplié les valeurs de l'indicateur par 10, les mêmes 4 chiffres restent, mais la précision a augmenté.

 

1) aller dans la base de code, télécharger l'indicateur :https://www.mql5.com/ru/code/8022

2) Insérer IndicatorDigits(x) ; x = nombre de zéros après le point décimal (précision)

3) Jetez l'indicateur sur le graphique - admirez votre travail.

 
alsu:
Malheureusement, dans votre cas, le prix que vous avez en tête lorsque vous ouvrez l'ordre n'a aucune importance. Le fait est que le point d'ouverture est déterminé par le moment dans le temps, et non par le niveau de prix ; à ce moment, il y a les mêmes prix Bid et Ask et donc il ne diffère pas principalement de tous les autres ticks. Par conséquent, que vous ouvriez au moment de l'ouverture de la barre ou à tout autre moment, le résultat sera le même. Veuillez également noter que si l'heure d'ouverture de la barre est spécifiée à 01:00, cela ne signifie pas que le premier tick de la barre était précisément à 01:00:00. Ainsi, Open est juste une condition de la nouvelle coupure de barre pour faciliter la construction de graphiques.

Je vous remercie de votre réponse. Vous avez tout à fait raison, OPEN est le point d'arrêt d'un nouveau bar, mais ce point a un prix fixe. La différence fondamentale entre une entrée ouverte est que le prix ouvert sera le même sur tous les terminaux du même compte. En règle générale, la différence de vitesse terminale ne dépasse pas une seconde. Pendant ce temps, sur le terminal "rapide", la bougie peut s'ouvrir et se déplacer de n points. Dans ce cas, dans le terminal "lent", cette bougie apparaîtra un peu plus tard, mais avec le mouvement déjà formé. C'est-à-dire que l'ouverture et le prix actuel seront les mêmes que dans le terminal "rapide". Ainsi, si le script calcule l'ordre à partir du prix actuel, le prix d'entrée peut être différent sur différents terminaux. Sur un terminal rapide, il s'agit du prix Open (offre au moment de l'ouverture de la barre), sur un terminal lent, il s'agit du prix actuel (offre au moment présent). Par conséquent, ils peuvent être différents. Et si nous prenons le prix d'ouverture comme base, le script prendra immédiatement le prix nécessaire sur le terminal lent sans faire attention à l'offre actuelle. Par conséquent, nous aurons le même prix Open pour le calcul des ordres sur tous les terminaux.

 
Où puis-je trouver un EA qui place, supprime ou modifie un ordre, un TP ou un SL à un certain prix ?
Raison: