UninitializeReason

Devuelve el código de la causa de deinicialización.

int  UninitializeReason();

Valor devuelto

Devuelve el valor de la variable _UninitReason que se forma antes de la llamada a la función OnDeinit(). Este valor depende del motivo que ha provocado la deinicialización.

Ejemplo:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- obtenemos el código de motivo de desinicialización en la variable de motivo
   int reason=UninitializeReason();
//--- creamos una línea de mensaje con el motivo de la desinicialización y enviamos el mensaje al diario de registro
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
//--- con éxito
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- creamos una línea de mensaje con el código de motivo de desinicialización de la variable de motivo formal y enviamos el mensaje al diario de registro
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del motivo de desinicialización           |
//+------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
  {
   switch(reason)
     {
      //--- el experto ha detenido su funcionamiento llamando a la función ExpertRemove()
      case REASON_PROGRAM :
        return("Expert Advisor terminated its operation by calling the ExpertRemove() function");
      //--- programa eliminado del gráfico
      case REASON_REMOVE :
        return("Program has been deleted from the chart");
      //--- programa recompilado
      case REASON_RECOMPILE :
        return("Program has been recompiled");
      //--- el símbolo o periodo del gráfico ha sido modificado
      case REASON_CHARTCHANGE :
        return("Symbol or chart period has been changed");
      //--- el gráfico ha sido cerrado
      case REASON_CHARTCLOSE :
        return("Chart has been closed");
      //--- los parámetros de entrada han sido modificados por el usuario
      case REASON_PARAMETERS :
        return("Input parameters have been changed by a user");
      //--- se ha activizado otra cuenta, o bien ha tenido lugar la reconexión al servidor comercial como consecuencia del cambio de ajustes de la cuenta
      case REASON_ACCOUNT :
        return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
      //--- se ha aplicado otra plantilla del gráfico
      case REASON_TEMPLATE :
        return("A new template has been applied");
      //--- señal de que el manejador OnInit() ha retornado un valor distinto a cero
      case REASON_INITFAILED :
        return("This value means that OnInit() handler has returned a nonzero value");
      //--- el terminal se ha cerrado
      case REASON_CLOSE :
        return("Terminal has been closed");
     }
 
//--- motivo de desinicialización desconocido
   return("Unknown reason");
  }