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

Smooth Gradient - библиотека для MetaTrader 5

Björn Ottosson
Опубликовал:
Maxim Savochkin
Просмотров:
1812
Рейтинг:
(10)
Опубликован:
2023.04.29 12:47
Обновлен:
2023.06.20 11:17
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Если Вы используете в трейдинге какую-либо визуализацию, где числовое значение необходимо отобразить в виде цвета (например, Тепловую карту - Heat Map), то данная библиотека поможет отображать цвета более точно. Посмотрите как выглядит градиент на основе цветового пространства OKhsl с помощью эксперта "Smooth Gradient Test.mq5".

Подробнее о цветовом пространстве OKhsl

https://www.mql5.com/ru/code/44050


Структура OKhsl

struct OKhsl {float h; float s; float l;};
  • h - hue (оттенок), значение от 0 до 360
  • s - saturation (насыщенность), значение от 0 до 100
  • l - lightness (яркость), значение от 0 до 100


Функция GetGradientValue()

color GetGradientValue(
                       OKhsl &color_first,
                       OKhsl &color_last,
                       double value_first,
                       double value_last,
                       double value_current,
                       bool   major_arc=false
                      )

  • color_first - первый цвет в градиенте.
  • color_last - последний цвет в градиенте.
  • value_first - первое числовое значение, соответствует первому цвету в градиенте (например, если value_current=value_first, то функция возвращает color_first в формате color).
  • value_last - последнее числовое значение, соответствует последнему цвету в градиенте (например, если value_current=value_last, то функция возвращает color_last в формате color).
  • value_current - числовое значение, для которого необходимо найти соответствующий цвет в градиенте. Значение должно быть в диапазоне между value_first и value_last.
  • major_arc - дуга, по которой происходит изменение оттенка (короткая-false, длинная-true). Для лучшего понимания посмотрите работу эксперта "Smooth Gradient Test.mq5".

Пример

void OnStart()
  {
   OKhsl  color_first={260,100,50};
   OKhsl  color_last={350,100,60};
   double value_first=0.2;
   double value_last=1.2;
   double value_current=0.6;
   color  result=GetGradientValue(color_first,color_last,value_first,value_last,value_current,false);
  }


1. Результат работы функции GetGradientValue(). Зелёным цветом выделены значения/переменные рассчитанные в ходе выполнения функции.


Функция GetGradientValues()

int GetGradientValues(
                      OKhsl  &color_first,
                      OKhsl  &color_last,
                      double  value_first,
                      double  value_last,
                      double &values_input[],
                      color  &colors_output[],
                      bool    major_arc=false
                     )
  • color_first - первый цвет в градиенте.
  • color_last - последний цвет в градиенте.
  • value_first - первое числовое значение, соответствует первому цвету в градиенте.
  • value_last - последнее числовое значение, соответствует последнему цвету в градиенте.
  • values_input[] - числовые значения, для которых необходимо найти соответствующие цвета в градиенте. Все значения массива должны быть в диапазоне между value_first и value_last.
  • colors_output[] - динамический массив, в который записываются цвета из градиента.
  • major_arc - дуга, по которой происходит изменение оттенка (короткая-false, длинная-true). Для лучшего понимания посмотрите работу эксперта "Smooth Gradient Test.mq5".

Функция возвращает количество элементов записанных в массив colors_output[]. В случае ошибки возвращает 0.

Пример

void OnStart()
  {
   OKhsl  color_first={260,100,50};
   OKhsl  color_last={350,100,60};
   double values[3]={0.6, 1.2, 0.2};
   double value_first=values[ArrayMinimum(values)];
   double value_last=values[ArrayMaximum(values)];
   color  result[];
   GetGradientValues(color_first,color_last,value_first,value_last,values,result,false);
  }


2. Результат работы функции GetGradientValues(). Зелёным цветом выделены значения/переменные рассчитанные в ходе выполнения функции.

Если в данном примере значение value_first установить меньше 0.2 и значение value_last установить больше 1.2, то относительный диапазон значений в массиве values[] станет меньше, а на картинке все три отметки со значениями нужно будет расположить ближе к центру градиента (все три цвета в массиве result[] будут ближе к фиолетовому).


Функция GetGradientSteps()

void GetGradientSteps(
                      OKhsl &color_first,
                      OKhsl &color_last,
                      int    step_count,
                      color &gradient_steps[],
                      bool   major_arc=false
                     )
  • color_first - первый цвет в градиенте.
  • color_last - последний цвет в градиенте.
  • step_count - количество шагов (количество элементов для записи в массив gradient_steps[]), включая color_first и color_last.
  • gradient_steps[] - динамический массив, в который записываются цвета из градиента.
  • major_arc - дуга, по которой происходит изменение оттенка (короткая-false, длинная-true). Для лучшего понимания посмотрите работу эксперта "Smooth Gradient Test.mq5".

Условное "расстояние" между всеми цветами будет равным, так как используется равный шаг.

Пример

void OnStart()
  {
   OKhsl color_first={260,100,50};
   OKhsl color_last={350,100,60};
   color result[];
   GetGradientSteps(color_first,color_last,4,result,false);
  }


3. Результат работы функции GetGradientSteps(). Зелёным цветом выделены значения/переменные рассчитанные в ходе выполнения функции.


OK Color Space OK Color Space

Конвертация цвета из формата RGB в формат OKhsl (OKhsv) и обратно

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

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

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

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

Quick Change MA Quick Change MA

Скрипт для быстрого изменения метода (чередование EMA/SMA/LWMA) и периода (+/- шаг) скользящей средней.