Los Arrays son un conjunto organizado de valores de un tipo de dato que tienen un nombre en común. Las matrices pueden ser una solo dimensión o multidimensionales. La cantidad máxima de dimensiones de una matriz es de cuatro. Las matrices pueden ser de cualquier tipo de dato, pero solo pueden ser de un tipo de dato. Si el Array es de números, esta matriz no puede tener variables que no sean números.
La forma en que MQL4 maneja las Arrays es muy parecida a los demás lenguajes de programación, sin embargo MQL4 tiene unas particularidades.
Antes de poder utilizar un Array esta tiene que ser declarada. Las GlobalsVariables no pueden ser Arrays.
Una declaracion tipica de un array puede ser:
int miArray[10];
Con el int estamos indicando que todos los valores que contendrá esta array serán de tipo int o enteros. Ahora viene lo diferente que tiene MQL4. En otros lenguajes cuando decimos [10]; estamos haciendo referencia al indice 10 en el array. Pero en MQL4 lo que decimos es que nuestra array va tener un espacio para 10 elementos. Esto es cuando se inicializa el array. Ejemplos:
bool Mas_b [ 5 ] = { false , true , false , true , true };
string Mas_s[4] = {“a”,”b”, ,”d”};
int Mas_i[6] = { 0,1,2, ,4,5 };
Para explicar mas ampliamente los array voy a copiar la explicación que hace X-Trader de x-trader.net
Vectores (Arrays)
Pasamos a ver cómo se declaran vectores en MQL. El esquema para ello es el siguiente:
(Tipo de array) (Nombre del array) [Nº de elementos];
Por ejemplo, la sentencia:
double price[5];
nos creará un vector de 5 elementos de tipo Double.
¿Cómo podemos hacer referencia a cada uno de los componentes del array y darles un valor? Muy fácil: una vez hemos declarado el array “price” del ejemplo anterior, podemos dar un valor a su primer elemento de la siguiente forma:
price[0] = 1.2341;
Obsérvese que los índices de los arrays empiezan en 0, de tal forma que dicho valor se corresponde con el primer elemento del array. Del mismo price[1] = 1.2321; nos asignaría un valor al segundo elemento del array y así sucesivamente.
Por supuesto, podemos declarar un array asignándole valores iniciales:
double price[2] = {1.2234, 1.2421};
Aunque también es posible no especificar el número de elementos y dejar que Metatrader lo determine:
double price[] = {1.2234, 1.2421};
Asimismo, con los arrays también podemos realizar las mismas operaciones que hacíamos con las variables como se muestra en los siguientes ejemplos:
double price[2];
price[0] = 1.2234;
price[1] = 1.2421;
MessageBox(“El precio medios es ” + (price[0] + price[1]) / 2.0,”Precio medio”);
También voy a copiar algo muy interesante que encontré en init.tler.com.ar.
#define
La directiva de precompilador #define sirve para “definir” (valga la redundancia) constantes.
“Ohhh! And so?” Es cierto, si esa fuera la definición final seria aburrido inclusive el uso de esta directiva y ni me gasto en aprenderla… total, tengo variables que no modifico y listo…
Esto es particularmente util en el siguiente caso:
int length = 10;
string array[length]; // ESTO ES TOTALMENTE INVALIDO!
string array2[10]; //Valido pero poco practico.
Nosotros queremos definir un array. Es muy común esto. Luego lo recorreremos y tendremos que buscar de 0 a length -1. Si nosotros usamos el valor 10 en todo nuestro codigo para designar la longitud de nuestro array y luego necesitamos redimensionarlo (por un motivo que ahora no viene al caso), tendriamos que modificar todo nuestro codigo.
En cambio, si definimos una constante para crear el array y usamos su valor para recorrerlo solo bastará modificar la definición de la constante en caso de ser necesario.
Por otro lado, podemos insistir con la idea de que podemos usar una variable a la cual le asignamos el tamaño y listo. Pues no.
Cuando el compilador lee algo como lo siguiente:
#define LENGTH 10
int vector[LENGTH];
…for (int i = 0; i < LENGTH; i++) {…}
…
Lo que hace es reemplazar el valor de LENGTH en cada aparicion de LENGTH. Por lo que el codigo quedaria de la siguiente manera:
/*#define LENGTH 10 */int vector[10];
…
for (int i = 0; i < 10; i++) {…}
…
Por supuesto esto nunca lo veremos, pero nos da un codigo fuente mucho mas legible, prolijo y además nuestro programa será mas optimo ya que tendremos menos acceso a variables, menor consumo de memoria y un script mucho mas rapido.
Cuando definimos constantes, podemos definir cualquier valor constante que querramos incluyendo strings, boleanos, etc.
0 respuestas hasta el momento ↓
Todavía no hay comentarios... Empiece usted rellenando el siguiente formulario.