Códigos de Motivos de Desinicialização

Os códigos de razão de não inicialização são devolvidos pela função UninitializeReason(). Os valores possíveis são os seguintes:

Constante

Valor

Descrição

REASON_PROGRAM

0

O Expert Advisor terminou sua operação chamando a função ExpertRemove()

REASON_REMOVE

1

O programa foi excluído do gráfico

REASON_RECOMPILE

2

O programa foi recompilado

REASON_CHARTCHANGE

3

O período do símbolo ou gráfico foi alterado

REASON_CHARTCLOSE

4

O gráfico foi encerrado

REASON_PARAMETERS

5

Os parâmetros de entrada foram alterados por um usuário

REASON_ACCOUNT

6

Outra conta foi ativada ou o servidor de negociação foi reconectado devido a alterações nas configurações de conta

REASON_TEMPLATE

7

Um novo modelo foi aplicado

REASON_INITFAILED

8

Esse valor significa que o manipulador OnInit() retornou um valor diferente de zero

REASON_CLOSE

9

Terminal foi fechado

O código de razão de desinicialização também é passado como um parâmetro da função predeterminada OnDeinit(const int reason).

Exemplo:

//+------------------------------------------------------------------+
//| obter descrição do texto                                             |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
  {
   string text="";
//---
   switch(reasonCode)
     {
      case REASON_ACCOUNT:
         text="Account was changed";break;
      case REASON_CHARTCHANGE:
         text="Symbol or timeframe was changed";break;
      case REASON_CHARTCLOSE:
         text="Chart was closed";break;
      case REASON_PARAMETERS:
         text="Input-parameter was changed";break;
      case REASON_RECOMPILE:
         text="Program "+__FILE__+" was recompiled";break;
      case REASON_REMOVE:
         text="Program "+__FILE__+" was removed from chart";break;
      case REASON_TEMPLATE:
         text="New template was applied to chart";break;
      default:text="Another reason";
     }
//---
   return text;
  }
//+------------------------------------------------------------------+
//| Função de Desinicialização do Expert                             |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- A primeira maneira de obter o código de razão de desinicialização
   Print(__FUNCTION__,"_Uninitalization reason code = ",reason);
//--- A segunda maneira de obter o código de razão de desinicialização
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }