Типы матриц и векторов

matrix и vector — это специальные типы данных в MQL5, предназначенные для выполнения операций из линейной алгебры. Существуют следующие типы данных:

  • matrix — матрица, содержащая элементы типа double
  • matrixf — матрица, содержащая элементы типа float
  • matrixc — матрица, содержащая элементы типа complex.
  • vector — вектор, содержащий элементы типа double
  • vectorf — вектор, содержащий элементы типа float
  • vectorc — вектор, содержащий элементы типа complex

Для применения в шаблонных функциях можно использовать запись matrix<double>, matrix<float>, matrix<complex>, vector<double>, vector<float>, vector<complex> вместо соответствующих типов.

В MQL5 реализована поддержка передачи матриц и векторов в DLL. Это позволяет импортировать функции, использующие этот тип данных, из внешних библиотек.

Матрицы и векторы передаются в DLL в виде указателя на буфер. Например, для передачи матрицы типа float, соответствующий параметр экспортируемой из DLL-функции должен принимать указатель на буфер с типом float.

MQL5

#import "mmlib.dll"
bool sgemm(uint flagsmatrix<float> &Cconst matrix<float> &Aconst matrix<float> &Bulong Mulong Nulong Kfloat alphafloat beta);
#import

C++

extern "C" __declspec(dllexportbool sgemm(UINT flagsfloat *Cconst float *Aconst float *BUINT64 MUINT64 NUINT64 Kfloat alphafloat beta)

Для правильной обработки матриц и векторов, кроме их буферов, следует передавать их размеры.

Методы инициализации матриц и векторов

Функция

Действие

Assign

Копирует матрицу, вектор или массив с автоматическим преобразованием

CopyRates

Получает в матрицу или вектор исторические серии структуры MqlRates указанного символа-периода в указанном количестве

Eye

Возвращает матрицу с единицами по диагонали и нулями в остальных местах

Identity

Создает единичную матрицу указанного размера

Ones

Создает и возвращает новую матрицу, заполненную единицами

Zeros

Создает и возвращает новую матрицу, заполненную нулями

Full

Создает и возвращает новую матрицу, заполненную заданными значениями

Tri

Создает матрицу с единицами по указанной диагонали и ниже нее и нулями в остальных местах

Init

Инициализирует матрицу или вектор

Fill

Заполняет существующую матрицу или вектор заданным значением