Русский

Справочник MQL4 Стандартные константы, перечисления и структуры Именованные константы Прочие константы

Прочие константы

Специальные константы, используемые для указания состояния параметров и переменных. Mогут быть следующими величинами:

Константа

Описание

Значение

NULL

Ноль любого типа. Также указывает пустое состояние строки

0

EMPTY

Указывает пустое состояние параметра

-1

EMPTY_VALUE

Пустое значение в индикаторном буфере

2147483647 (0x7FFFFFFF)

CLR_NONE, clrNONE

Отсутствие цвета. Значение по умолчанию, указатель пустого значения. Используется в пользовательских индикаторах

-1

CHARTS_MAX

Максимально возможное количество одновременно открытых графиков в терминале

100

INVALID_HANDLE

Некорректный хэндл

-1

IS_DEBUG_MODE

Признак работы mq5-программы в режиме отладки

в режиме отладки не равно нулю, в противном случае 0

IS_PROFILE_MODE

Признак работы mq5-программы в режиме профилирования

в режиме профилирования не равно нулю, в противном случае 0

WHOLE_ARRAY

Означает количество элементов, оставшееся до конца массива, то есть, будет обработан весь массив

0

WRONG_VALUE

Константа может неявно приводиться к типу любого перечисления

-1

Константа NULL может быть присвоена переменной любого простого типа или указателю на объект структуры или класса. Присвоение NULL строковой переменной означает полную деинициализацию этой переменной.

Константа EMPTY_VALUE обычно соответствует тем значениям индикаторов, которые не отрисовываются на графике. Например, для встроенного индикатора Standard Deviation с периодом 20 не выводится на график линия для первых в истории 19 баров.

Константа CLR_NONE служит для указания отсутствия цвета, то есть графический объект или графическая серия индикатора не будут отображены. Эта константа не вошла в список констант с наименованиями Web-цветов, но может применяться везде, где требуется указание цвета.

Константа INVALID_HANDLE может использоваться при проверке файловых хэндлов (см. функции FileOpen() и FileFindFirst()).

Константа WRONG_VALUE предназначена для тех случаев, когда требуется вернуть значение перечисления, и это должно быть неверное значение. Например, нужно сообщить, что возвращаемое значение является значением этого перечисления. Приведем в качестве иллюстрации некую функцию CheckLineStyle(), которая возвращает стиль линии для объекта, указанного по имени. Если при запросе стиля функцией ObjectGetInteger() результатом будет true, то вернется значение перечисления ENUM_LINE_STYLE, иначе возвращается WRONG_VALUE.

void OnStart()
  {
   if(CheckLineStyle("MyChartObject")==WRONG_VALUE)
      printf("Error line style getting.");
  }
//+------------------------------------------------------------------+
//| возвращает стиль линии для объекта, указанного по имени          |
//+------------------------------------------------------------------+
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);
  }

Константа WHOLE_ARRAY предназначена для функций, которые требуют указания количества элементов в обрабатываемых массивах:

Если требуется указать, что необходимо обработать все значения массива с указанной позиции и до конца, то достаточно указать значение WHOLE_ARRAY.

Константа IS_PROFILE_MODE позволяет изменить работу программы для корректного сбора информации в режиме профилирования. Профилирование позволяет замерить время выполнения отдельных фрагментов программы (обычно это функции), а также подсчитать количество таких вызовов. Для корректного получения информации о времени выполнения в режиме профилировки можно отключить вызовы функции Sleep() как в примере:

//--- Sleep может сильно повлиять(исказить) на результат профилировки
if(!IS_PROFILE_MODESleep(100); // запрещаем вызов Sleep() в режиме профилировки

Значение константы IS_PROFILE_MODE задается компилятором в момент компиляции, и в обычном режиме выставляется равным нулю. При запуске программы в режиме профилирования производится специальная компиляция, и в этом случае вместо IS_PROFILE_MODE подставляется значение отличное от нуля.

Константа IS_DEBUG_MODE пригодится в тех случаях, когда необходимо немного изменить работу mql4-программы в режиме отладки. Например, в режиме отладки может потребоваться выводить дополнительную отладочную информацию в лог терминала или создавать вспомогательные графические объекты на графике.

Приведенный ниже пример создает объект Label и задает ее описание и цвет в зависимости от того, в каком режиме выполняется скрипт. Для того чтобы запустить скрипт в режиме отладки из MetaEditor, нажмите клавишу F5. Если запустить скрипта из окна навигатора в терминале, то цвет и текст объекта Label будут другими.

Пример:

//+------------------------------------------------------------------+
//|                                             Check_DEBUG_MODE.mq5 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://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());
      //--- создадим объект Label
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
      //--- установим координату X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- установим координату Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      ResetLastError();
      if(IS_DEBUG_MODE// режим отладки
        {
         //--- выведем сообщение о режиме выполнения скрипта
         ObjectSetString(0,label_name,OBJPROP_TEXT,"DEBUG MODE");
         //--- зададим красный цвет текста
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrRed))
            Print("Не удалось установить цвет. Ошибка ",GetLastError());
        }
      else              // рабочий режим
        {
         ObjectSetString(0,label_name,OBJPROP_TEXT,"RELEASE MODE");
         //--- зададим невидимый цвет текста
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,CLR_NONE))
            Print("Не удалось установить цвет. Ошибка ",GetLastError());
        }
      ChartRedraw();
      DebugBreak();    // здесь произойдет прерывание, если мы в режиме отладки
     }
  }

Методы шифрования данных

Для указания метода преобразования данных (шифрование и расчет хешей) в функциях CryptEncode() и CryptDecode() используется перечисление ENUM_CRYPT_METHOD.

ENUM_CRYPT_METHOD

Константа

Описание

CRYPT_BASE64

Шифрование BASE64 (перекодировка)

CRYPT_AES128

Шифрование AES с ключом 128 бит (16 байт)

CRYPT_AES256

Шифрование AES с ключом 256 бит (32 байта)

CRYPT_DES

Шифрование DES с ключом 56 бит (7 байт)

CRYPT_HASH_SHA1

Расчёт HASH SHA1

CRYPT_HASH_SHA256

Расчёт HASH SHA256

CRYPT_HASH_MD5

Расчёт HASH MD5

CRYPT_ARCH_ZIP

ZIP архивирование

Смотри также

DebugBreak, Информация о запущенной MQL4-программе, CryptEncode(), CryptDecode()