Мы добавили новый функционал в 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 для вас, и нам важно знать, что вы думаете.