Hola, gracias por adelantado por echarme una mano; no soy un experto ni en programación en general ni en MQL4.
Estoy escribiendo un pequeño código que lee nombres de instrumentos a partir de un fichero y obtiene el spread de cada uno de ellos. A continuación los ordena (los que tienen menos spread aparecen primero asociados a ids numéricos, ya los asociaré después a los nombres de instrumento).
Le he dado muchas vueltas pero no consigo ver por qué el código se limita a repetir la visualización de los valores sin ordenar. Alguien me podría ayudar?
int fichero,pasada,espred[99],espred_id[99,3],veces,veces2;
string instrumento[99];
int init()
{
fichero=FileOpen("listadeinstrumentos.csv",FILE_READ);
pasada=0;
while(!FileIsEnding(fichero))
{
pasada++;
instrumento[pasada]=FileReadString(fichero);
espred[pasada]=MarketInfo(instrumento[pasada],MODE_SPREAD);
Print("Instrumento ",pasada,": ",instrumento[pasada]," - su spread es ",espred[pasada]);
espred_id[pasada,1]=espred[pasada];
espred_id[pasada,2]=pasada;
}
FileClose(fichero);
ArraySort(espred_id,WHOLE_ARRAY,0,MODE_ASCEND);
for(veces=1; veces<=pasada; veces++)
{
for(veces2=1; veces2<3; veces2++)
{
Print(espred_id[veces,veces2]);
}
}
}
Por qué este código no hace lo que quiero (ArraySort)
-
- Mensajes: 2
- Registrado: 02 Jul 2018 16:57
Re: Por qué este código no hace lo que quiero (ArraySort)
Varias cosas veo ahí:
1. Estas definiendo el array: spread_Id con tres dimensiones y solo utilizas dos dimensiones (debes definirlo solo con dos dimensiones 0 y 1)
2. Recuerde que la función ArraySort () ordena siempre por la primera dimensión y en spread_ID nunca la usas por tanto siempre sacara el mismo orden.
3. En realidad no necesitas usar dos arrays para guardar el spread y el id del símbolo, simplemente con el solo array spread_ID tienes.
Saludos,
Pd: código de ayuda.
1. Estas definiendo el array: spread_Id con tres dimensiones y solo utilizas dos dimensiones (debes definirlo solo con dos dimensiones 0 y 1)
2. Recuerde que la función ArraySort () ordena siempre por la primera dimensión y en spread_ID nunca la usas por tanto siempre sacara el mismo orden.
3. En realidad no necesitas usar dos arrays para guardar el spread y el id del símbolo, simplemente con el solo array spread_ID tienes.
Saludos,
Pd: código de ayuda.
Código: Seleccionar todo
string Simbolo;
int aSpread[29][2];
for(int s=0; s <ArraySize(SymbolsArray); s++) // lee el array de los simbolos
{
Simbolo=SymbolsArray[s];
int spread= MarketInfo(Simbolo,MODE_SPREAD); // toma el spread del simbolo
aSpread[s,0]=spread; // guarda el spread del simbolo en la primera dimensión
aSpread[s,1]=s; // guarda el ID del simbolo en lasegunda dimensión
}
ArraySort(aSpread,WHOLE_ARRAY,0,MODE_ASCEND); // ordena el array
for(int i=0; i <ArraySize(aSpread)/2; i++) // lee el array con la información del spread
{
Print(i," ","SymbolIndex: ",aSpread[i,1]," Spread: ", aSpread[i,0]);
}
-
- Mensajes: 2
- Registrado: 02 Jul 2018 16:57
Re: Por qué este código no hace lo que quiero (ArraySort)
Muchísimas gracias Broricos!
Si te ha gustado este hilo del Foro, ¡compártelo en redes!