У некоторых функций в TradingView есть аргумент color, с помощью которого мы можем задать определенный цвет объектам. Одна из таких функций barcolor, которая может не только устанавливать цвет баров, но и менять его в зависимости от разных условий.
Функция barcolor не возвращает никакие данные и имеет следующий синтаксис по умолчанию:
1 |
barcolor(color, offset, editable, show_last, title, display) |
Давайте рассмотрим все ее аргументы.
color — обязательный аргумент, который устанавливает цвет ценового бара (базовый цвет TradingView, либо шестнадцатеричное значение). Вместо него можно использовать условное выражение:
1 |
barcolor(close > ta.ema(close, 9) ? color.blue : color.red) |
В данном случае мы проверяем на каждом баре цена открытия больше, чем EMA9 или нет. Если больше, то окрашиваем бар в синий цвет, если меньше, то в красный.
Если вы не хотите менять цвет бара, то используйте na вместо цвета.
offset — необязательный целочисленный аргумент, сдвигает цвет серии на определенное количество аргументов влево или вправо. Этот аргумент по умолчанию равен 0 (без смещения), в то время как положительные значения смещают цвет вправо (то есть к будущим барам), а отрицательные смещают их влево (предыдущие, бары).
editable — необязательный логический аргумент, который определяет, можно ли редактировать бары вручную в окне настроек скрипта «Стиль» (style). Этот аргумент по умолчанию имеет значение true (это означает, что изменение цветов вручную разрешено), а установка его в false запрещает изменение цветов вручную.
Когда аргумент editable = true, вы можете менять цвет баров вручную, в настройках скрипта:
show_last — если он задан, то определяет количество баров для изменения цвета (считается назад, начиная с текущего бара).
title — заголовок цвета бара. Необязательный аргумент.
display — контролирует, где отображается объект barcolor. Возможные значения: display.none (нигде не отображается), display.all (отображается везде). По умолчанию стоит display.all.
У функции barcolor есть 2 особенности:
- Эта функция всегда окрашивает ценовые бары, даже если скрипт, выполняющий функцию barcolor, выполняется в отдельной области.
- Функция barcolor меняет только заливку у свечей, которые выводит TradingView на графике, сама по себе бары она не рисует. Если у пользователя в настройках стоит свой цвет баров, то ваш скрипт не сможет его изменить. Пользовательские настройки всегда приоритетнее. К счастью у нас есть две функции: plotcandle и plotbar, которые рисуют свечи заданного вами цвета. О них поговорим в других частях.
Как изменить цвет баров при помощи barcolor, приведем пример:
1 2 3 4 5 6 |
indicator("barcolor() example", overlay=true) ema = ta.ema(close, 20) // присваиваем переменной EMA значение EMA20 на каждом баре plot (ema, linewidth=2, color= #228B22) //рисуем ЕМА20 зеленым цветом, ширина линии 2 barcolor(open > ema ? color.yellow : color.lime) // на каждом баре проверяем, больше ли цена открытия, чем ЕМА20, если больше, то окрашиваем бар в желтый, если нет, то в лайм |
Добавим аргумент show_last (show_last=10), менять цвет будут только последние 10 баров:
1 2 3 4 5 |
indicator("barcolor() example", overlay=true) ema = ta.ema(close, 20) plot (ema, linewidth=2, color= #228B22) barcolor(open > ema ? color.yellow : color.lime, show_last=10) |
Сдвигаем окрашенные бары влево или вправо
Самый простой способ сдвинуть окрашенные бары — явно присвоить целочисленное значение аргументу offset в функции barcolor:
1 2 3 4 5 |
indicator("barcolor() example", overlay=true) ema = ta.ema(close, 30) // присваиваем переменной EMA значение EMA30 на каждом баре barcolor(open > ema ? color.maroon : color.orange, offset = -3) // на каждом баре проверяем, больше ли цена открытия, чем ЕМА30, если больше, то окрашиваем бар в color.maroon, если нет, то в color.orange и потом смещаем окрашенные бары на 3 влево |
На первом графике мы видим окрашенные бары без смещения, по умолчанию offset=0.
На втором графике offset=-3, окрашенные бары смещаются на 3 влево.
Заключение
Функция barcolor может перекрашивать бары в любой цвет. Эта функция имеет несколько аргументов, в том числе color для установки цвета и offset для смещения цвета влево или вправо. Всякий раз, когда мы присваиваем аргументы offset положительное целое значение, цветные бары сдвигаются вправо (то есть к будущим барам), а отрицательное значение сдвигает цветные бары влево от их исходного положения (на историческую часть).