Codes des Raisons de Non-Initialisation

Les codes des raisons de non-initialisation sont retournés par la fonction UninitializeReason(). Les valeurs possibles sont les suivantes :

Constante

Valeur

Description

REASON_PROGRAM

0

L'Expert Advisor a terminé son opération en appelant la fonction ExpertRemove()

REASON_REMOVE

1

Le programme a été supprimé du graphique

REASON_RECOMPILE

2

Le programme a été recompilé

REASON_CHARTCHANGE

3

Le symbole de la période du graphique a été modifié

REASON_CHARTCLOSE

4

Le graphique a été fermé

REASON_PARAMETERS

5

Les paramètres d'entrée ont été changés 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 nouveau modèle a été appliqué

REASON_INITFAILED

8

Cette valeur signifie que le gestionnaire OnInit() a retourné une valeur différente de 0

REASON_CLOSE

9

Le terminal a été fermé

Le code de la raison de non-initialisation est également passé en paramètre à la fonction OnDeinit(const int reason).

Exemple :

//+----------------------------------------------------------------------------------------------------+
//| Récupère la description textuelle                                                                  |
//+----------------------------------------------------------------------------------------------------+
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;
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de dé-initialisation de l'Expert                                                          |
//+----------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- La première façon d'obtenir le code de raison de non-initialisation
   Print(__FUNCTION__,"_code de raison de non-initalisation = ",reason);
//--- La deuxième façon d'obtenir le code de raison de non-initialisation
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }