Les événements du terminal de client

Init #

Tout de suite après que le terminal de client chargera le programme (l'expert ou l'indicateur d'utilisateur) et lancera le procès de l'initialisation des variables globales, l'événement Init, sera envoyé, qui sera traité par la fonction OnInit(), si elle existe. Cet événement est généré aussi après le remplacement de l'instrument financier et/ou la période du graphique, après la recompilation du programme dans le rédacteur MetaEditor, après le changement des paramètres d'entrée de la fenêtre du réglage de l'expert ou l'indicateur d'utilisateur. Le conseiller est initialisé aussi après le changement du compte. Pour les scripts l'événement Init ne se généré pas.

Deinit #

Devant la déinitialisation des variables globales et le déchargement du programme (l'expert ou l'indicateur d'utilisateur) le terminal de client envoie au programme l'événement Deinit. L'événement Deinit est généré aussi à l'achèvement du travail du terminal de client, à la clôture du graphique, directement devant le changement de l'instrument financier et/ou la période du graphique, à la recompilation réussie du programme, au changement des paramètres d'entrée, ainsi qu'au changement du compte.

La raison de deinitialisation peut être obtenue du paramètre, transmis à la fonction OnDeinit(). L'exécution de la fonction OnDeinit () se limite à 2.5 secondes. Si pour ce temps la fonction n'a pas fini le travail, son exécution s'achève forcément. Pour les scripts l'événement Deinit ne se généré pas.

Start

Start est un évènement spécial pour lancer un script ou un script après l'avoir chargé. Il est géré avec la fonction OnStart. L'évènement Start n'est pas passé aux EA et aux indicateurs personnalisés.

NewTick #

L'événement NewTick est généré à l'entrée des nouvelles cotations et est traité par la fonction OnTick() chez les conseillers adjoints. Si à l'entrée de la nouvelle cotation on accomplissait la fonctio OnTick, lancée sur la cotation précédente, la cotation reçue sera ignorée par le conseiller, puisque l'événement correspondant n'est pas mis au tour des événements de l'expert.

Toutes les nouvelles cotations qui sont venues pendant l'exécution du programme sont ignorées par le programme jusqu'à ce que s'achève l'exécution suivante de la fonction OnTick(). Après cela la fonction sera lancée seulement après l'arrivée de la nouvelle cotation suivante. L'événement NewTick n'est pas généré à l'interdiction insérée de l'utilisation des conseillers (le bouton "Permettre/interdire les conseillers").

L'événement NewTick est généré indépendamment du fait, si le commerce automatique est permis ou interdit (le bouton "Permettre/interdire le commerce automatique"). L'interdiction du commerce automatique signifie seulement l'interdiction à l'expédition des requêtes commerciales de l'expert, le travail de l'expert ne cesse pas.

L'interdiction du commerce automatique par voie de la pression sur le bouton indiqué n'interrompt pas l'exécution de la fonction courrante OnTick().

Calculate #

L'événement Calculate est généré seulement pour les indicateurs après l'envoi de l'événement Init et à n'importe quel changement des données de prix. Il est traité par la fonction OnCalculate.

Timer #

L'événement Timer est généré périodiquement par le terminal de client pour l'expert, qui a activé le minuteur à l'aide de la fonction EventSetTime. D'habitude cette fonction est appelé dans une fonction OnInit. Le traitement de l'événement Timer est produit par la fonction OnTimer. A l'achèvement du travail de l'expert il est nécessaire de supprimer le minuteur créé  l'aide de EventKillTimer, qui est d'habitude appelé à la fonction OnDeinit.

Trade #

L'événement Trade est généré à l'achèvement de l'opération commerciale sur le serveur commercial. Le traitement de l'événement Trade est produit par la fonction OnTrade() pour les opérations suivantes commerciales:

  • L'installation, la modification ou l'effacement de l'ordre remis;
  • l'annulation  de l'ordre remis au manque des moyens ou à l'expiration;
  • le fonctionnement de l'ordre remis;
  • l'ouverture, le supplément ou la clôture de la position (ou de la partie de la position);
  • la modification de la position ouverte  (le changement des Stops).

TradeTransaction #

A la suite de l'exécution des actions définies avec le compte commercial, son état change. Ces actions comprennent:

  • L'envoi de la demande commerciale par n'importe quelle application MQL5- dans le terminal de client à l'aide des fonctions OrderSend et OrderSendAsync et son exécution ultérieure;
  • L'envoi de la demande commerciale par l'interface graphique du terminal et son exécution ultérieure;
  • le fonctionnement des ordres remis et des ordres stop sur le serveur;
  • L'exécution des opérations sur le côté du serveur commercial.

A la suite de ces actions, les transactions commerciales sont exécutées pour le compte:

  • le traitement de la demande commerciale;
  • le changement des ordres ouverts;
  • le changement de l'histoire des ordres;
  • le changement de l'histoire des marchés;
  • le changement des positions.

Par exemple, à l'envoi de l'ordre de marché sur l'achat, il est traité, l'ordre correspondant sur l'achat est créé pour le compte, se passe l'exécution de l'ordre, son suppression de la liste des ouverts, l'ajout à l'histoire des ordres, ensuite le marché correspondant est ajouté à l'histoire et une nouvelle position est créé. Toutes ces actions sont les transactions commerciales. L'arrivée de chaque telle transaction au terminal est l'événement TradeTransaction. Cet événement est traité par la fonctionOnTradeTransaction.

Tester #

L'événement Tester est généré à l'achèvement du test de l'expert des données historiques. Le traitement de l'événement Tester est produit par la fonction OnTester().

TesterInit #

L'événement TesterInit est généré au lancement de l'optimisation dans le testeur des stratégies avant le premier passage. Le traitement de l'événement TesterInit est produit par la fonctionOnTesterInit().

TesterPass #

L'événementTesterPass est généré à l'entréed'une nouvelle trame des données. Le traitement de l'événement TesterPass est produit par la fonction OnTesterPass().

TesterDeinit #

L'événement TesterDeinit est généré à l'issue de l'optimisation de l'expert dans le testeur des stratégies. Le traitement de l'événement TesterDeinit est produit par la fonctionOnTesterDeinit().

ChartEvent #

L'événement ChartEvent est généré par le terminal de client pendant le travail d'utilisateur avec le graphique:

  • la pression du clavier, quand la fenêtre du graphique se trouve dans le tour;
  • la création de l'objet graphique;
  • l'effacement l'objet graphique;
  • le clic de la souris sur l'objet graphique, appartenant au graphique;
  • le déplacement de l'objet graphique à l'aide de la souris;
  • la fin de l'édition du texte dans le champ d'entrée de l'objet graphique LabelEdit.

Il y a aussi un événement d'utilisateur ChartEvent, qui peut être envoyé à l'expert par chaque programme mql5 à l'aide de la fonction EventChartCustom. L'événement est traité par la fonction OnChartEvent.

BookEvent #

L'événement BookEvent est généré par le terminal de client au changement de l'état du profondeur de marché et  est traité par la fonction OnBookEvent. Pour que le terminal de client commence à générer les événements BookEvent selon le symbole concret, c'est assez de s'inscrire préalablement sur la réception de ces événements pour ce symbole à l'aide de la fonction MarketBookAdd.

Pour désabonner de la réception de l'événement BookEvent  selon le symbole, il est nécessaire d'appeler la fonction MarketBookRelease. L'événement BookEvent est celui de diffusion — cela signifie qu'il est suffisant à un expert de souscrire à la réception de l'événement  BookEvent à l'aide de la fonction MarketBookAdd, et tous les autres experts qui ont le gestionnaire OnBookEvent,  recevrons cet événement. C'est pourquoi il est nécessaire d'analyser le nom du symbole, qui est transmis au gestionnaire à titre du paramètre.

Voir aussi

Les fonctions du traitement des événements, L'exécution des programmes