//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- ottenere il codice del motivo della deinitializzazione nella variabile 'reason'
int reason=UninitializeReason();
//--- creare una stringa messaggio con un motivo di deinitializzazione e inviare il messaggio al journal
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
//-- con successo
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- creare una stringa messaggio con un codice motivo di deinitializzazione dalla variabile formale 'reason' e inviare il messaggio al journal
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
}
//+----------------------------------------------------------------------------+
//| Restituisce una descrizione del codice del motivo della deinitilizzazione |
//+----------------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
{
switch(reason)
{
//--- l'EA ha smesso di funzionare chiamando la funzione ExpertRemove()
case REASON_PROGRAM :
return("Expert Advisor terminated its operation by calling the ExpertRemove() function");
//--- programma rimosso dal grafico
case REASON_REMOVE :
return("Program has been deleted from the chart");
//--- programma ricompilato
case REASON_RECOMPILE :
return("Program has been recompiled");
//--- simbolo o periodo del grafico modificato
case REASON_CHARTCHANGE :
return("Symbol or chart period has been changed");
//--- grafico chiuso
case REASON_CHARTCLOSE :
return("Chart has been closed");
//--- input modificati dall'utente
case REASON_PARAMETERS :
return("Input parameters have been changed by a user");
//--- un altro account è stato attivato o la riconnessione al server di trading e avvenuta a causa di modifiche nelle impostazioni dell'account
case REASON_ACCOUNT :
return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
//--- applicato un altro modello grafico
case REASON_TEMPLATE :
return("A new template has been applied");
//--- il gestore OnInit() restituisce un valore diverso da zero
case REASON_INITFAILED :
return("This value means that OnInit() handler has returned a nonzero value");
//--- terminale chiuso
case REASON_CLOSE :
return("Terminal has been closed");
}
//--- motivo di deinitializzazione sconosciuto
return("Unknown reason");
}
|