Июнь 8, 2016

Новые переменные языка Pine

По просьбам наших пользователей мы добавили встроенные переменные языка Pine, которые позволяют определять состояние бара, на котором производится вычисление.

Для определения состояния бара в момент вычисления используйте  следующие логические переменные: 

  • barstate.isfirst  — истина, если  текущий бар первый в множестве баров, иначе — ложь
  • barstate.islastистина, если  текущий бар последний в множестве баров, иначе — ложь
  • barstate.ishistory истина, если  текущий бар исторический, иначе — ложь
  • barstate.isrealtime —  истина, если  текущий бар является баром реального времени, иначе — ложь
  • barstate.isnew —  истина, если  текущий бар является новым баром, иначе — ложь.
    Из-за особенности просчитывания Pine кодов, все исторические бары считаются «новыми». Что касается баров, которые обновляются в реальном времени, то такие бары считаются новыми исключительно при просчете кода на открытии бара. Все внутрибаровые просчеты на барах, обновляющихся в реальном времени, не возвращают статус «новый».

Следующий пример продемонстрирует работу с новыми переменными.

//@version=2
study("My Script", overlay = true)
first = barstate.isfirst
last = barstate.islast
hist = barstate.ishistory
rt = barstate.isrealtime
new = barstate.isnew
plotchar(close, color = first ? red : na, location = location.belowbar)
plotchar(close, color = last ? blue : na, location = location.belowbar)
plotchar(close, color = hist ? gray : na, char='h')
bgcolor(color = new ? green : na)
barcolor(color = rt ? black: na)

Введите данный скрипт в редактор скриптов и нажмите “Добавить на график”.

Скрипт нарисует под первым и последним барами красный и синий символы, проставит символ ‘h’ над всеми историческими барами, фон новых баров подсветит зеленым, а бары реального времени окрасит черным.