//+------------------------------------------------------------------+ //| 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"); } |