Die Matrizen sind in Pine Script™ angekommen.

Apr 5, 2022

Quants können jetzt Matrizen in ihren Skripten verwenden! Sie sind als neues Objekt mit einem eigenen Namensraum und einem kompletten Satz von 49 begleitenden Funktionen implementiert, die es Ihnen ermöglichen, sie zu erstellen und zu ändern und allgemeine Matrixalgebra durchzuführen.

Matrixbezogene Funktionen befinden sich in dem matrix.* namespace. Eine einfache Matrix kann erstellt werden, indem Sie die Funktion matrix.new<type>(rows, columns, initial_value) verwenden, z.B.:

// erstellt eine 2x3 (2 Reihen x 3 Spalten) "int" matrix mit dem Wert null.
m = matrix.new<int>(2, 3, 0)

Sie können eine Matrix füllen, indem Sie die Funktion matrix.set() aufrufen, um den Wert bestimmter Elemente zu setzen, oder über die Funktion matrix.fill() um die gesamte Matrix mit einem Wert zu füllen. Matrizen unterstützen alle Pine-Typen. Alle Elemente in der Matrix müssen vom selben Typ sein, der über die neuen Typvorlagen (ein Typname in “<>” Klammern) in dem matrix.new<type>() Befehl angegeben wird. Die Funktionen der Matrixalgebra sind nur für die numerischen Typen „int“ und „float“ verfügbar; andere Operationen sind für alle Matrixtypen zulässig.

Matrix functions

matrix.new<type> Erzeugt ein neues Matrix-Objekt. Eine Matrix ist eine zweidimensionale Datenstruktur mit Zeilen und Spalten. Alle Elemente in der Matrix müssen vom Typ sein, der in der Typvorlage (“<type>”).
matrix.row() Erzeugt ein eindimensionales Array aus den Elementen einer Matrixzeile.
matrix.col() Erzeugt ein eindimensionales Array aus den Elementen einer Matrixspalte.
matrix.get() Ermittelt das Element mit dem angegebenen Index der Matrix.
matrix.set() Weist dem Element mit dem column– und row-Index der Matrix einen value zu.
matrix.rows() Ermittelt die Anzahl der Zeilen in der Matrix.
matrix.columns() Ermittelt die Anzahl der Spalten in der Matrix.
matrix.elements_count() Ermittelt die Gesamtzahl der Matrixelemente.
matrix.add_row() Fügt der Matrix eine Zeile hinzu. Die Zeile kann aus na-Werten bestehen, oder es kann ein Array verwendet werden, um Werte bereitzustellen.
matrix.add_col() Fügt der Matrix eine Spalte hinzu. Die Spalte kann aus na-Werten bestehen, oder es kann ein Array verwendet werden, um Werte bereitzustellen.
matrix.remove_row() Entfernt die Zeile der Matrix und gibt ein Array mit den Werten der entfernten Zeile zurück.
matrix.remove_col() Entfernt die Spalte der Matrix und gibt ein Array mit den Werten der entfernten Spalte zurück.
matrix.swap_rows() Vertauscht die Zeilen in der Matrix.
matrix.swap_columns() Vertauscht die Spalten in der Matrix.
matrix.fill() Füllt einen rechteckigen Bereich innerhalb der Matrix mit einem value, der durch die Indizes from_column zu to_column (ohne diese mit einzubeziehen) und from_row zu to_row (ohne diese mit einzubeziehen) definiert wird. 
matrix.copy() Erzeugt eine neue Matrix, die eine Kopie des Originals ist.
matrix.submatrix() Extrahiert eine Submatrix innerhalb der angegebenen Indizes.
matrix.reverse() Kehrt die Reihenfolge der Zeilen und Spalten in der Matrix um. Die erste Zeile und die erste Spalte werden zu den letzten und die letzten zu den ersten.
matrix.reshape() Baut die Matrix in den Dimensionen rows x cols neu auf.
matrix.concat() Eine Matrix an eine andere anhängen.
matrix.sum() Ermittelt eine neue Matrix, die sich aus der Summe von zwei Matrizen oder einer Matrix und einem Skalar (einem numerischen Wert) ergibt.
matrix.diff() Ermittelt eine neue Matrix aus der Subtraktion zwischen Matrizen oder einer Matrix und einem Skalar (einem numerischen Wert).
matrix.mult() Ermittelt eine neue Matrix, die sich aus dem Produkt zwischen den Matrizen oder zwischen einer Matrix und einem Skalar (einem numerischen Wert) oder zwischen einer Matrix und einem Vektor (einem Array von Werten) ergibt.
matrix.sort() Ordnet die Zeilen in der id-Matrix entsprechend der sortierten Reihenfolge der Werte in der column neu an.
matrix.avg() Berechnet den Durchschnitt aller Elemente in der Matrix.
matrix.max() Gibt den größten Wert aus den Matrixelementen zurück.
matrix.min() Gibt den kleinsten Wert aus den Matrixelementen zurück.
matrix.median() Berechnet den Median („den mittleren“ Wert) der Matrixelemente.
matrix.mode() Berechnet den Modus der Matrix, d.h. den am häufigsten vorkommenden Wert der Matrixelemente. Wenn es mehrere gleich häufig vorkommende Werte gibt, ermittelt die Funktion den kleinsten dieser Werte.
matrix.pow() Berechnet das Produkt der Matrix mit sich selbst mal power.
matrix.det() Ermittelt den Determinant einer quadratischen Matrix.
matrix.transpose() Erzeugt eine neue, transponierte Version der Matrix, indem die Zeilen- und Spaltenindizes der einzelnen Elemente vertauscht werden.
matrix.pinv() Ermittelt die pseudoinverse einer Matrix.
matrix.inv() Ermittelt die inverse einer quadratischen Matrix.
matrix.rank() Berechnet den Rang der Matrix.
matrix.trace() Berechnet die Spur einer Matrix (die Summe der Elemente der Hauptdiagonale).
matrix.eigenvalues() Ermittelt ein Array mit den Eigenwert einer quadratischen Matrix.
matrix.eigenvectors() Ermittelt eine Matrix von Eigenvektors, bei der jede Spalte ein Eigenvektor der Matrix ist.
matrix.kron() Gibt das Kronecker-Produkt für die beiden Matrizen zurück.
matrix.is_zero() Bestimmt, ob alle Elemente der Matrix Null sind.
matrix.is_identity() Bestimmt, ob eine Matrix eine Einheits-Matrix ist (Elemente mit Einsen auf der Hauptdiagonale und Nullen anderswo).
matrix.is_binary() Bestimmt, ob die Matrix binär ist (wenn alle Elemente der Matrix 0 oder 1 sind).
matrix.is_symmetric() Bestimmt, ob eine quadratische Matrix ​​symmetrisch ist (Elemente sind symmetrisch in Bezug auf die Hauptdiagonale).
matrix.is_antisymmetric() Bestimmt, ob eine Matrix schiefsymmetrische ist (ihre Transponierung ist gleich ihrem Negativ).
matrix.is_diagonal() Bestimmt, ob die Matrix ​​diagonal ist (alle Elemente außerhalb der Hauptdiagonale sind Null).
matrix.is_antidiagonal() Bestimmt, ob die Matrix anti​​diagonal ist (alle Elemente außerhalb der sekundären Diagonale sind Null).
matrix.is_triangular() Bestimmt, ob es eine Dreiecksmatrix ist (wenn alle Elemente über oder unter der Hauptdiagonale Null sind).
matrix.is_stochastic() Bestimmt, ob es sich um eine Übergangsmatrix handelt.
matrix.is_square() Bestimmt, ob es sich um eine sEinheitsmatrixquare handelt (sie hat die gleiche Anzahl von Zeilen und Spalten).

