Мы добавили новый функционал в Pine Script®: теперь вы можете рисовать произвольные фигуры с помощью объекта polyline. Создавайте открытые и закрытые фигуры с помощью полилиний, настраивайте параметры линий и заливки и делайте свой анализ уникальным.
Объекты polyline создаются с помощью массива точек с координатами, новых объектов chart.point, где X-координаты могут быть выражены как время или индекс бара, а Y-координаты — с помощью цены. Как только массив точек собран, он может быть использован для создания объекта polyline с помощью функции polyline.new().
Давайте посмотрим на скрипт ниже. Он использует аргументы, чтобы определить пять точек на графике и создать из них произвольную фигуру:
//@version=5
indicator("Polylines example", overlay = true)
//@variable If `true`, uses curved lines to connect the points.
bool curvedInput = input.bool(false, "Curved polyline")
//@variable If `true`, connects the polylines first and last points.
bool closedInput = input.bool(true, "Closed polyline")
//@variable The color of the space filled by the polyline.
color fillcolor = input.color(color.new(color.blue, 90), "Fill Color")
// Time and price inputs for the polyline's points.
p1x = input.time(0, "p1", confirm = true, inline = "p1")
p1y = input.price(0, " ", confirm = true, inline = "p1")
p2x = input.time(0, "p2", confirm = true, inline = "p2")
p2y = input.price(0, " ", confirm = true, inline = "p2")
p3x = input.time(0, "p3", confirm = true, inline = "p3")
p3y = input.price(0, " ", confirm = true, inline = "p3")
p4x = input.time(0, "p4", confirm = true, inline = "p4")
p4y = input.price(0, " ", confirm = true, inline = "p4")
p5x = input.time(0, "p5", confirm = true, inline = "p5")
p5y = input.price(0, " ", confirm = true, inline = "p5")
// Draw only once on the last historical bar, so the script runs faster.
if barstate.islastconfirmedhistory
//@variable An array of `chart.point` objects for the polyline.
var points = array.new<chart.point>()
// Add the user-defined points to the `points` array.
points.push(chart.point.from_time(p1x, p1y))
points.push(chart.point.from_time(p2x, p2y))
points.push(chart.point.from_time(p3x, p3y))
points.push(chart.point.from_time(p4x, p4y))
points.push(chart.point.from_time(p5x, p5y))
// Create a new polyline from the `points` array.
polyline.new(points, curved = curvedInput, closed = closedInput, fill_color = fillcolor, xloc = xloc.bar_time)
// Display the name of each point on the chart.
for [pointNo, point] in points
label.new(point, text = "p" + str.tostring(pointNo + 1), xloc = xloc.bar_time, color = na, textcolor = chart.fg_color)

Создавать полилинии и точки на графике позволяют два набора новых функций, chart.point и polyline.
Функции для создания точек:
- chart.point.new(): создаёт объект chart.point на основе переданных времени, индекса бара и цены.
- chart.point.from_index(): создаёт объект chart.point на основе переданных индекса бара и цены.
- chart.point.from_time(): создаёт объект chart.point на основе переданных времени бара и цены.
- chart.point.now(): создаёт объект chart.point на основе времени текущего бара и переданной цены.
- chart.point.copy(): создаёт копию переданного объекта chart.point.
Функции для создания полилиний:
- polyline.new(): создаёт новый объект polyline и отображает фигуру на графике, последовательно соединяя все точки в массиве points линиями.
- polyline.delete(): удаляет указанный объект polyline и соответствующую фигуру с графика.
- polyline.all: возвращает массив со всеми объектами polyline, созданными скриптом на графике.
Количество объектов на графике настраивается параметром max_polylines_count функций indicator() и strategy(). Значение по умолчанию равно 50, а максимальное количество — 100.
В Руководстве пользователя Pine есть новый раздел, который поможет вам лучше понять, как работают полилинии.
В публикациях из скриптов сообщества ниже можно увидеть примеры работы с полилиниями.
Индикатор Volume Profile with a few polylines от Fikira

Индикатор Zig-Zag Volume Profile от KioseffTrading

Индикатор RSI Radar Multi Time Frame от LonesomeTheBlue

Индикатор MA Sabres [LuxAlgo] от LuxAlgo

Чтобы быть в курсе новых возможностей Pine Script®, следите за разделом Информация о релизах. Учётная запись PineCoders также транслирует обновления в канале Squawk Box в Telegram, в Twitter и в публичном чате Pine Script® Q&A на TradingView.
Мы надеемся, это обновление будет вам полезно. Обязательно делитесь с нами своими отзывами и предложениями — мы делаем TradingView для вас, и нам важно знать, что вы думаете.