Arrays, Matrices, and Maps Containing Objects
In Pine Script™, collections like arrays, matrices, and maps can include objects. This feature allows users to structure their data more intricately and manage complex information efficiently.
Declaring Collections of Objects
To create a collection that holds objects of a user-defined type (UDT), you specify the UDT in the collection’s type template.
Example: Creating an Array of pivotPoint
Objects
Empty Array Declaration:
pivotHighArray = array.new<pivotPoint>()
Explicit Type Declaration:
var array<pivotPoint> pivotHighArray = na pivotHighArray := array.new<pivotPoint>()
Script Example: Detecting High Pivot Points
Let’s create a script that identifies high pivot points, stores them in an array, and then uses that data to draw labels and lines on the chart.
Script Overview
Indicator Declaration:
//@version=5 indicator("Pivot Points High", overlay = true) int legsInput = input(10)
Defining pivotMarker
UDT:
type pivotMarker int entryTime float height
Creating an Empty Array:
var pivotHighArray = array.new<pivotMarker>()
Detecting and Storing Pivots:
pivotHighPrice = ta.pivothigh(legsInput, legsInput) if not na(pivotHighPrice) newMarker = pivotMarker.new(bar_index[legsInput], pivotHighPrice) array.push(pivotHighArray, newMarker)
Drawing Labels and Lines on the Last Historical Bar:
if barstate.islastconfirmedhistory var pivotMarker lastMarker = na for marker in pivotHighArray label.new(marker.entryTime, marker.height, str.tostring(marker.height, format.mintick), xloc.bar_time, textcolor = color.white) if not na(lastMarker) line.new(lastMarker.entryTime, lastMarker.height, marker.entryTime, marker.height, xloc = xloc.bar_time) lastMarker := marker
In this script, an array of pivotMarker
objects (pivotHighArray
) is used to store the time and price of high pivot points detected by ta.pivothigh
. The script then iterates through this array on the last historical bar to draw labels at each pivot point and connect them with lines.
Conclusion and Key Takeaways
- Collections of Objects: Pine Script allows for the creation of arrays, matrices, and maps containing objects, enhancing the script’s data handling capabilities.
- Practical Application: Using collections of objects is beneficial for scripts that need to process and visualize complex or multi-dimensional data.