В Pine-таблицах теперь можно объединять ячейки и добавлять всплывающие подсказки

18 мар, 2022

Прошёл уже почти год с тех пор, как мы добавили в Pine Script™ таблицы, и за это время они приобрели широкую популярность среди Pine-программистов. Сегодня мы расширяем возможности таблиц, добавляя две долгожданные функции: объединение ячеек и всплывающие подсказки.

Заголовки и объединение ячеек

Pine теперь позволяет объединить несколько ячеек в таблице в одну, чтобы создавать заголовки и разделители. Впрочем, объединенная ячейка не обязательно должна быть заголовком, объединять их можно в любом направлении, главное чтобы:

  • итоговая ячейка не затрагивала другие уже объединенные ячейки;
  • и не выходила за пределы таблицы.

Для создания объединенной ячейки, используйте новую функцию table.merge_cells(). Правила просты: функции нужно передать координаты первой и последней ячейки из тех, которые нужно объединить. Всё, что находится между ними, и будет объединено. Размер итоговой ячейки автоматически определяется размерами соседних строк и столбцов.

В приведенном ниже примере скрипта можно увидеть три объединенных ячейки: первая создаёт заголовок таблицы, группируя все ячейки в строке 0, и содержит текст «SMA Table», две другие создают подзаголовки.

//@version=5
indicator("MA Ratings", overlay = true)

TRANSP = 80
TABLE_WIDTH = 6
var CELL_TOOLTIP = "Cell color depends on the SMA direction: green for rising SMAs, red for falling ones"

var smaLengths = array.from(10, 20, 50, 100, 200, 500)

smaValues = array.new_float()
for i = 0 to array.size(smaLengths) - 1
    array.push(smaValues, ta.sma(close, array.get(smaLengths, i)))

var maTable = table.new(position.top_right, TABLE_WIDTH, 4, border_width = 2)

if barstate.isfirst
    headerColor = color.new(color.blue, TRANSP)
    table.cell(maTable, 0, 0, text = "SMA Table", bgcolor = headerColor)
    table.cell(maTable, 0, 1, text = "Short-term", bgcolor = headerColor)
    table.cell(maTable, 2, 1, text = "Long-term", bgcolor = headerColor)
    table.merge_cells(maTable, 0, 0, 5, 0)
    table.merge_cells(maTable, 0, 1, 1, 1)
    table.merge_cells(maTable, 2, 1, 5, 1)

if barstate.islast
    for i = 0 to TABLE_WIDTH - 1
        cellTitle = str.format("SMA {0}", array.get(smaLengths, i))
        cellValue = array.get(smaValues, i)
        cellColor = color.new(array.get(smaValues, i) >= array.get(smaValues[1], i) ? color.green : color.red, TRANSP)
        table.cell(maTable, i, 2, bgcolor = cellColor, text = cellTitle, text_color = color.gray, tooltip = CELL_TOOLTIP)
        table.cell(maTable, i, 3, bgcolor = cellColor, text = str.tostring(cellValue,  format.mintick), tooltip = CELL_TOOLTIP)

Всплывающие подсказки

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

Для создания ячейки с всплывающей подсказкой, просто передайте строку в новый аргумент tooltip функции table.cell(). Всплывающие подсказки можно увидеть в действии на примере нашего скрипта выше: мы используем tooltip = CELL_TOOLTIP в вызове table.cell() в последних двух строках. Подсказки будут выглядеть так:

Чтобы быть в курсе всех нововведений Pine, смотрите раздел Release notes нашего руководства пользователя Pine. Наши разработчики из команды PineCoders также сообщают об обновлениях в Telegram канале Squawk Box, в Twitter и в публичном чате Pine Script на TradingView.

Мы надеемся, что этот функционал окажется вам полезным. Пожалуйста, продолжайте оставлять нам свои отзывы и предложения по улучшению. Мы создаем TradingView для вас, и всегда рады услышать ваше мнение.

Look first Then leap

Мы создали TradingView, чтобы вы могли пользоваться самыми крутыми функциями.
Открыть график