|
Página 3 de 3
Arrays multidimensionales En MQL4 también podemos trabajar con arrays de varias dimensiones, es decir, matrices de datos. Un ejemplo de array multidimensional sería el siguiente:
[0] 10 20 30
[1] 40 50 60
[2] 70 80 90
[0] [1] [2]
Los números que aparecen entre corchetes indican cómo son los índices utilizados para referenciar filas y columnas en MQL4. Así, el elemento [0] [1] sería 20, el elemento [1] [2] sería 60 y así sucesivamente.
Para crear una matriz como la anterior en MQL4, tenemos el comando array2D[num filas] [num columnas] tal que:
int array2D[3][3]= {10,20,30, 40,50,60, 70,80,90};
También podemos crear arrays en 3D mediante el siguiente comando:
int array3D[num x][num y][num z] = {lista de números separada por comas};
Algunas funciones adicionales para trabajar con arrays serían las siguientes:
- Obtener el número de elementos de un array: int ArraySize(objeto array[]);
- Asignar valores a un array: int ArrayInitialize(objeto array[],double valor);
- Valor máximo y mínimo de un array:
int ArrayMaximum(double array[], int count = WHOLE_ARRAY, int start = 0); int ArrayMinimum(double array[], int count = WHOLE_ARRAY, int start = 0);
- Calcular la dimensión de un array: int ArrayDimension(objeto array[]);
- Ordenar los elementos de un array:
int ArraySort(double&array[], int count = WHOLE_ARRAY, int start = 0, int sort_dir = MODE_ASCEND);
- Copiar un array dentro de otro:
int ArrayCopy(object&dest[], object source[], int start_dest = 0, int start_source=0, int count=WHOLE_ARRAY);
Preprocesadores Terminamos la entrega de hoy con lo que se conoce como preprocesador. Veamos en qué consisten con un sencillo ejemplo. Hace algunos párrafos veíamos la siguiente estructura de tipo switch:
switch(marketState) { case 1: // Estrategia Mercado Alcista break; case 2: // Estrategia Mercado Bajista break; case 3: // Estrategia Mercado sin Tendencia break; default: // Error: no se consideran otras posibilidades break; }
Qué les parecería poder cambiar los valores 1, 2 y 3 por las palabras Alcista, Bajista y Plano? Realmente el código sería aún más comprensible, verdad?
Pues bien, para poder hacer eso simplemente basta con definir preprocesadores de la siguiente forma: al comienzo del código, insertaríamos las siguientes líneas:
#define ALCISTA 1 #define BAJISTA 2 #define PLANO 3
Como podemos observar, los preprocesadores siempre van precedidos del símbolo #.
Mediante este código lo que hacemos es que, por ejemplo, cada vez que aparezca la palabra ALCISTA en el código a compilar, ésta será reemplazado por el valor 1.
Para comprobarlo, creen un nuevo script e introduzcan el siguiente código para luego ejecutarlo:
//+------------------------------------------------------------------+ //| Preprocesador.mq4 | //| X-Trader.net | //| | //+------------------------------------------------------------------+
#property copyright "X-Trader.net" #property link "http://www.x-trader.net"
#define ALCISTA 1 #define BAJISTA 2 #define PLANO 3
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+
int start() { MessageBox("ALCISTA=" + ALCISTA + " BAJISTA=" + BAJISTA + " PLANO=" + PLANO); return(0); }
(Continuará...)
Un saludo, X-Trader
Trackback(0)

<< Inicio < Anterior 1 2 3 Siguiente > Fin >>
|