Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
907
Rating:
(41)
Veröffentlicht:
2016.05.10 08:31
\MQL5\Include\
incmatrix.mqh (29.22 KB) ansehen
smatrix.mq5 (2.18 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Klasse für die Arbeit mit Matrizen.

Eine Matrix wird mittels eines eindimensionalem Arrays erzeugt, beginnend mit dem ersten Element der ersten Zeile, dann dem zweiten und so weiter. Die beiden letzten Elemente definieren die Größe der Matrix: der Zeilen und Spalten.

Beispiel:

double m[]={1,2,3,
           4,5,6,
           2,3}; // Eine Matrix mit 2 Zeilen und 3 Spalten.

Methoden der Klasse:

Funktion Beschreibung der Funktion und Parameter

void SetSize(
  double& aA[],
  int aRows,
  int aCols
)

Bestimmt die Größe der Matrix aA. aRows - Anzahl der Zeilen, aCols - Anzahl der Spalten.

void SetValue(
  double& aA[],
  int aRow,
  int aCol,
  double aValue
)

Setzt der Wert eines Elements einer Matrix (aA) an der Stelle Zeile aRow und Spalte aCol.

int GetSize(
  double& aA[],
  int& aRows,
  int& aCols
)

Liefert die Anzahl der Elemente der Matrix aA. Per Verweis zurückgegeben: aRows - Anzahl der Zeilen, aCols - Anzahl der Spalten.

int GetRows(
  double& aA[]
)

Liefert die Anzahl der Zeilen der Matrix aA.

int GetCols(
  double& aA[]
)

Liefert die Anzahl der Spalten der Matrix aA.

double GetValue(
  double& aA[],
  int aRow,
  int aCol
)

Liefert den Wert eines Elements einer Matrix (aA) an der Stelle Zeile aRow und Spalte aCol..

void Copy(
  double& aFrom[],
  double& aTo[]
)

Kopiert eine Matrix vom Array aFrom nach Array aTo.

bool CheckForAdd(
  double& aA[],
  double& aB[]
)

Überprüft, ob zwei Matrizen der Größe nach für die Addition (komplett gleich in Zeilen und Spalten) entsprechen.

bool CheckForMult(
  double& aA[],
  double& aB[]
)

Überprüft, ob sich zwei Matrizen größenmäßig für die Multiplikation eignen (Anzahl der Spalten in der Matrix aA gleicht der Anzahl der Spalten in der Matrix aB).

bool CheckIsSq(
  double& aA[]
)

Überprüft, ob die Matrix aA quadratisch ist.

void AddNum(
  double& aA[],
  double aNum,
  double& aR[]
)

Addiert die Zahl aNum zur Matrix aA. Resultierende Matrix wird als Verweis auf den Array aR zurückgegeben.

void MultNum(
  double& aA[],
  double aNum,
  double& aR[]
)

Multipliziert Matrix aA mit der Zahl aNum. Resultierende Matrix wird als Verweis auf den Array aR zurückgegeben.

void AddMx(
  double& aA[],
  double& aB[],
  double& aAB[]
)

Addiert Matrix aA zur Matrix aB. Resultierende Matrix wird als Verweis auf den Array aAB zurückgegeben.

void MultMx(
  double& aA[],
  double& aB[],
  double& aAB[])

Multipliziert Matrix aA mit der Matrix aB. Resultierende Matrix wird als Verweis auf den Array aAB zurückgegeben.

void Transpose(
  double& aA[],
  double& aT[]
)

Transponiert Matrix aA. Die transponierte Matrix wird als Verweis auf den Array aT zurückgegeben.

void AlgAdd(
  double& aA[],
  double& aAA[]
)

Berechnet die Adjunkte. aA - Quell-Matrix, aAA - Adjunkte (zurückgegeben als Verweis).

bool Invert(
  double& aA[],
  double& aB[]
)

Liefert die inverse Matrix aR der Matrix aA Verweis. Die Methode liefert True, wenn die Inverse einer Matrix vorhanden ist, bzw. False, wenn die inverse einer Matrix nicht vorhanden ist.

void Triangle(
  double& aA[],
  double& aT[]
)

Liefert die Dreiecksmatrix aT aus der Matrix aA als Verweis.

void Minor(
  double aA[],
  int aRow,
  int aCol,
  double& aM[]
)

Berechnet die Unterdeterminante (Minor) der Matix aA der Zeile aRow und Spalte aCol aA. Der Minor wird als Verweis auf den Array aM zurückgegeben.

double MinorDef(
  double& aA[],
  int aRow,
  int aCol
)

Liefert den Wert der Determinante des Minors der Matrix aA der Zeile aRow und Spalte aCol.

void MinorDefMx(
  double& aA[],
  double& aM[]
)

Liefert die Minor-Matrix (Matrix mit den Werten der Determinanten des jew. Minors). aA - Quell-Matrix, aM - Minor-Matrix der Determinanten (zurückgegeben als Verweis).

double Def(
  double& aA[]
)

Liefert den Wert der Determinante der Matrix aA.

int Rank(
  double& aA[]
)

Liefert den Rang einer Matrix aA.

int RankDRC(
  double& aA[],
  double& aDef,
  int& aRow,
  int& aCol
)

Liefert den Rang einer Matrix aA und, als Verweis:

  • aDef - den Wert der Determinante,
  • aRow - Zeile des Minors mit Determinante ungleich 0
  • aCol - Spalte des Minors mit Determinante ungleich 0

void CopyCol(
  double& aFrom[],
  double& aTo[],
  int aFromCol,
  int aToCol,
  double& aR[]
)

Kopiert die Spalten mit dem Index aFromCol von der Matrix aFrom zur Matrix aTo in die Spalte mit dem Index aToCol. Resultierende Matrix wird als Verweis auf den Array aR zurückgegeben.

void CopyRow(
  double& aFrom[],
  double& aTo[],
  int aFromRow,
  int aToRow,
  double & aR[]
)

Kopiert die Zeile mit dem Index aFromRow von der Matrix aFrom zur Matrix aTo in die Zeile mit dem Index aToRow. Resultierende Matrix wird als Verweis auf den Array aR zurückgegeben.

void AppendCol(
  double& aA[],
  double& aC[],
  double& aF[]
)

Erweitert die Matrix aA um die Spalte aC. Resultierende Matrix wird als Verweis auf den Array aF zurückgegeben.

void AppendRow(
  double& aA[],
  double& aR[],
  double& aF[]
)

Erweitert die Matrix aA um die Zeile aR. Resultierende Matrix wird als Verweis auf den Array aF zurückgegeben.

bool SystemKramer(
  double& aK[],
  double& aY[],
  double& aX[]
)

Löst ein lineares Gleichungssystem mit der Cramerschen Regel.

  • aK - Koeffizientenmatrix (quadratisch),
  • aY - Spalte mit den Werten,
  • aX - Zeile mit den Ergebnissen

bool SystemInverse(
  double& aK[],
  double& aY[],
  double& aX[]
)

Löst ein lineares Gleichungssystem mit der Inversen.

  • aK - Koeffizientenmatrix (quadratisch),
  • aY - Spalte mit den Werten,
  • aX - Zeile mit den Ergebnissen

bool SystemGauss(
  double& aK[],
  double& aY[],
  double& aX[]
)

Löst ein lineares Gleichungssystem mit dem Gaußschem Eliminationsverfahren.

  • aK - Koeffizientenmatrix (quadratisch),
  • aY - Spalte mit den Werten,
  • aX - Zeile mit den Ergebnissen

int SystemCheck(
  double& aK[],
  double& aY[]
)

Überprüft das Gleichungssystem.

  • aK - Koeffizientenmatrix (quadratisch),
  • aY - Spalte mit den Werten.

Rückgabewert:

  • 1 - keine Lösungen,
  • 0 - eine Lösung,
  • 1 - unendlich viele Lösungen

void Alert(
  double& aA[],
  int aDigits=2,
 string aCaption=""
)

Zeigt die ganze Matrix in der Alert-Box.

  • aA - Matrix,
  • aDigits - Anzahl der Kommastellen,
  • aCaption - Nachrichtentitel

void Alert2(
  double& aA[],
  int aDigits=2,
 string aCaption=""
)

Zeigt die Matrix. jeweils Zeile für Zeile, in der Alert-Box, die Zeilen werden von unten nach oben angezeigt, zuletzt der Titel, d.h. der Titel steht an der Spitze und dann die Zeilen in der richtigen Reihenfolge.

void Alert1Str(
  double& aA[],
  int aDigits=2
)

Zeigt den Array der Matrix als Zeichenkette in der Alert-Box.

 


Das Skript sMatrix.mq4 ist ein Beispiel der Verwendung dieser Bibliothek, um ein System von linearen Gleichungen mit Cramerschen Regel, mit der Inversen und mit dem Gaußschen Verfahren zu lösen.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/951

PEMA PEMA

PEMA - Pentupel Exponential Moving Average.

QEMA QEMA

QEMA - Quadrupel exponentieller gleitender Durchschnitt.

CCI T3 CCI T3

Der CCI Indikator geglättet mittels Tilsons Algorithmus.

Die Kursspanne eines Zeitraumes Die Kursspanne eines Zeitraumes

Der Indikator berechnet die Differenz zwischen dem Maximum und dem Minimum einer Anzahl von Bars. Die Anzahl der Bars wird als Parameter des Indikators bestimmt.