Les matrices viennent à Pine Script™

Apr 5, 2022

Les quants peuvent désormais utiliser des matrices dans leurs scripts! Elles sont implémentées en tant que nouvel objet avec un espace de noms dédié et un ensemble complet de 49 fonctions d’accompagnement qui vous permettent de les créer et de les modifier, et d’effectuer l’algèbre matricielle courante.

Les fonctions liées aux matrices se trouvent dans l’espace de noms matrix.*. Une matrice simple peut être créée en appelant la fonction matrix.new<type>(rows, columns, initial_value), par ex:

// Creates a 2x3 (2 rows x 3 columns) "int" matrix with values zero.
m = matrix.new<int>(2, 3, 0)

Vous pouvez remplir une matrice en appelant la fonction matrix.set() pour définir la valeur d’éléments spécifiques, ou via la fonction matrix.fill() pour remplir la matrice entière avec une valeur. Les matrices prennent en charge tous les types de Pine. Tous les éléments de la matrice doivent être du même type, qui est spécifié en utilisant les nouveaux modèles de type (un nom de type entre parenthèses « <> ») dans l’appel matrix.new<type>() . Les fonctions d’algèbre matricielle ne sont disponibles que pour les types numériques « int » et « float » ; les autres opérations sont autorisées sur tous les types de matrice.

Fonctions matricielles

matrix.new<type> Crée un nouvel objet matrice. Une matrice est une structure de données bidimensionnelle contenant des lignes et des colonnes. Tous les éléments de la matrice doivent être du type spécifié dans le modèle de type (« <type> »).
matrix.row() Crée un tableau unidimensionnel à partir des éléments d’une ligne de la matrice.
matrix.col() Crée un tableau unidimensionnel à partir des éléments d’une colonne de la matrice.
matrix.get() Renvoie l’élément avec l’indice spécifié de la matrice.
matrix.set() Attribue une value à l’élément à l’indice column et row de la matrice.
matrix.rows() Renvoie le nombre de lignes de la matrice.
matrix.columns() Renvoie le nombre de colonnes de la matrice.
matrix.elements_count() Renvoie le nombre total d’éléments de la matrice.
matrix.add_row() Ajoute une ligne à la matrice. La ligne peut consister en des valeurs na, ou un tableau peut être utilisé pour fournir des valeurs.
matrix.add_col() Ajoute une colonne à la matrice. La colonne peut être constituée de valeurs na, ou un tableau peut être utilisé pour fournir des valeurs.
matrix.remove_row() Supprime la ligne de la matrice et renvoie un tableau contenant les valeurs de la ligne supprimée.
matrix.remove_col() Supprime la colonne de la matrice et renvoie un tableau contenant les valeurs de la colonne supprimée.
matrix.swap_rows() Intervertit les lignes de la matrice.
matrix.swap_columns() Intervertit les colonnes de la matrice.
matrix.fill() Remplit une zone rectangulaire de la matrice définie par les indices from_column to to_column (non compris) et from_row to to_row (non compris) avec la value.
matrix.copy() Crée une nouvelle matrice qui est une copie de l’original.
matrix.submatrix() Extrait une sous-matrice dans les indices spécifiés.
matrix.reverse() Inverse l’ordre des lignes et des colonnes dans la matrice. La première ligne et la première colonne deviennent les dernières, et les dernières deviennent les premières.
matrix.reshape() Reconstruit la matrice aux dimensions rows x cols.
matrix.concat() Ajouter une matrice à une autre.
matrix.sum() Renvoie une nouvelle matrice résultant de la somme de deux matrices, ou d’une matrice et d’un scalaire (une valeur numérique).
matrix.diff() Renvoie une nouvelle matrice résultant de la soustraction entre matrices, ou de la matrice et d’un scalaire (une valeur numérique).
matrix.mult() Renvoie une nouvelle matrice résultant du produit entre les matrices, ou entre une matrice et un scalaire (une valeur numérique), ou entre une matrice et un vecteur (un tableau de valeurs).
matrix.sort() Réorganise les lignes de la matrice id en suivant l’ordre de tri des valeurs dans la column.
matrix.avg() Calcule la moyenne de tous les éléments de la matrice.
matrix.max() Renvoie la plus grande valeur des éléments de la matrice.
matrix.min() Renvoie la plus petite valeur parmi les éléments de la matrice.
matrix.median() Calcule la médiane (la valeur « moyenne ») des éléments de la matrice. 
matrix.mode() Calcule le mode de la matrice, qui est la valeur la plus fréquente parmi les éléments de la matrice. Lorsque plusieurs valeurs sont aussi fréquentes, la fonction renvoie la plus petite de ces valeurs.
matrix.pow() Calcule le produit de la matrice par elle-même power fois.
matrix.det() Renvoie le determinant d’une matrice carrée.
matrix.transpose() Crée une nouvelle version transposée de la matrice en interchangeant l’indice de ligne et de colonne de chaque élément. 
matrix.pinv() Renvoie le pseudo-inverse d’une matrice.
matrix.inv() Renvoie l’inverse d’une matrice carrée.
matrix.rank() Calcule le rang de la matrice.
matrix.trace() Calcule la trace d’une matrice (la somme des éléments de la diagonale principale).
matrix.eigenvalues() Renvoie un tableau contenant les valeurs propres d’une matrice carrée.
matrix.eigenvectors() Renvoie une matrice de vecteurs propres, dans laquelle chaque colonne est un vecteur propre de la matrice.
matrix.kron() Renvoie le produit de Kronecker pour les deux matrices.
matrix.is_zero() Détermine si tous les éléments de la matrice sont nuls.
matrix.is_identity()  Détermine si une matrice est une matrice d’identité (éléments avec des uns sur la diagonale principale et des zéros ailleurs).
matrix.is_binary() Détermine si la matrice est binaire (lorsque tous les éléments de la matrice sont 0 ou 1).
matrix.is_symmetric() Détermine si une matrice carrée est symétrique (les éléments sont symétriques par rapport à la diagonale principale).
matrix.is_antisymmetric() Détermine si une matrice est antisymétrique (sa transposition est égale à son négatif).
matrix.is_diagonal() Détermine si la matrice est diagonale (tous les éléments en dehors de la diagonale principale sont nuls).
matrix.is_antidiagonal() Détermine si la matrice est anti-diagonale (tous les éléments en dehors de la diagonale secondaire sont nuls).
matrix.is_triangular() Détermine si la matrice est triangulaire (si tous les éléments au-dessus ou au-dessous de la diagonale principale sont nuls).
matrix.is_stochastic() Détermine si la matrice est stochastique.
matrix.is_square() Détermine si la matrice est carrée (elle a le même nombre de lignes et de colonnes).

