Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Smooth Gradient - библиотека для MetaTrader 5
- Опубликовал:
- Maxim Savochkin
- Просмотров:
- 1972
- Рейтинг:
- Опубликован:
- 2023.04.29 12:47
- Обновлен:
- 2023.06.20 11:17
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Если Вы используете в трейдинге какую-либо визуализацию, где числовое значение необходимо отобразить в виде цвета (например, Тепловую карту - Heat Map), то данная библиотека поможет отображать цвета более точно. Посмотрите как выглядит градиент на основе цветового пространства OKhsl с помощью эксперта "Smooth Gradient Test.mq5".
Подробнее о цветовом пространстве OKhsl
Структура 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(). Зелёным цветом выделены значения/переменные рассчитанные в ходе выполнения функции.
Конвертация цвета из формата RGB в формат OKhsl (OKhsv) и обратно
Информация о входах и выходах ONNX-моделиСкрипт для получения информации о количестве, типах и размерах входных и выходных тензоров onnx-модели
Замучил мелкий шрифт в терминале? Этот индикатор делает цифры цены видимыми!
Quick Change MAСкрипт для быстрого изменения метода (чередование EMA/SMA/LWMA) и периода (+/- шаг) скользящей средней.