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
Ok, je vais attendre
Après plus de 20 heures, l'indicateur fonctionne correctement. Je ne sais pas quoi dire.
Rosh, Zoom avant/arrière, défilement vers la gauche/droite. Quelle plate-forme testez-vous sur 64/32 bit ?
Rosh, Zoom avant/arrière, défilement vers la gauche/droite. Quelle plate-forme testez-vous sur 64/32 bits ?
Je peux reproduire le problème général sur 32 bits. La seule façon dont le système d'exploitation semble être pertinent est la question de savoir pourquoi votre système 64 bits semble obtenir périodiquement de nouvelles données au début ou au milieu de son historique de barres, alors que votre système 32 bits (et le système 64 bits de RaptorUK) ne le font pas. Quoi qu'il en soit, vous semblez avoir l'intention de donner votre indicateur à d'autres personnes, et les modifications de l'historique des barres sont des problèmes que vous rencontrerez certainement dans la vie réelle, ne serait-ce qu'en raison des déconnexions de courtiers subies par vos utilisateurs, qui entraînent l'insertion de barres manquantes au milieu de l'historique lors de la reconnexion.
Comme j'ai déjà essayé de l'expliquer, on peut se demander si ce "bug" se trouve dans votre code ou dans MT4. Il y a une attente sur la façon dont les indicateurs doivent se comporter dans MT4, et votre indicateur ne se comporte pas de cette façon. Par exemple, lorsque vous créez un nouvel indicateur en utilisant MetaEditor, il insère pour vous la ligne "int counted_bars=IndicatorCounted() ;". Vous supprimez cette ligne et ignorez IndicatorCounted().
Je peux reproduire le problème général en utilisant l'indicateur suivant qui dessine simplement une ligne entre les 10 derniers sommets des barres lorsqu'il démarre :
Vous pouvez ensuite reproduire le même type de problème en faisant ce qui suit :
* Ouvrez un graphique pour n'importe quel symbole
* Ajouter l'indicateur au graphique
* Désactivez "Chart autoscroll" (juste pour faciliter les étapes suivantes ; pas parce que cela a un impact sur le problème).
* Allez au début du graphique, en appuyant sur Home.
* Appuyez sur Page Up pour forcer le téléchargement de données supplémentaires. (N.B. Il n'y a aucun problème à moins que des données supplémentaires soient effectivement ajoutées au graphique à ce stade).
* Allez à la fin du graphique en appuyant sur End. La ligne rouge entre les sommets ne sera pas positionnée. Elle aura été déplacée en arrière dans le temps.
(Tout ceci ne fait qu'étoffer ce que RaptorUK a déjà identifié).
OK, pouvez-vous confirmer que IndicatorCounted() retournera un nombre -ve, dans ce cas de barres manquantes / indicateurs corrompus ? Laissez-moi essayer de réinitialiser les tableaux d'indicateurs et de redessiner les mouvements à partir de la barre de retour.
OK, pouvez-vous confirmer que IndicatorCounted() retournera un nombre négatif, dans ce cas de barres manquantes / indicateurs corrompus ?
La documentation de IndicatorCounted()(https://docs.mql4.com/customind/IndicatorCounted) fournit un exemple de cette méthode, et il existe d'autres versions, comme https://www.mql5.com/en/forum/132447, qui visent à améliorer très légèrement les performances parce que le code standard de https://docs.mql4.com/customind/IndicatorCounted recalcule inutilement une barre qui est "propre".
L'ajout des contrôles IndicatorCounted() et la réinitialisation des indicateurs lorsque IndicatorCounted() renvoie la valeur 0, résout le problème de décalage des indicateurs qui est causé par l'insertion de barres historiques ou supplémentaires.
Cependant, il existe un autre problème de corruption des indicateurs, qui ne semble pas être causé par l'insertion de barres d'historique. L'exemple de code ci-joint permet de reproduire le problème, vous devez l'exécuter pendant plus de 10 heures, jusqu'à au moins deux réinitialisations des indicateurs, c'est-à-dire que IndicatorCounted() renvoie la valeur 0 (après le démarrage de l'indicateur).