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
C'est étrange. J'ai lu quelque part dans l'aide que si l'indicateur est déjà en cours d'exécution, aucune copie n'est créée. Je ne le comprends pas.
J'ai dû mal comprendre quelque chose. J'ai vérifié toutes ces hypothèses, j'ai fait un indicateur avec deux buffers, l'un est rempli depuis OnCalculate() et l'autre depuis OnTimer(), script, Expert Advisor... J'ai utilisé iCustom() pour imprimer la valeur du tampon rempli dans OnCalculate() et la valeur vide est déduite de OnTimer(). En même temps, l'indicateur est dans le graphique où je place le script ou l'EA.
Conclusion : quand on appelle l'indicateur par iCustom(), l'événement OnTimer() n'est pas exécuté dans l'indicateur.
C'est peut-être la raison pour laquelle il est écrit dans la documentation
La fonction OnTimer() est appelée lorsqu'un événement se produit Timer, qui est généré par le timer du système uniquement pour les Expert Advisors et les indicateurs - vous ne pouvez pas l'utiliser dans les scripts.
Et il ne mentionne en aucun cas les indicateurs.
Apparemment, il existe des fonctionnalités utiles non documentées dans mql, ainsi que des conséquences non documentées...
Un indicateur est placé sur le graphique. Il est redessiné par les événements Timer, ChartEvent et Calculate.
J'ai besoin d'un script pour lire les valeurs actuelles de ses tampons d'indicateurs(INDICATOR_DATA) qui peuvent être vus par CTRL+D. Est-il possible de faire cela dans MT4 ?
Lit et écrit et ne nécessite pas de DLL.
Eh bien, où est l'exemple ?
Malheureusement, dans ce cas
ne va pas aider.
Où se trouve l'indicateur ?
Pourquoi ça n'aide pas ?
Sujet :
Étrange. J'ai lu quelque part dans l'aide que si l'indicateur est déjà en cours d'exécution, une copie n'est pas créée. Peut-être que je rate quelque chose.
J'ai récemment mis en ligne un indicateur, qui ne fait qu'afficher une chaîne de texte. Et en l'appelant par iCustom, les lignes de l'indicateur sur le graphique et iCustom interféraient les unes avec les autres, j'ai dû faire une seule sortie programmatiquement.
Peut-être qu'une copie du code n'est pas créée dans la mémoire, mais le recalcul se fait avec ses paramètres.
https://www.mql5.com/ru/code/14737/83151#!tab=code
Sujet :
J'ai récemment mis en ligne un indicateur, qui ne fait qu'afficher une chaîne de texte. Et en l'appelant par iCustom, les lignes de l'indicateur sur le graphique et iCustom interféraient les unes avec les autres, j'ai dû faire une seule sortie programmatiquement.
Peut-être, une copie du code n'est pas créée dans la mémoire, mais le recalcul va avec ses paramètresCopy
https://www.mql5.com/ru/code/14737/83151#!tab=code
La copie de code ne peut pas ne pas être créée, car il s'agit d'une charge dynamique.
Affirmation verbale, ou êtes-vous un développeur MQ ? :))
Bien que je le pense moi-même, par analogie avec les DLL, où le code du programme est dans une instance, et les instances de données sont créées pour les clients.
En bref, le point pratique est que s'il y a un index sur un graphique, iCustom ne prend pas les données de celui-ci, mais d'une instance créée séparément.