Вектор — это одномерный массив вещественного или комплексного типа, а матрица — двумерный массив вещественного или комплексного типа. Таким образом, перечень допустимых числовых типов для элементов этих объектов включает double (считается типом по умолчанию), float и complex.
C точки зрения линейной алгебры (но не компилятора!) простое число также является минимальным вектором, а вектор, в свою очередь, можно рассматривать, как частный случай матрицы.
Вектор, в зависимости от типа элементов, описывается с помощью одного из ключевых слов vector (с суффиксом или без):
Хотя векторы бывают вертикальными и горизонтальными, в MQL5 подобное разделение не делается. Необходимая ориентация вектора определяется (подразумевается) местом вектора в выражении.
Над векторами определены операции сложения и умножения, а также введено понятие "Норма" (и соответствующий метод Norm) для получения длины или модуля вектора.
Матрицу можно представить как массив, где первый индекс означает номер строки, а второй индекс — номер столбца. Однако нумерация строк и столбцов, в отличие от линейной алгебры, начинается с нуля, как и в массивах.

Две размерности матриц называются также осями (axes) и нумеруются следующим образом: 0 — горизонтальная ось (вдоль строк), 1 — вертикальная ось (вдоль столбцов). Номера осей используются во многих матричных функциях. В частности, когда мы будем говорить о разбиении матрицы на фрагменты, то разбиение по горизонтали означает "разрез" между (или, если угодно, вдоль) строк, а разбиение по вертикали — разрез между столбцов.
В зависимости от типа элементов, матрица описывается с помощью одного из ключевых слова matrix (с суффиксом или без):
Для применения в шаблонных функциях можно использовать запись matrix<double>, matrix<float>, matrix<complex>, vector<double>, vector<float>, vector<complex> вместо соответствующих типов.
vectorf v_f1 = {0, 1, 2, 3,};
|
При выводе в журнал матрицы и векторы печатаются как последовательности чисел, разделенных запятыми и заключенных в квадратные скобки.
[0,1,2,3]
|
Для матрицы определены следующие алгебраические операции:
Кроме того, типы matrix и vector имеют встроенные методы, которые соответствуют аналогам библиотеки NumPy (популярный пакет для машинного обучения на Python), поэтому вы можете получить дополнительные подсказки в документации и примерах для этой библиотеки. Полный перечень методов можно найти в соответствующем разделе справки по MQL5.
К сожалению, в MQL5 не предусмотрено приведение матриц и векторов одного типа к другому (например, от double к float). Кроме того, вектор автоматически не трактуется компилятором как матрица (с одним столбцом или строкой) в тех выражениях, где ожидается матрица. То есть, принципы наследования (характерные для ООП) между матрицами и векторами не существуют, несмотря на кажущуюся родственную связь между этими "структурами".