Razones de deinicialización

Los códigos de las razones de deinicialización del Asesor Experto devueltos por la función UninitializeReason(). Pueden tener cualquier de los siguientes valores:

Constante

Valor

Descripción

REASON_PROGRAM

0

Asesor Experto finalizó su trabajo llamando a la función ExpertRemove()

REASON_REMOVE

1

El programa ha sido eliminado del gráfico

REASON_RECOMPILE

2

El programa ha sido recompilado

REASON_CHARTCHANGE

3

El símbolo o período del gráfico ha sido modificado

REASON_CHARTCLOSE

4

El gráfico ha sido cerrado

REASON_PARAMETERS

5

Los parámetros de entrada han sido cambiados por el usuario

REASON_ACCOUNT

6

Ha sido activada otra cuenta o ha tenido lugar la reconexión con el servidor comercial debido al cambio de los ajustes de la cuenta

REASON_TEMPLATE

7

Ha sido aplicada la nueva plantilla del gráfico

REASON_INITFAILED

8

Este valor significa que el manejador OnInit() ha devuelto un valor no nulo

REASON_CLOSE

9

El terminal ha sido cerrado

El código de la razón de deinicialización se pasa también como un parámetro de la función predefinida OnDeinit(const int reason).

Ejemplo:

//+------------------------------------------------------------------+
//| get text description                                             |
//+------------------------------------------------------------------+
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;
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- El primer modo de obtener el código de la razón de deinicialización
   Print(__FUNCTION__,"_Código de la razón de deinicialización = ",reason);
//--- El segundo modo de obtener el código de la razón de deinicialización
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }