Tipos de matrices y vectores

matrix y vector son tipos de datos especiales en MQL5, diseñados para realizar operaciones de álgebra lineal. Existen los siguientes tipos de datos:

  • matrix – matriz que contiene elementos de tipo double
  • matrixf – matriz que contiene elementos del tipo float
  • matrix – matriz que contiene elementos del tipo complex
  • vector – vector que contiene elementos del tipo double
  • vectorf – vector que contiene elementos del tipo float
  • vectorc – vector que contiene elementos del tipo complex

Para su uso en funciones de plantilla, podemos utilizar la entrada matrix<double>, matrix<float>, matrix<complex>, vector<double>, vector<float>, vector<complex> en lugar de los tipos correspondientes.

MQL5 admite la transmisión de matrices y vectores a DLL. Esto permite que las funciones que usan este tipo de datos se importen desde bibliotecas externas.

Las matrices y vectores se transmiten a la DLL como el puntero a un búfer. Por ejemplo, para transmitir una matriz de tipo float, el parámetro correspondiente de la función DLL exportada deberá adoptar el puntero a un búfer de tipo float.

MQL5

#import "mmlib.dll"
bool sgemm(uint flags, matrix<float> &C, const matrix<float> &A, const matrix<float> &B, ulong M, ulong N, ulong K, float alpha, float beta);
#import

C++

extern "C" __declspec(dllexport) bool sgemm(UINT flags, float *C, const float *A, const float *B, UINT64 M, UINT64 N, UINT64 K, float alpha, float beta)

Para procesar correctamente las matrices y vectores, además de sus búferes, es necesario transmitir sus tamaños.

Métodos de inicialización de matrices y vectores

Función

Acción

Assign

Copia una matriz, vector o array con transformación automática

CopyRates

Obtiene las series históricas de la estructura MqlRates en una matriz o vector del símbolo-periodo especificado en la cantidad especificada.

Eye

Retorna una matriz con unidades a lo largo de la diagonal y ceros en el resto

Identity

Crea una matriz unitaria con el tamaño especificado

Ones

Crea y retorna una nueva matriz rellenada con unidades

Zeros

Crea y retorna una nueva matriz rellenada con ceros

Full

Crea y retorna una nueva matriz rellenada con los valores dados

Tri

Crea una matriz con unidades en la diagonal indicada y por debajo de la misma, y ceros en el resto.

Init

Inicializa una matriz o vector

Fill

Rellena una matriz o vector existente con el valor dado