In the world of trading algorithms and technical analysis, Pine Script has become a pivotal tool for creating custom indicators and strategies. Today, we’re delving into a particularly advanced feature: matrix.eigenvectors()
.
Syntax
The matrix.eigenvectors()
function is designed to return a matrix of eigenvectors, where each column represents an eigenvector of the input matrix. Pine Script supports this function in two formats, catering to matrices of integers and floating-point numbers:
matrix.eigenvectors(id) → matrix<float>
matrix.eigenvectors(id) → matrix<int>
Arguments:
id
(matrix<int/float>
): This argument takes a matrix object, which can be either integer or floating-point type, depending on your specific needs.
Example
Let’s dive into a practical example to understand how matrix.eigenvectors()
is used in Pine Script:
//@version=5 indicator("`matrix.eigenvectors()` Example") // Execute this code only once for efficiency. if barstate.islastconfirmedhistory // Create a 2x2 integer matrix var m1 = matrix.new<int>(2, 2, 1) // Populate the matrix with specific values. matrix.set(m1, 0, 0, 2) matrix.set(m1, 0, 1, 4) matrix.set(m1, 1, 0, 6) matrix.set(m1, 1, 1, 8) // Obtain the eigenvectors of the matrix. m2 = matrix.eigenvectors(m1) // Display the original matrix and its eigenvectors. var t = table.new(position.top_right, 2, 2, color.green) table.cell(t, 0, 0, "Matrix Elements:") table.cell(t, 0, 1, str.tostring(m1)) table.cell(t, 1, 0, "Matrix Eigenvectors:") table.cell(t, 1, 1, str.tostring(m2))
Walkthrough
- Version Declaration: The script starts with
//@version=5
, indicating it uses version 5 of Pine Script, which supports matrices and other advanced features. - Indicator Declaration: The
indicator()
function is used to declare a new indicator script titled “matrix.eigenvectors()
Example”. This title appears in the TradingView indicators list and on the chart. - Efficiency Check: The
if barstate.islastconfirmedhistory
condition ensures that the matrix calculations and the subsequent operations are executed only once, specifically on the last historical bar of the chart. This is done to optimize performance, as calculating eigenvectors can be computationally intensive. - Matrix Creation: A 2×2 integer matrix
m1
is initialized with all elements set to 1, using thematrix.new<int>(2, 2, 1)
function. This creates a variable matrix of integers with dimensions 2×2. - Matrix Population: The
matrix.set()
function is used four times to populatem1
with specific values, replacing the initial values. The matrix is filled as follows:- Top-left element (0,0) is set to 2.
- Top-right element (0,1) is set to 4.
- Bottom-left element (1,0) is set to 6.
- Bottom-right element (1,1) is set to 8.
- Eigenvectors Calculation: The eigenvectors of the matrix
m1
are calculated using thematrix.eigenvectors(m1)
function. The result is stored in a new matrixm2
. - Display Setup: A table
t
is created and positioned at the top right of the chart with 2 columns and 2 rows, usingtable.new(position.top_right, 2, 2, color.green)
. This table is used to display the matrix and its eigenvectors. - Displaying Information:
- The first cell in the top row of the table is labeled “Matrix Elements:”, serving as a header for displaying the original matrix
m1
. - The second cell in the top row displays the string representation of
m1
, usingstr.tostring(m1)
. - The first cell in the second row is labeled “Matrix Eigenvectors:”, serving as a header for displaying the eigenvectors matrix
m2
. - The second cell in the second row displays the string representation of
m2
, usingstr.tostring(m2)
.
- The first cell in the top row of the table is labeled “Matrix Elements:”, serving as a header for displaying the original matrix
Key Features and Takeaways
- Function Usability:
matrix.eigenvectors()
is versatile, supporting matrices of both integer and float types, making it suitable for a wide range of mathematical and financial calculations in Pine Script. - Syntax and Application: The function simplifies complex mathematical operations, allowing traders and developers to incorporate advanced mathematical concepts like eigenvectors into their custom indicators and strategies.
- Practical Use Case: Understanding and utilizing eigenvectors can be crucial for strategies that involve multivariate data analysis or optimization problems, enhancing the sophistication and effectiveness of trading algorithms.