Gestion d'Evènements

Le langage MQL5 fournit le traitement de certains évènements prédéfinis. Les fonctions pour gérer ces évènements doivent être définies dans le programme MQL5 : le nom de la fonction, le type de retour, l'ensemble de paramètres (s'il y en a) et leurs types doivent correspondre totalement à la description d'une fonction de gestion de l'évènement.

Le gestionnaire d'évènements du terminal client utilise le type de retour et les types des paramètres pour identifier les fonctions gérant un évènement. Si une certaine fonction a des paramètres ou un type de retour ne correspondant pas aux descriptions ci-dessous, cette fonction ne pourra pas être utilisée pour gérer un évènement.

Fonction

Description

OnStart

La fonction est appelée lorsque l'évènement Start se produit pour effectuer les actions définies dans le script

OnInit

La fonction est appelée dans les indicateurs et les EA lorsque l'évènement Init se produit pour initialiser un programme MQL5 lancé

OnDeinit

La fonction est appelée dans les indicateurs et les EA lorsque l'évèenement Deinit se produit pour désinitialiser un programme MQL5 lancé

OnTick

La fonction est appelée dans les EA lorsque l'évènement NewTick se produit pour gérer une nouvelle cotation

OnCalculate

La fonction est appelée dans les indicateurs lorsque l'évènement Calculate se produit pour gérer les changements de prix

OnTimer

La fonction est appelée dans les indicateurs et les EA pendant l'évènement périodique Timer généré par le terminal à des intervalles fixes de temps

OnTrade

La fonction est appelée dans les EA pendant l'évènement Trade généré à la fin d'une opération de trading sur un serveur de trades

OnTradeTransaction

La fonction est appelée dans les EA lorsque l'évènement TradeTransaction se produit pour traiter les résultats de l'exécution d'une demande de trade

OnBookEvent

La fonction est appelée dans les EA lorsque l'évènement BookEvent se produit pour traiter les changements du market depth

OnChartEvent

La fonction est appelée dans les indicateurs et les EA lorsque l'évènement ChartEvent se produit pour traiter les changements du graphique effectués par un utilisateur ou un programme MQL5

OnTester

La fonction est appelée dans les EA lorsque l'évènement Tester se produit pour effectuer les actions nécessaires après le test d'un EA sur les données historiques

OnTesterInit

La fonction est appelée dans les EA lorsque l'évènement TesterInit se produit pour effectuer les actions nécessaires avant une optimisation dans le testeur de stratégies

OnTesterDeinit

La fonction est appelée dans les EA lorsque l'évènement TesterDeinit se produit après l'optimisation d'un EA dans le testeur de stratégie

OnTesterPass

La fonction est appelée dans les EA lorsque l'évènement TesterPass se produit pour gérer l'arrivée d'un nouvel ensemble de données pendant l'optimisation d'un EA dans le testeur de stratégie

Le terminal client envoie les évènements entrants vers les graphiques ouverts correspondants. Les évènements peuvent également être générés par les graphiques (évènements graphiques) ou par des programmes mql5 (évènements personnalisés). La génération des évènements de création/suppression des objets graphiques peut être activée/désactivée en définissant les propriétés du graphique CHART_EVENT_OBJECT_CREATE et CHART_EVENT_OBJECT_DELETE. Chaque application mql5 et chaque graphique ont leur propre queue d'évènements où chaque nouvel évènement est placé

Un programme ne reçoit les évènements que du graphique sur lequel il est en cours d'exécution. Tous les évènements sont gérés les uns après les autres dans l'ordre de réception. Si la queue contient déjà l'évènement NewTick ou que cet évènement est déjà en cours de traitement, alors le nouvel évènement NewTick n'est pas ajouté dans la queue de l'application mql5. De la même façon, si le ChartEvent est déjà dans la queue d'un programme mql5 ou qu'un tel évènement est en cours de traitement, alors tout nouvel évènement de ce type ne sera pas placé dans la queue. La gestion des évènements du time est effectuée de la même façon — si l'évènement Timer est déjà dans la queue ou est en cours de traitement, aucun nouvel évènement timer n'est ajouté dans la queue.

Les queues d'évènements ont une taille limitée mais suffisante, donc un overflow de la queue est peu probable dans un programme développé correctement. Lorsqu'un overflow de la queue se produit, les nouveaux évènements sont annulés sans avoir été ajouté dans la queue.

Il est fortement recommandé de ne pas utiliser de boucle infinie pour gérer les évènements. Les exceptions possibles sont les scripts gérant un seul évènement Start.

Les bibliothèques ne gérent aucun évènement.