//+------------------------------------------------------------------+
//| 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__, reason, UninitializeReasonDescription(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__, reason, UninitializeReasonDescription(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");
}
|