OnDeinit

La fonction est appelée dans les indicateurs et les EA lorsque l'évènement Deinit se produit. Il est utilisé pour désinitialiser un programme MQL5 en cours d'exécution.

void  OnDeinit(
   const int  reason         // code de la raison de la désinitialisation
   );

Parameters

reason

[in]  Code de la raison de la désinitialisation.

Valeur de Retour

Aucune valeur de retour

Note

L'évènement Deinit est généré pour les EA et les indicateurs dans les cas suivants :

  • avant une réinitialisation en raison du changement du symbole ou de la période du graphique auquel le programme mql5 est attaché ;
  • avant une réinitialisation en raison du changement des entrées ;
  • avant le déchargement d'un programme mql5.

Le paramètre reason peut avoir les valeurs suivantes :

Constante

Valeur

Description

REASON_PROGRAM

0

L'EA a cessé de fonctionner en appelant la fonction ExpertRemove()

REASON_REMOVE

1

Programme enlevé du graphique

REASON_RECOMPILE

2

Programme recompilé

REASON_CHARTCHANGE

3

Symbole ou période du graphique modifié

REASON_CHARTCLOSE

4

Graphique fermé

REASON_PARAMETERS

5

Entrées modifiées par l'utilisateur

REASON_ACCOUNT

6

Un autre compte a été activé ou une reconnexion au serveur de trades s'est produite en raison de changements dans les paramètres du compte

REASON_TEMPLATE

7

Un autre modèle de graphique a été appliqué

REASON_INITFAILED

8

La fonction OnInit() a retourné une valeur différente de 0

REASON_CLOSE

9

Terminal fermé

Les codes des raisons de désinitialisation d'un EA peuvent être récupérés avec la fonction UninitializeReason() ou avec la variable prédéfinie _UninitReason.

Exemple des fonctions OnInit() et OnDeinit() pour l'EA

input int fake_parameter=3;      // paramètre inutile
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Récupère le numéro du buid où le programme est compilé
   Print(__FUNCTION__," Build #",__MQLBUILD__);
//--- Le code de la raison de la réinitialisation peut être obtenu dans OnInit()
   Print(__FUNCTION__," Le code de la raison de la désinitialisation peut être obtenu pendant la réinitialisation de l'EA");
//--- Première façon de récupérer le code de la raison de la désinitialisation
   Print(__FUNCTION__," _UninitReason = ",getUninitReasonText(_UninitReason));
//--- Deuxième façon de récupérer le code de la raison de la désinitialisation  
   Print(__FUNCTION__," UninitializeReason() = ",getUninitReasonText(UninitializeReason()));
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Fonction de dé-initialisation de l'Expert                        |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Première façon de récupérer le code de la raison de la désinitialisation
   Print(__FUNCTION__," Code de la raison de la désinitialisation = ",reason);
//--- Deuxième façon de récupérer le code de la raison de la désinitialisation
   Print(__FUNCTION__," _UninitReason = ",getUninitReasonText(_UninitReason));
//--- Troisième façon de récupérer le code de la raison de la désinitialisation  
   Print(__FUNCTION__," UninitializeReason() = ",getUninitReasonText(UninitializeReason()));
  }
//+------------------------------------------------------------------+
//| Retourne une description du code de la désinitialisation         |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
  {
   string text="";
//---
   switch(reasonCode)
     {
      case REASON_ACCOUNT:
         text="Le compte a été changé";break;
      case REASON_CHARTCHANGE:
         text="Le symbole ou la période ont été changés";break;
      case REASON_CHARTCLOSE:
         text="Le graphique a été fermé";break;
      case REASON_PARAMETERS:
         text="Les paramètres d'entrée ont été changés";break;
      case REASON_RECOMPILE:
         text="Le programme "+__FILE__+" a été recompilé";break;
      case REASON_REMOVE:
         text="Le programme "+__FILE__+" a été enlevé du graphique";break;
      case REASON_TEMPLATE:
         text="Un nouveau modèle a été appliqué au graphique";break;
      default:text="Autre raison";
     }
//---
   return text;
  }

Voir également

OnInit, Fonctions de gestion des évènements, Exécution du programme, Evènements du terminal client, Codes des raisons de la non initialisation, Portée de visibilité et cycle de vie des variables, Créer et supprimer des objets