Codici del Motivo di DeInizializzazione

Motivo della deinizializzazione (codici) vengono restituiti dalla funzione UninitializeReason(). I valori possibili sono i seguenti:

Constant

Valore

Descrizione

REASON_PROGRAM

0

Expert Advisor terminata la loro operazione chiamando la funzione ExpertRemove()

REASON_REMOVE

1

Il programma è stato eliminato dal grafico

REASON_RECOMPILE

2

Il programma è stato ricompilato

REASON_CHARTCHANGE

3

Il simbolo o un periodo del grafico è stato cambiato

REASON_CHARTCLOSE

4

Il grafico è stato chiuso

REASON_PARAMETERS

5

I parametri di input sono stati modificati dall' utente

REASON_ACCOUNT

6

Un altro account è stato attivato o si è verificata la riconnessione al trade server a causa di cambiamenti nelle impostazioni dell'account

REASON_TEMPLATE

7

Un nuovo template è stato applicato

REASON_INITFAILED

8

Questo valore indica che l'handler OnInit() ha restituito un valore diverso da zero

REASON_CLOSE

9

Il terminale è stato chiuso

Il codice motivo di deinizializzazione è anche passato come parametro della funzione predeterminata OnDeinit(motivo const int).

Esempio:

//+--------------------------------------------------------------------------------+
//| ottiene la descrizione del testo                                               |
//+--------------------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
  {
   string text="";
//---
   switch(reasonCode)
     {
      case REASON_ACCOUNT:
         text="L'account è cambiato";break;
      case REASON_CHARTCHANGE:
         text="Il simbolo o timeframe sono cambiati";break;
      case REASON_CHARTCLOSE:
         text="Il grafico è cambiato";break;
      case REASON_PARAMETERS:
         text="I parametri di input sono cambiati";break;
      case REASON_RECOMPILE:
         text="Il programma "+__FILE__+" è stato ricompilato";break;
      case REASON_REMOVE:
         text="Il programma"+__FILE__+" è stato rimosso dal grafico";break;
      case REASON_TEMPLATE:
         text="Nuovi template sono stati applicati al grafico";break;
      default:text="Altro motivo";
     }
//---
   return text;
  }
//+--------------------------------------------------------------------------------+
//| Funzione deinizializzazione Expert                                             |
//+--------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Il primo modo per ottenere il codice del motivo di deinizializzazione
   Print(__FUNCTION__,"_Deinizializzazione(codice del motivo) = ",reason);
//--- Il secondo modo per ottenere il codice del motivo di deinizializzazione
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }