Практически каждый скрипт TradingView использует в своих расчетах предыдущие ценовые бары. И индикаторы и стратегии могут работать с самими номерами баров.

Несмотря на то, что это не отображается на графиках TradingView, у каждой свечки есть определенный номер. Скрипты могут использовать это число для размещения рисунков и просмотра количества столбцов на графике.

Пример индикатора, который строит прямую по номерам баров. Всего на графике 123 бара:

Pinescript. Как получить номер бара в TradingView? (переменная bar_index)

Переменная bar_index возвращает номер текущего бара и имеет тип int (целое число). Значение bar_index отсчитывается от нуля, это значит, что общее количество баров на графике равно bar_index + 1.

Если мы хотим узнать, какой номер был у предыдущего бара, мы можем объединить bar_index с оператором обращения к истории ([]). Например, bar_index[10] возвращает номер бара 10 баров назад. Можно отнять от текущего номера бара: bar_index — 10 и мы получим то же значение.

Переменная bar_index относительно новая, т.к. в 3 и более ранних версиях доступ к номерам баров можно было получить с помощью переменной n.

Зачем нам нужно знать номера баров в TradingView

  1. bar_index необходим, когда мы хотим вывести метку , линию тренда, стрелку и пр. рисунки на график.
  2. Мы можем сохранить значение bar_index в переменной, и если происходит какое-то условие, мы можем сравнить номер текущего бара с сохраненным значением. Затем мы сможем посчитать сколько баров назад произошло то или иное событие.
  3. Иногда bar_index используется для ограничения периода тестирования стратегии на исторических данных.
  4. На последнем баре bar_index + 1 говорит нам сколько всего ценовых баров на графике.

Посчитаем количество баров и выведем метку при помощи bar_index

  • Оператор if определяет  блок команд, который должен быть выполнен, если выражение после if истинно. В данном случае переменная  barstate.islast возвращает true, если текущий бар — это последний бар.
  • Далее при помощи label.new рисуем метку по координатам х (bar_index) и y (high), на метке пишем текст: «Баров на графике (bar_index + 1)».
  • При помощи функции str.tostring преобразуем переменную типа int в переменную типа string (подробнее о str.tostring  читайте в нашей статье).
  • Цвет текста белый textcolor=color.white, цвет метки черный color=color.black, размер метки нормальный size=size.normal.

Результат работы нашего индикатора:

Результат работы нашего индикатора:

 

Заключение

Скрипты TradingView получают доступ к номерам баров с помощью bar_index. Эта переменная начинает отсчет с 0 для первого бара, а затем увеличивается на единицу для каждого дополнительного ценового бара. На последнем баре графика bar_index + 1 говорит, сколько баров на графике.

Мы часто используем bar_index для позиционирования рисунков (например, линий тренда и меток) на графике. Мы также можем узнать сколько баров прошло между какими-либо событиями на графике.