Стандартні константи, перерахування та структури

Можна самостійно вказати в призначеному для користувача індикаторі власне пусте значення індикатора, при якому не повинна проводитися отрисовка на графіку. Для цього використовуйте функцію PlotIndexSetDouble () з модифікатором PLOT_EMPTY_VALUE.

Константа NULL може бути присвоєна змінної будь-якого простого типу або вказівником на об'єкт структури або класу. Присвоєння NULL строкової змінної означає повну деініціалізацію цієї змінної.

Константа 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_MODE) Sleep (100); // забороняємо виклик Sleep () в режимі профілювання

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

Константа IS_DEBUG_MODE знадобиться в тих випадках, коли необхідно трохи змінити роботу mql5-програми в режимі налагодження. Наприклад, в режимі відладки може бути потрібна виводити додаткову зневадження в лог терміналу або створювати допоміжні графічні об'єкти на графіку.

Наведений нижче приклад створює об'єкт Label і задає її опис і колір в залежності від того, в якому режимі виконується скрипт. Для того щоб запустити скрипт в режимі налагодження з MetaEditor, натисніть клавішу F5. Якщо запустити скрипта з вікна навігатора в терміналі, то колір і текст об'єкта Label будуть іншими.

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