Otras constantes

La constante CLR_NONE sirve para indicar la falta del color, es decir, el objeto gráfico o serie gráfica de un indicador no serán mostrados. Esta constante no ha entrado en la lista de constantes de colores Web pero se puede usarla en cualquier parte donde se requiere indicar un color.

La constante INVALID_HANDLE puede ser usada durante la depuración de los manejadores de archivos(véase FileOpen() y FileFindFirst()).

Constante

Descripción

Valor

CHARTS_MAX

La cantidad máxima posible de los gráficos abiertos al mismo tiempo en el terminal

100

clrNONE

Ausencia de color

-1

EMPTY_VALUE

Valor vacío en el búfer de indicadores

DBL_MAX

INVALID_HANDLE

Manejador incorrecto

-1

IS_DEBUG_MODE

Indica que un programa mql5 se encuentra en el modo de depuración

true en el modo de depuración, de lo contrario false

IS_PROFILE_MODE

Indica que un programa mql5 se encuentra en el modo de perfilación

en modo de perfilación no es igual a cero, de lo contrario 0

NULL

Cero de cualquier tipo

0

WHOLE_ARRAY

Significa el número de elementos que se quedan hasta el final del array, es decir, el array entero será procesado

-1

WRONG_VALUE

La constante puede convertirse implícitamente al tipo de cualquier enumeración.

-1

La constante EMPTY_VALUE suele corresponder a los valores de los indicadores que no se muestran en el gráfico. Por ejemplo, para el indicador built-in Standard Deviation con el período 20, la línea para las primeras 19 barras en el historial no se muestra en el gráfico. Si creamos el manejador de este indicador usando la función iStdDev() y copiamos en el array los valores del indicador para estas baras a través de CopyBuffer(), entonces precisamente estos valores serán iguales a EMPTY_VALUE.

Nosotros mismos podemos especificar nuestro propio valor vacío del indicador en el indicador personalizado, en este caso el indicador no debería mostrarse en el gráfico. Con este fin se usa la función PlotIndexSetDouble() con el modificador PLOT_EMPTY_VALUE.

La constante NULL puede ser asignada a una variable de cualquier tipo simple o a un puntero a objeto de estructura o clase. La asignación de NULL a una variable de cadena significa la deinicialización completa de esta variable.

La constante WRONG_VALUE sirve para los casos cuando hace falta devolver el valor de una enumeración, y éste tiene que ser un valor erróneo. Por ejemplo, cuando tenemos que informar que un valor devuelto es un valor de esta enumeración. Como ilustración vamos a considerar una función CheckLineStyle() que devuelve el estilo de la línea para un objeto especificado por su nombre. Si el resultado de comprobación del estilo por la función ObjectGetInteger() es true, entonces será devuelto el valor de la enumeración ENUM_LINE_STYLE, de lo contrario se devuelve WRONG_VALUE.

void OnStart()
  {
   if(CheckLineStyle("MyChartObject")==WRONG_VALUE)
      printf("Error line style getting.");
  }
//+------------------------------------------------------------------+
//| devuelve el estilo de la línea de un objeto especificado por su nombre          |
//+------------------------------------------------------------------+
ENUM_LINE_STYLE CheckLineStyle(string name)
  {
   long style;
//---
   if(ObjectGetInteger(0,name,OBJPROP_STYLE,0,style))
      return((ENUM_LINE_STYLE)style);
   else
      return(WRONG_VALUE);
  }

 

La constante WHOLE_ARRAY está destinada para las funciones que requieren la especificación de la cantidad de elementos en los arrays procesados:

Si hace falta especificar que es necesario procesar todos los valores del array desde la posición especificada hasta el final, será suficiente indicar el valor WHOLE_ARRAY.

La constante IS_PROFILE_MODE permite cambiar el trabajo del programa para la correcta recopilación de la información en el modo de perfilación. La perfilación permite medir el tiempo de ejecución de ciertos fragmentos del programa (normalmente son las funciones), así como contar el número de estas llamadas. Para una correcta obtención de información sobre el tiempo de ejecución en el modo de perfilación se puede desactivar las llamadas a la función Sleep() como se muestra en el ejemplo:

//--- Sleep puede influir (desfigurar) considerablemente en el resultado de la perfilación
if(!IS_PROFILE_MODESleep(100); // prohibimos la llamada a Sleep() en el modo de perfilación

El valor de la constante IS_PROFILE_MODE se establece por el compilador en el momento de compilación, mientras que en el modo convencional se pone igual a cero. Cuando el programa se inicia en el modo de perfilación, se lleva a cabo una compilación especial, y en este caso IS_PROFILE_MODE se sustituye con un valor distinto a cero.

La constante IS_DEBUG_MODE será útil cuando es necesario cambiar un poco el trabajo de un programa mql5 en el modo de depuración. Por ejemplo, durante la depuración surge la necesidad de mostrar la información adicional de depuración en el registro (log) del terminal o crear los objetos gráficos auxiliares en un gráfico.

El ejemplo de abajo crea un objeto Label y define su descripción y color dependiendo del régimen en el que se ejecute el script. Para iniciar un script en el modo de depuración en MetaEditor, presione el botón F5. Si iniciamos el script desde la ventana del navegador en el terminal, el color y el texto del objeto Label serán diferentes.

Ejemplo:

//+------------------------------------------------------------------+
//|                                             Check_DEBUG_MODE.mq5 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string label_name="invisible_label";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Object ",label_name," not found. Error code = ",GetLastError());
      //--- creamos el objeto Label
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
      //--- establecemos la coordinada X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- establecemos la coordinada Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      ResetLastError();
      if(IS_DEBUG_MODE// modo de depuración
        {
         //--- mostramos el mensaje sobre el modo de ejecución del script
         ObjectSetString(0,label_name,OBJPROP_TEXT,"DEBUG MODE");
         //--- establecemos el color del texto como rojo
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrRed))
            Print("Fallo al determinar el color. Error ",GetLastError());
        }
      else              // modo operacional
        {
         ObjectSetString(0,label_name,OBJPROP_TEXT,"RELEASE MODE");
         //--- fijamos el color invisible del texto
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,CLR_NONE))
            Print("Fallo al determinar el color. Error ",GetLastError());
        }
      ChartRedraw();
      DebugBreak();    // si nos encontramos en el modo de depuración, aquí sucederá la terminación
     }
  }

Métodos del cifrado de datos

Para indicar el método de conversión de datos (cifrado y cálculo de hashs), en las funciones CryptEncode() y CryptDecode() se usa la enumeración ENUM_CRYPT_METHOD.

ENUM_CRYPT_METHOD

Constante

Descripción

CRYPT_BASE64

Cifrado BASE64 (recodificación)

CRYPT_AES128

Cifrado AES con la clave de 128 bits (16 bytes)

CRYPT_AES256

Cifrado AES con la clave de 256 bits (32 bytes)

CRYPT_DES

Cifrado DES con la clave de 56 bits (7 bytes)

CRYPT_HASH_SHA1

Cálculo HASH SHA1

CRYPT_HASH_SHA256

Cálculo HASH SHA256

CRYPT_HASH_MD5

Cálculo HASH MD5

CRYPT_ARCH_ZIP

Compresión ZIP

Véase también

DebugBreak, Información sobre el programa MQL5 en ejecución, CryptEncode(), CryptDecode()