Цвет

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

Для обозначения типа используется ключевое слово color. Под значение типа color выделяется 4 байта памяти. Внутреннее представление — это целое беззнаковое число, содержащее цвет в формате RGB (от Red, Green, Blue), то есть с раздельными уровнями интенсивности для красного, зеленого и синего цветов. Смешение этих трех компонент позволяет получить любой видимый оттенок. Зеленый с красным дадут желтый, красный с синим — фиолетовый, и так далее.

Под каждую компоненту выделен 1 байт, то есть она может принимать значения от 0 до 255. Например, три нуля во всех компонентах дают черный цвет, а три максимальных величины 255 смешиваются в белый.

Если представить color как uint в шестнадцатеричной системе, то распределение цветов выглядит следующим образом: 0x00BBGGRR, где RR, GG, BB — однобайтовые беззнаковые целые числа.

Для удобства пользователя MQL5 поддерживает особый вид литералов для записи цветовых констант. Литерал представляет собой тройку чисел, разделенных запятыми и заключенную в одинарные кавычки. Перед литералом ставится символ 'C'. Например, C'0,128,255' означает цвет с 0 для красной составляющей, 128 — для зеленой и 255 — для синей. Можно использовать и шестнадцатеричную запись чисел: C'0x00,0x80,0xFF'.

Помимо этого в MQL5 в виде служебных слов встроен длинный перечень предопределенных цветовых оттенков — все они начинаются с префикса clr. Например, clrMagenta, clrLightCyan, clrYellow. В нем, разумеется, есть и основные: clrRed, clrGreen, clrBlue. Полный перечень можно найти в Справке MetaEditor.

Вот несколько примеров задания цветов (доступны также в файле MQL5/Scripts/MQL5Book/p2/TypeColor.mq5):

void OnStart()
{
  color y = clrYellow;         // clrYellow
  color m = C'255,0,255';      // clrFuchsia
  color x = C'0x88,0x55,0x01'; // x = 136,85,1 (no such predefined color)
  color n = 0x808080;          // clrGray
}