Новые возможности работы с цветом в Pine

13 мая, 2021

Ваши скрипты заиграют яркими красками с новыми серийными цветами и градиентами из RGB палитры.

В Pine добавлена новая функция ‘color.rgb(red, green, blue, transp)’, которая позволяет определить цвет путем передачи значения компонентов красного (red), зеленого (green), синего (blue) цветов и прозрачности (transp) в качестве аргументов. Теперь вместо определения всей палитры цветов, используемой в скрипте, можно определять цвет сразу на основании переданных аргументов. На этом примере вы сможете увидеть, насколько проще стало использование сложных цветовых переходов:

//@version=4
study("Relative Bars Color Saturation", "RBCS", overlay=true)

i_barcolor = input(color.rgb(33, 150, 243), "Bar Color", input.color)

f_grad_transp(_c_col, _transp) =>
    _c_red = color.r(_c_col)
    _c_green = color.g(_c_col)
    _c_blue = color.b(_c_col)
    color.rgb(_c_red, _c_green, _c_blue, _transp)

f_indexedPercent(_currentValue, _relativeValue, _maxValue) =>
    _currentValue * _maxValue / _relativeValue

transp = f_indexedPercent(abs(close - open), high - low, 100)
c_color = f_grad_transp(i_barcolor, transp)
barcolor(c_color)

Значение компонентов цвета задается в диапазоне от 0 (наименее интенсивный) до 255 (наиболее интенсивный), для компонента прозрачности это диапазон от 0 (непрозрачный) до 100 (полностью прозрачный).

Если необходимо получить числовое значение конкретного компонента цвета или прозрачности, то это можно сделать с помощью специальных функций ‘color.r()’, ‘color.g()’, ‘color.b()’ и ‘color.t()’, передав им в качестве аргумента нужный цвет.

А с функцией ‘color.from_gradient()’ вы можете создавать впечатляющие переходы от одного цвета к другому на каждом баре — цвета скриптов теперь ограничены только вашей фантазией. Вот пример, в котором показано, насколько проще стало описание цвета в зависимости от значения индекса относительной силы:

//@version=4
study("RGB RSI")
i_src = input(close, "Source", input.source)
i_length = input(14, "Length", input.integer)

f_grad_transp(_c_col, _transp) =>
    _c_red = color.r(_c_col)
    _c_green = color.g(_c_col)
    _c_blue = color.b(_c_col)
    color.rgb(_c_red, _c_green, _c_blue, _transp)

rsi = rsi(i_src, i_length)
c_grad = color.from_gradient(rsi, 30, 70, color.lime, color.red)

plot(rsi, color=c_grad, linewidth=3)
band1 = hline(70, "Overbought", color=color.rgb(255, 82, 82))
band0 = hline(30, "Oversold", color=color.rgb(76, 175, 80))
fill(band1, band0, color=f_grad_transp(c_grad, 90), title="Background")

Обо всех обновлениях Pine читайте в разделе Release Notes в нашем руководстве пользователя.

Некоторые встроенные индикаторы (Моментум, Скользящее среднее (тройное эксп. сглаженное), Ценовой осциллятор, Детрендовый ценовой осциллятор, Осциллятор Чайкина, Осциллятор объема, Свобода движения (Ease of Movement), Скорость изменения цены) были обновлены, и теперь могут использовать новые возможности. Добавьте эти индикаторы на свой график, чтобы оценить весь функционал RGB палитры.

Ниже вы можете посмотреть на впечатляющие примеры использованя RGB цветов от разработчиков сообщества.

Directional Value от RicardoSantos

Color Gradient Framework от LucF, для PineCoders

Delta Volume Columns Pro от LucF

Мы надеемся, что новая функция окажется для вас полезной. Продолжайте присылать нам отзывы и предложения — мы создаем TradingView для вас и рады узнать, что вы думаете об обновлениях нашей платформы.

Look first Then leap

Мы создали TradingView, чтобы вы могли пользоваться самыми крутыми функциями.
Открыть график