У некоторых функций в TradingView есть аргумент color, с помощью которого мы можем задать определенный цвет объектам. Одна из таких функций barcolor, которая может не только устанавливать цвет баров, но и менять его в зависимости от разных условий.

Функция barcolor не возвращает никакие данные и имеет следующий синтаксис по умолчанию:


Давайте рассмотрим все ее аргументы.

color — обязательный аргумент, который устанавливает цвет ценового бара (базовый цвет TradingView, либо шестнадцатеричное значение). Вместо него можно использовать условное выражение:


PineScript - как изменить цвет баров

В данном случае мы проверяем на каждом баре цена открытия больше, чем EMA9 или нет. Если больше, то окрашиваем бар в синий цвет, если меньше, то в красный.

Если вы не хотите менять цвет бара, то используйте na вместо цвета.

offset — необязательный целочисленный аргумент, сдвигает цвет серии на определенное количество аргументов влево или вправо. Этот аргумент по умолчанию равен 0 (без смещения), в то время как положительные значения  смещают цвет вправо (то есть к будущим барам), а отрицательные смещают их влево (предыдущие, бары).

editable — необязательный логический аргумент, который определяет, можно ли редактировать бары вручную в окне настроек скрипта «Стиль» (style). Этот аргумент по умолчанию имеет значение true (это означает, что изменение цветов вручную разрешено), а установка его в false запрещает изменение цветов вручную.

Когда аргумент editable = true, вы можете менять цвет баров вручную, в настройках скрипта:

PineScript - как изменить цвет баров

show_last — если он задан, то определяет количество баров для изменения цвета (считается назад, начиная с текущего бара).

title —  заголовок цвета бара. Необязательный аргумент.

display — контролирует, где отображается объект barcolor. Возможные значения: display.none (нигде не отображается), display.all (отображается везде). По умолчанию стоит display.all.

У функции barcolor есть 2 особенности:

  1. Эта функция всегда окрашивает ценовые бары, даже если скрипт, выполняющий функцию barcolor, выполняется в отдельной области.
  2. Функция barcolor меняет только заливку у свечей, которые выводит TradingView на графике, сама по себе бары она не рисует. Если у пользователя в настройках стоит свой цвет баров, то ваш скрипт не сможет его изменить. Пользовательские настройки всегда приоритетнее. К счастью у нас есть две функции: plotcandle и plotbar, которые рисуют свечи заданного вами цвета. О них поговорим в других частях.

Как изменить цвет баров при помощи barcolor, приведем пример:


PineScript - как изменить цвет баров

Добавим аргумент show_last (show_last=10), менять цвет будут только последние 10 баров:


PineScript - как изменить цвет баров

Сдвигаем окрашенные бары влево или вправо

Самый простой способ сдвинуть окрашенные бары — явно присвоить целочисленное значение аргументу offset в функции barcolor:


На первом графике мы видим окрашенные бары без смещения, по умолчанию offset=0.

На втором графике offset=-3, окрашенные бары смещаются на 3 влево.

 

Сдвигаем окрашенные бары влево или вправо

Заключение

Функция barcolor может перекрашивать бары в любой цвет. Эта функция имеет несколько аргументов, в том числе color для установки цвета и offset для смещения цвета влево или вправо. Всякий раз, когда мы присваиваем аргументы offset положительное целое значение, цветные бары сдвигаются вправо (то есть к будущим барам), а отрицательное значение сдвигает цветные бары влево от их исходного положения (на историческую часть).