Array multidimensional

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Array multidimensional

Notapor xere62 » 25 Oct 2011, 06:49

Muy buenos días.

Tengo un problema en la programación de un indicador. Necesito un array bidimensional con la segunda dimensión variable. En C directamente lo declararía así:
double array[x][y];

Pero MQL4 no me lo permite. Así que intenté saltarme el problema con el siguiente código:

switch (Barras) {
case 3:
double trainingData[][4];
double liveData[][4];
break;
case 4:
double trainingData[][5];
double liveData[][5];
break;
case 5:
double trainingData[][6];
double liveData[][6];
break;
}
Pero al compilar me dice, en case 4 y 5, que los arrays ya fueron declarados (en case 3m entiendo).
¿A alguien se le ocurre cómo resolverlo?
xere62
 
Mensajes: 14
Registrado: 07 Oct 2010, 21:06
Karma: 0

Re: Array multidimensional

Notapor forexpgm » 25 Oct 2011, 17:11

Entiendo que es normal que no te deje hacer declaraciones diferentes de un mismo array en tiempo de compilación con condiciones de tiempo de ejecución.

Si no te deja definir arrays dinámicas, crea un array con el máximo de dimensiones que necesites y te guardas los Indices Max utilizados, para hacer los bucles controlados con tus indices.

Algo así...

double trainingData[][6];
double liveData[][6];

switch (Barras) {
case 3:
int idxMax = 4;
break;
case 4:
int idxMax = 5;
break;
case 5:
int idxMax = 6;
break;
}

for(i=0;i<=idxMax;i++)...

No sé si te vale para lo que necesitas hacer... :?
forexpgm
 
Mensajes: 6
Registrado: 13 Oct 2011, 15:40
Karma: 0

Re: Array multidimensional

Notapor xere62 » 25 Oct 2011, 17:34

Antes que nada, muchas gracias por la respuesta.
Lo que apuntas es una posibilidad.
Lo que sucede es que estoy programando una red neuronal, mediante llamadas a funciones definidas tipo FANN4MQL. Claro, estas funciones no controlan el índice máximo. Para hacer lo que tú aconsejas, debería rehacer esas funciones (no creo que sea demasiado complicado. Si acaso, un poco arduo). Pero bueno, es una solución posible.
Estaba intentándolo por otra vía. Tal vez más compleja, porque tengo que desempolvar C puro (no C++), pero me sirve para entretenerme y, a lo mejor, si le saco partido, podría servirle a mucha más gente. La solución contra la que me estoy peleando trata de crear una .dll en C, que contenga y exporte las funciones necesarias para crear y/o redimensionar arrays de hasta 4 dimensiones (máximo permitido por MQL4). Es un poco difícil, pero me gustan estos retos. Si lo consigo os lo posteo.
Mientras tanto, naturalmente siguen aceptándose soluciones más sencillas, por favor.
xere62
 
Mensajes: 14
Registrado: 07 Oct 2010, 21:06
Karma: 0

Re: Array multidimensional

Notapor forexpgm » 26 Oct 2011, 10:21

Tema realmente interesante... ;)

Hace un tiempo me dedique a programar RNA en .NET, es alucinante ver de que son capaces estos algoritmos de aprendizaje.

Lo realmente importante son los patrones de aprendizajes que les ejecutes, si la red "sobreaprende", simplemente tendrás respuestas aprendidas pero no seguirá un patron, si no aprende correctamente el patrón indicado te puede dar respuestas imprevisibles...

Sobre el tema de arrays mírate la función ArrayResize() a ver si te permite redimensionar la segunda dimensión del Array...

http://docs.mql4.com/array/ArrayResize

Salu2.
forexpgm
 
Mensajes: 6
Registrado: 13 Oct 2011, 15:40
Karma: 0

Re: Array multidimensional

Notapor xere62 » 26 Oct 2011, 10:30

No, ArrayResize() sólo permite redimensionar la primera.
Casi tengo resuelto el asunto. Ya he sido capaz de crear la .dll (con Visual C++ Express), exportar la función y ejecutarla en un .mq4
Aún no obtengo los resultados esperados, seguramente por alguna cuestión relativa al modo de pasar el array a la función (por valor o por referencia).
O sea, que me estoy divirtiendo pero aún me falta un último empujón. Ya os cuento...
xere62
 
Mensajes: 14
Registrado: 07 Oct 2010, 21:06
Karma: 0

Re: Array multidimensional

Notapor Trader2010 » 26 Oct 2011, 22:07

esto esta bien interesante, estare atento a los progresos y comentas como podemos hacerlo nosotros.
Saludos
Trader2010
 
Mensajes: 317
Registrado: 17 Sep 2009, 15:26
Karma: 0


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron