Discussion de l'article "Le MQL5 Cookbook : Commandes de la sous-fenêtre d'indicateur - Boutons" - page 8
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
MT5 dispose d'une mise à jour asynchrone des propriétés du graphique. En d'autres termes, le fait que nous ayons défini une propriété ne signifie pas que le terminal l'ait immédiatement prise en compte. La fonction ChartRedraw() est utilisée pour que toutes les propriétés soient relues par le terminal. Vous pouvez également utiliser les fonctions ChartGet... ObjectGet ; dans ce cas, les propriétés seront également relues.
Je n'ai trouvé cette information nulle part. Je suis tombé dessus, j'ai trouvé la solution, maintenant je vais savoir.
Qu'est-ce que c'est ? Ici, au début de la section Opérations avec les graphiques:
Fonctions pour travailler avec les graphiques. Toutes les opérations avec les graphiques sont applicables uniquement dans les Expert Advisors et les scripts.
Les fonctions qui définissent les propriétés d'un graphique sont en fait utilisées pour envoyer des commandes afin de le modifier. Si ces fonctions sont exécutées avec succès, la commande est incluse dans la file d'attente des événements généraux du graphique. La modification d'un graphique s'effectue lors du traitement de la file d'attente d'événements du graphique en question.
C'est pourquoi il ne faut pas s'attendre à une mise à jour visuelle immédiate du graphique après avoir appelé ces fonctions. En général, la mise à jour du graphique est effectuée automatiquement par le terminal en fonction des événements de changement - arrivée d'une nouvelle cotation, changement de la taille de la fenêtre du graphique, etc. Pour forcer la mise à jour de l'apparence du graphique, utilisez la commande ChartRedraw() pour redessiner le graphique.
Je n'ai trouvé cette information nulle part. Je suis tombé dessus, j'ai trouvé la solution, maintenant je vais savoir.
Qu'est-ce que c'est exactement ? Ici, au début de la section Opérations avec graphiques:
Je n'ai pas dit qu'il n'y en avait pas, c'est juste que je ne l'ai pas rencontré (ou que j'ai oublié). Merci de votre compréhension.
Qu'en est-il de ma suggestion de générer un événement CHART_CHANGE lorsque l'on modifie les propriétés du graphique, telles que le drapeau de suivi de l'événement de la souris ? Peut-être pourriez-vous faire cela ?
Bien sûr, parce que cette information n'est disponible nulle part (il s'avère qu'elle l'est, voir ci-dessus :))). J'ai moi-même été tourmenté par ce problème, jusqu'à ce que je me tourne vers le service d'assistance. On m'a dit que les changements de propriétés des objets sur le graphique se produisent de manière asynchrone. Et à en juger par votre exemple, il s'agit des propriétés du graphique lui-même.
Pour en savoir plus, consultez la section Objets graphiques:
Un groupe de fonctions conçues pour travailler avec des objets graphiques liés à un graphique donné.
Les fonctions qui spécifient les propriétés des objets graphiques, ainsi que les opérations de création d'objets ObjectCreate() et de déplacement d'objets ObjectMove() sur la carte sont en fait utilisées pour envoyer des commandes à la carte. Si ces fonctions sont exécutées avec succès, la commande est incluse dans la file d'attente des événements généraux de la carte. La modification visuelle des propriétés des objets graphiques est effectuée lors du traitement de la file d'attente d'événements d'un graphique donné.
C'est pourquoi il ne faut pas s'attendre à une mise à jour visuelle immédiate des objets graphiques après avoir appelé ces fonctions. En général, la mise à jour des objets graphiques sur le graphique est effectuée automatiquement par le terminal en fonction des événements de changement - arrivée d'une nouvelle cotation, changement de la taille de la fenêtre du graphique, etc. Pour une mise à jour forcée des objets graphiques, utilisez la commande ChartRedraw() pour redessiner le graphique.
Plus dans la section Objets graphiques:
C'est clair et familier avec les objets, mais je m'attendais à quelque chose de différent avec les propriétés du graphique.
Ne dois-je pas répéter ma suggestion ? Ou dois-je la soumettre à un service d'assistance ?
Un nouvel article MQL5 Bylaw Manual : Indicator Subwindow Controls - Buttons a été publié :
Auteur : Anatoli Kazharsk
Très bon tutoriel, j'espère vraiment que vous publierez un peu plus sur ce sujet, merci beaucoup !
Anatoli,
Je tiens à vous remercier pour votre contribution à la communauté MQL5. Vos exemples m'ont fait avancer de plusieurs mois dans le développement de mon propre code. Encore une fois, merci beaucoup.
J'ai besoin d'utiliser cet "indicateur" pour les boutons Open Long, Open Short, Close All et Set Trailing Stop. Mon problème est que j'ai besoin d'interagir avec mon EA pour pouvoir
1) accéder à ces fonctions dans l'EA, et
2) obtenir des recommandations de l'EA en faisant clignoter le bouton "Open Long" lorsque le pSAR, le CCI, le MACD ou d'autres indicateurs se déclenchent.
Voici donc ma question : Comment puis-je faire en sorte que l'EA communique avec les boutons des indicateurs, et que les boutons des indicateurs interfacent avec l'EA ?
Je vous remercie d'avance,
CipherPips
Merci !
Je pense que c'est la version que vous préférez : Interfaces graphiques I : Préparation de la structure de la bibliothèque (Chapitre 1)
Suite de cette série, avec de nombreux exemples détaillés.