Новые встроенные переменные в пространстве имен chart теперь предоставляют скриптам большую видимость свойств графика. С их помощью мы также вводим новый тип поведения для ваших скриптов Pine. Они будут автоматически пересчитываться, когда трейдеры прокручивают или масштабируют свой график. Это позволит им обрабатывать только видимые бары.
Свойства графика
Новая встроенная переменная chart.bg_color возвращает цвет фона диаграммы. Вы можете использовать её для адаптации цветовой схемы вашего скрипта к контексту диаграммы. Её компаньон chart.fg_color возвращает цвет, который обеспечит оптимальный контраст с цветом фона графика, каким бы он ни был.
Другая группа новых логических встроенных переменных позволяет определить тип графика, на котором выполняется ваш скрипт:
- chart.is_heikinashi
- chart.is_renko
- chart.is_linebreak
- chart.is_kagi
- chart.is_pnf
- chart.is_range
- chart.is_standard
Последняя переменная вернёт значение true для всех стандартных типов графиков (которые возвращают несинтетическую цену закрытия): Бары, Японские свечи, Пустые свечи, Столбцы, Линия, Область или Базовая линия.
Видимые бары и динамический пересчёт
Новые встроенные переменные chart.left_visible_bar_time и chart.right_visible_bar_time возвращают время открытия крайнего левого и крайнего правого видимых баров графика. Когда пользователь прокручивает или увеличивает свой график, вызывая изменение диапазона видимых баров на графике, сценарии, использующие любую из этих новых встроенных переменных, будут автоматически выполняться повторно, чтобы вычисления и визуальные эффекты могли адаптироваться к новому контексту. Это открывает большие возможности для совершенно нового разнообразия скриптов, которые динамически приспосабливаются к изменениям в диапазоне видимых баров.
В следующем примере рисуется стрелка от открытия (open) первого видимого бара до закрытия (close) последнего и показывает прибыль/убыток для этого диапазона:
//@version=5 indicator("Chart gain/loss", "", true) // Save the `open` of the leftmost visible bar. var float chartOpen = na if time == chart.left_visible_bar_time chartOpen := open else if time == chart.right_visible_bar_time // Run the following code on the chart's rightmost visible bar. color arrowColor = close > chartOpen ? color.lime : color.fuchsia // Draw arrow once, then modify it. var line arrow = line.new(na, na, na, na, xloc.bar_time, extend.none, na, line.style_arrow_right, 3) line.set_xy1(arrow, chart.left_visible_bar_time, chartOpen) line.set_xy2(arrow, chart.right_visible_bar_time, close) line.set_color(arrow, arrowColor) // Draw percentage label once, then modify it. var label percentage = label.new(na, na, na, xloc.bar_time, yloc.price, #00000000, label.style_label_down, size = size.huge) int midTime = int(math.avg(chart.left_visible_bar_time, chart.right_visible_bar_time)) label.set_xy(percentage, midTime, math.avg(chartOpen, close)) label.set_text(percentage, str.tostring((close - chartOpen) / chartOpen * 100, format.percent)) label.set_textcolor(percentage, arrowColor)
Обратите внимание, что скрипты, использующие новые переменные, будут перевыполняться чаще, чем обычные. Поэтому необходимо соблюдать осторожность, использовать эффективный код и упрощать вычисления, если вы хотите сохранить обычную отзывчивость графиков TradingView.
Мы опубликовали индикатор Chart VWAP в качестве примера того, как можно использовать новые переменные. Он автоматически закрепляется на видимых барах:
Также в учётной записи PineCoders была опубликована библиотека VisibleChart, чтобы помочь программистам Pine Script® в использовании этих нововведений.
Чтобы быть в курсе новых функций Pine Script®, следите за примечаниями к выпуску Руководства пользователя (Release notes). Аккаунт PineCoders также сообщает об обновлениях через свой канал Squawk Box в Telegram, аккаунт в Twitter и публичный чат Вопросы и ответы Pine Script® на TradingView.
Мы надеемся, что вы найдете эти обновления полезными. Пожалуйста, продолжайте присылать нам свои отзывы и предложения по улучшению. Мы создаем TradingView для вас, и мы всегда рады получить от вас весточку.