Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

OK Color Space - библиотека для MetaTrader 5

Björn Ottosson
Опубликовал:
Maxim Savochkin
Просмотров:
1170
Рейтинг:
(11)
Опубликован:
2023.04.28 18:07
Обновлен:
2023.05.24 12:25
\MQL5\Include\ \MQL5\Experts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Цветовые пространства OKhsl и OKhsv являются перцептивно единообразными, то есть учитывают то, как человеческий глаз воспринимает цвета.

На практике эти цветовые пространства позволяют:

  • Cоздавать градиенты c плавным изменением оттенка (hue), насыщенности (saturation) и яркости (lightness/value)
  • Создавать цветовые палитры с относительно равномерной насыщенностью и яркостью


Сравнение цветовых пространств OKhsl и HSL


Подробнее о цветовых пространствах OKlab, OKhsl и OKhsv:

https://bottosson.github.io/posts/oklab/#comparing-oklab-to-hsv

https://bottosson.github.io/posts/colorpicker/


Библиотека OK Color Space

Структуры

struct OKhsl { float h; float s; float l; };
struct OKhsv { float h; float s; float v; };

Конвертация Color в OKhsl

void ColorToOKhsl(color  rgb_color, float &hue, float &saturation, float &lightness)

void ColorToOKhsl(color  rgb_color, OKhsl &okhsl)

Конвертация Color в OKhsv

void ColorToOKhsv(color  rgb_color, float &hue, float &saturation, float &value)

void ColorToOKhsv(color  rgb_color, OKhsv &okhsv)

Конвертация OKhsl в Color

color OKhslToColor(float hue, float saturation, float lightness)
color OKhslToColor(OKhsl &okhsl)

Конвертация OKhsv в Color

color OKhsvToColor(float hue, float saturation, float value)
color OKhsvToColor(OKhsv &okhsv)

Диапазоны значений

  • Hue (оттенок): 0-360
  • Saturation (насыщенность): 0-100
  • Lightness/Value (яркость): 0-100


    Пример использования функций

    //+------------------------------------------------------------------+
    //|                                                      Example.mq5 |
    //+------------------------------------------------------------------+
    #include <OK Color Space.mqh>
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- ColorToOKhsl() function with float variables
       color color_1=clrPlum;
       float hue,saturation,lightness;
       ColorToOKhsl(color_1,hue,saturation,lightness);
       PrintFormat("ColorToOKhsl(): hue=%.2f saturation=%.2f lightness=%.2f",hue,saturation,lightness);
       
    //--- ColorToOKhsv() function with OKhsv structure
       color color_2=clrLime;
       OKhsv okhsv;
       ColorToOKhsv(color_2,okhsv);
       PrintFormat("ColorToOKhsv(): hue=%.2f saturation=%.2f value=%.2f",okhsv.h,okhsv.s,okhsv.v);
       
    //--- OKhslToColor() function with OKhsl structure
       OKhsl okhsl={355,95,50};
       color result_1=OKhslToColor(okhsl);
       PrintFormat("OKhslToColor(): R=%u G=%u B=%u",uchar(result_1),uchar(result_1>>8),uchar(result_1>>16));
       
    //--- OKhsvToColor() function with float values
       color result_2=OKhsvToColor(150.5f,50.f,75.9f);
       PrintFormat("OKhsvToColor(): R=%u G=%u B=%u",uchar(result_2),uchar(result_2>>8),uchar(result_2>>16));
      }
    //+------------------------------------------------------------------+
    /* Output:
       
       ColorToOKhsl(): hue=326.54 saturation=63.91 lightness=74.79
       ColorToOKhsv(): hue=142.50 saturation=100.00 value=100.00
       OKhslToColor(): R=210 G=17 B=126
       OKhsvToColor(): R=109 G=188 B=128
    */


    Что нового

    Исправлена ошибка, из-за которой была невозможна конвертация серого цвета, например, из RGB(139,139,139) в OKhsl.

    С новым приложением UI Palette можно создавать палитры на основе цветовых пространств RGB, HSL, HSV, OKhsl и OKhsv.

    Возможности UI Palette:

    • Delete - удаление текущей палитры
    • Save - сохранение изменений в текущей палитре
    • Save as New - создание новой палитры на основе текущей (палитры сохраняются в файле "UI Palette.txt" в общей папке терминалов Common/Files)
    • Стрелки < > для переключения между палитрами
    • Переименование палитры при нажатии на название
    • Панель для настройки цвета высвечивается при нажатии на палитру или фон
    • Добавление нового цвета с помощью кнопки "+"
    • Удаление цвета с помощью кнопки Remove

    Смотрите также

    Библиотека Smooth Gradient: https://www.mql5.com/ru/code/44140


    Информация о входах и выходах ONNX-модели Информация о входах и выходах ONNX-модели

    Скрипт для получения информации о количестве, типах и размерах входных и выходных тензоров onnx-модели

    Overbought Oversould Level Overbought Oversould Level

    Индикатор уровней перекупленности/перепроданности по двум каналам Дончана с большим и меньшим периодом

    Smooth Gradient Smooth Gradient

    Градиент с плавным изменением цвета. Расчеты производятся на основе цветового пространства OKhsl.

    PriceScale - ценовая шкала для слабовидящих. PriceScale - ценовая шкала для слабовидящих.

    Замучил мелкий шрифт в терминале? Этот индикатор делает цифры цены видимыми!