L'Expert Advisor Test_ChartEvent.mq4 est un exemple parfait pour illustrer les différents types d'événements ChartEvent : événements liés aux touches du clavier, clics et mouvements de souris, ainsi que des événements personnalisés. Vous pouvez appuyer sur la touche 'H' pour obtenir de l’aide et sur la touche 'M' pour entrer en mode MOUSE_MOVE.
Ce code source fonctionne aussi bien sur MetaTrader 4 que sur MetaTrader 5.
Prototype de Fonction
- bool Obj_Create()
- bool Obj_Delete()
- bool Obj_Move(int hSens,int vSens) - déplace un objet.
- void Print_Info() - affiche des informations sur les objets.
- int MouseMove(int aXX,int aYY,string sState) - gère l'événement de mouvement de la souris.
Variables Globales
- int gChartNo=0
- int gSubWinNo=0
- string gsObj_Name_selected="" - le nom de l'objet actuellement sélectionné.
Événements Personnalisés
Trois types d'événements personnalisés sont définis :
- #define cMyEvent_1 0
- #define cMyEvent_2 1
- #define cMyEvent_3_broadcast 2
Fonction OnTimer()
Cette fonction crée les événements ChartEvent personnalisés de manière périodique. Elle génère aléatoirement ces trois événements personnalisés (cMyEvent_1, cMyEvent_2, et cMyEvent_3_broadcast). En particulier, l'événement cMyEvent_3_broadcast est généré pour toutes les fenêtres de graphique ouvertes.
Exemple de Classe
La classe CObjectMan est créée pour gérer la fonctionnalité des objets sur un graphique. Deux instances (variables) de cette classe sont déclarées : gObjectMan1 et gObjectMan2.
Les noms des objets graphiques liés à ces deux instances sont respectivement : "Bouton Vert" et "Bouton Jaune".
Traitement des Événements
void OnChartEvent() :
Les événements CHARTEVENT_KEYDOWN :
- 4 touches directionnelles (flèches) ou les 4 touches directionnelles du panneau numérique pour déplacer l'objet sélectionné.
- 'H' : affiche les informations d'aide (dans la fenêtre de log de l'expert).
- 'I' : affiche les informations de position de deux objets.
- 'M' : active l'événement MOUSE_MOVE.
Événements Personnalisés
Affichez les informations concernant ces événements, en particulier pour l'événement MyEvent_3_broadcast.
Événements d'Objet
- CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - affiche le nom de l'objet correspondant.
- CHARTEVENT_OBJECT_CLICK - affiche le nom de l'objet cliqué, sélectionne son nom pour le déplacer avec les touches directionnelles.
Événements de Souris
- CHARTEVENT_CLICK - affiche les informations de la barre cliquée : les prix (ouverture, fermeture) et le temps de la barre.
- CHARTEVENT_MOUSE_MOVE (voir : CHART_EVENT_MOUSE_MOVE) - affiche les informations de l'intervalle couvert : nombre de barres, variation de prix.

Démonstration
Vous pouvez effectuer les tests suivants :
- Cliquez sur l'un des deux objets (Boutons) pour le sélectionner et utilisez les touches fléchées pour déplacer l'objet sélectionné.
- Cliquez sur une barre graphique et voyez les informations de la barre dans l'onglet log (message).
- Appuyez sur la touche 'M' pour entrer en mode MOUSE_MOVE. Appuyez sur Ctrl+F pour afficher la croix, puis effectuez une opération de glisser-déposer. Si vous ne voyez pas le message dans le log, veuillez changer le paramètre d'entrée : "iLogLevel".
Articles connexes
- Générer des Signaux de Trading avec MQL5 Wizard : Étoiles du Matin/du Soir et RSI
- Générez des Signaux de Trading avec MQL5 Wizard : Dark Cloud Cover et Piercing Line
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- AOCCI : Un Expert pour MetaTrader 5
- Générez des Signaux de Trading avec l'Indicateur Alligator sur MetaTrader 5