UninitializeReason

Gibt Code des Grundes der Deinitialisierung zurück.

int  UninitializeReason();

Rückgabewert

Gibt den Wert der Variable _UninitReason zurück, der vor dem Aufruf der Funktion OnDeinit() zugewiesen wurde. Der Wert hängt vom Grund ab, der zur Deinitialisierung geführt hat.

Beispiel:

//+------------------------------------------------------------------+
//| Expert Initialisierungsfunktion                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- abrufen des Codes für den Deinitialisierungsgrund in der Variablen 'reason'
   int reason=UninitializeReason();
//--- einen Nachrichtenstring mit einem Deinitialisierungsgrund erstellen und die Nachricht an das Journal senden
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
//--- Erfolg
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialisierungsfunktion des Experten                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- erstelle eine Zeichenkette mit einem Deinitialisierungsgrund aus der Variable 'reason', um sie im Journal auszudrucken
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
  }
//+------------------------------------------------------------------+
//| Tick-Funktion des Experten                                       |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Codes des Deinitialisierungsgrundes|
//+------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
  {
   switch(reason)
     {
      //--- der EA beendete seine Arbeit durch den Aufruf der Funktion ExpertRemove()
      case REASON_PROGRAM :
        return("Expert Advisor terminated its operation by calling the ExpertRemove() function");
      //--- das Programm wurde vom Chart entfernt
      case REASON_REMOVE :
        return("Program has been deleted from the chart");
      //--- Rekompilieren des Programms
      case REASON_RECOMPILE :
        return("Program has been recompiled");
      //--- Symbol oder Zeitrahmen des Charts wurde verändert
      case REASON_CHARTCHANGE :
        return("Symbol or chart period has been changed");
      //--- Chart wurde geschlossen
      case REASON_CHARTCLOSE :
        return("Chart has been closed");
      //--- Eingaben wurden vom Nutzer verändert
      case REASON_PARAMETERS :
        return("Input parameters have been changed by a user");
      //--- ein anderes Konto wurde aktiviert oder es gab eine erneute Verbindung zum Handelsserver aufgrund von Änderungen der Kontoeinstellungen
      case REASON_ACCOUNT :
        return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
      //--- ein anderes Chart-Template wurde angewendet
      case REASON_TEMPLATE :
        return("A new template has been applied");
      //--- OnInit() gab einen Wert ungleich Null zurück
      case REASON_INITFAILED :
        return("This value means that OnInit() handler has returned a nonzero value");
      //--- Terminal wurde geschlossen
      case REASON_CLOSE :
        return("Terminal has been closed");
     }
 
//--- Grund der Deinitialisierung ist unbekannt
   return("Unknown reason");
  }