Einige bestehende Funktionen unterstützen jetzt auch Matrizen: Mit der for…in-Struktur können Sie Matrixzeilen durchlaufen und als Arrays verwenden, str.tostring() wandelt eine Matrix zur Anzeige in ihre String-Darstellung um.

In dem folgenden Beispiel erstellen wir eine Matrix und sortieren ihre Elemente in aufsteigender Reihenfolge der Werte der ersten Spalte. Anschließend zeigen wir die Matrix in einer Tabelle an:

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

// Erstellen Sie eine 2x2-Matrix mit 'na'-Werten. 
m1 = matrix.new<float>(2, 2, na)


// Setzt Werte für die Elemente der Matrix. Das erste Argument ist das zuvor erstellte Matrixobjekt, das zweite ist ein Zeilenindex (er beginnt bei 0 für die erste Zeile), das dritte ist ein Spaltenindex (er beginnt bei 0 für die erste Spalte). Das letzte Argument ist der zu setzende Wert. matrix.set(m1, 0, 0, 3)
matrix.set(m1, 0, 1, 4)
matrix.set(m1, 1, 0, 1)
matrix.set(m1, 1, 1, 2)

// Kopieren Sie die Matrix, um eine neue Matrix zu erstellen.
m2 = matrix.copy(m1)

// Sortiert die Zeilen der `m2`-Matrix basierend auf den Werten der ersten Spalte in aufsteigender Reihenfolge. 
matrix.sort(m2, 0, order.ascending)


// Zeigt die Elemente der Matrix in der Tabelle an.
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))

Die folgenden Veröffentlichungen sind Beispiele für Skripte, die von den PineCodern, die uns beim Testen neuer Pine Script™-Funktionen helfen, auf TradingView veröffentlicht wurden:

Die “Function Polynomial Fit” Bibliothek von RicardoSantos 

Führt eine polynomielle Regression zur Anpassung an Daten durch. In der Statistik ist die polynomiale Regression eine Form der Regressionsanalyse, bei der die Beziehung zwischen der unabhängigen Variable x und der abhängigen Variable y als Polynom nth Grades in x modelliert wird.

Die “Ordinary Least Squares” Bibliothek von lejmer

Eine der gängigsten Methoden zur Schätzung der Koeffizienten für eine lineare Regression ist die Methode der gewöhnlichen kleinsten Quadrate (OLS). Diese Implementierung kann verwendet werden, um eine lineare Regression mehrerer unabhängiger Variablen auf eine abhängige Variable anzupassen, solange die Annahmen hinter OLS zutreffen.

Die “Discounted Price Probability” von HeWhoMustNotBeNamed

Das Skript vergleicht die historische Korrelation von Kurs und Fundamentaldaten und definiert die Wahrscheinlichkeit einer Unterbewertung.

Wir hoffen, dass Sie diese vielfach nachgefragte Funktion nützlich finden. Bitte senden Sie uns weiterhin Ihr Feedback und Ihre Verbesserungsvorschläge. Wir entwickeln TradingView für Sie, und sind deshalb immer daran interessiert, von Ihnen zu hören.

Um über neue Pine-Funktionen auf dem Laufenden zu bleiben, sollten Sie die Versionshinweise in unserem Pine-Benutzerhandbuch im Auge behalten. Der PineCoders Account sendet auch regelmäßig Updates über die  Squawk Box auf Telegram, dem Twitter account, und dem öffentlichen Pine Script-Chat auf TradingView.

Look first Then leap

TradingView wurde für Sie entwickelt. Stellen Sie sicher, dass Sie unsere fantastischen Features optimal nutzen
Chart öffnen