Certaines fonctions existantes prennent également en charge les matrices : la structure for…in vous permet de parcourir les lignes de la matrice et de les utiliser comme des tableaux, str.tostring() convertit une matrice en sa représentation sous forme de chaîne de caractères pour l’affichage.

Dans l’exemple ci-dessous, nous créons une matrice et trions ses éléments dans l’ordre croissant des valeurs de la première colonne. Nous affichons ensuite la matrice dans un tableau :

//@version=5
indicator("Matrix Example", overlay = true)

// Create a 2x2 matrix with ‘na’ values. 
m1 = matrix.new<float>(2, 2, na)


// Set values to the matrix’s elements. First argument is the matrix object we created before, second is a row index (it starts from 0 for the first row), third is a column index (it starts from 0 for the first column). Last argument is the value to set.
matrix.set(m1, 0, 0, 3)
matrix.set(m1, 0, 1, 4)
matrix.set(m1, 1, 0, 1)
matrix.set(m1, 1, 1, 2)

// Copy the matrix to create a new one.
m2 = matrix.copy(m1)

// Sort rows of the `m2` matrix based on the values of the first column, in ascending order. 
matrix.sort(m2, 0, order.ascending)


// Display the matrix’s elements in the table.
var t = table.new(position.top_right, 2, 2, color.green)
if barstate.islastconfirmedhistory
    table.cell(t, 0, 0, "Original Matrix:")
    table.cell(t, 0, 1, str.tostring(m1))
    table.cell(t, 1, 0, "Sorted Matrix:")
    table.cell(t, 1, 1, str.tostring(m2))

Les publications suivantes sont des exemples de scripts publiés sur TradingView par les PineCoders qui nous aident à tester les nouvelles fonctionnalités de Pine Script™ :

La bibliothèque « Function Polynomial Fit » par RicardoSantos.

 

Effectue un ajustement de la régression polynomiale aux données. En statistiques, la régression polynomiale est une forme d’analyse de régression dans laquelle la relation entre la variable indépendante x et la variable dépendante y est modélisée comme un polynôme de énième degré en x.

La bibliothèque « Ordinary Least Squares » par lejmer

L’une des méthodes les plus courantes pour estimer les coefficients d’une régression linéaire consiste à utiliser la méthode des moindres carrés ordinaires (MCO). Cette mise en œuvre peut être utilisée pour ajuster une régression linéaire de plusieurs variables indépendantes sur une variable dépendante, tant que les hypothèses sous-jacentes aux MCO sont valables.

La « Discounted Price Probability » par HeWhoMustNotBeNamed

Le script compare la corrélation historique entre le prix et les fondamentaux et définit la probabilité d’être sous-évalué.

Nous espérons que vous trouverez cette fonctionnalité très demandée utile. Continuez à nous envoyer vos commentaires et vos suggestions d’amélioration. Nous construisons TradingView pour vous, et nous sommes toujours heureux d’avoir de vos nouvelles.

Pour rester informés des nouvelles fonctionnalités de Pine, gardez un œil sur les notes de publication de notre manuel d’utilisation de Pine. Le compte PineCoders diffuse également des mises à jour depuis sa Squawk Box sur Telegram, son compte Twitter et le chat public Pine Script sur TradingView.

Look first Then leap

TradingView est conçu pour vous, assurez-vous donc de profiter au maximum de nos fonctionnalités exceptionnelles
Ouvrir le graphique