Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 731
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿No es 10.000 x 10.000 bidimensional?
y todo eso...
Bueno sí es bidimensional, no es así como lo puse, aparentemente no es una matriz sino un array. ¿Una matriz implica multidimensionalidad?
Lo que se frena en este código no es la escritura de un array sino un bucle dentro de un bucle.
De acuerdo. Eso no es lo que se dijo y se malinterpretó.
Lo que frena en este código no es la escritura del array sino el bucle en el bucle.
¿Es necesario portar a otro entorno de programación, o no es un problema común para todo tipo de lenguajes? ¿Cuál puede ser la solución para acelerar?
Si un bucle y aumentar el valor de la variable del bucle eliminado
{
int arr++
if(arr=ARRAY_SIZE_X) {z++;arr=0;}
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
Puede que lo haya comprobado, pero no quiero dar problemas al ordenador: si no se acelera, el disco duro volverá a sufrir un estrés adicional)))
¿Es necesario pasar a otro entorno de programación, o no es un problema común para todo tipo de lenguajes? ¿Cuál puede ser la solución para acelerar?
Si un bucle y aumentar el valor de la variable de bucle eliminado en él, ¿se acelerará?
Podría comprobarlo, pero no quiero torturar al ordenador, si no se acelera, volverá a estresar el disco duro)))
¿No puedes escribir el array después del bucle? ¿Es posible hacerlo sólo en cada línea? Me refiero a la primera variante en la que el bucle está en el bucle.
Por supuesto, puede insertar adicionalmente un contador y escribir en este contador, no en cada línea por separado, pero es poco probable que acelere el proceso tanto como para que se note sin medir.
Un array de este tamaño no cabría en la RAM asignada.
Por supuesto, puede insertar adicionalmente un contador y registrar por este contador, no por cada fila por separado, pero es poco probable que acelere tanto el proceso que se note sin medir.
Por favor, dime que la documentación dice (y también el compilador) que: "La banderaAS_SERIES no puede establecerse para matrices multidimensionales"
Pregunta: ¿Cómo puedo ordenar un array en mql5?
void Func()
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с массивом и основной код
}Por favor, avisa, la documentación dice (y también el compilador) que: "La banderaAS_SERIES no se puede establecer para matrices multidimensionales".
Pregunta: cómo ordenar el array:
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
void BySort(double &mas[][3])// выделенное лишнее
{
// Сортируем по размеру от большего к меньшему
ArraySort(mas, WHOLE_ARRAY, 0, MODE_DESCEND); // вот это не работает в mql5
ArraySort(mas);
ArraySetAsSeries(mas,true); // а при такой записи ругается // это тоже лишнее
}
1 - cambia la dirección de la indexación de las celdas del array sin cambiar su contenido y 2 - cambia el contenido de las celdas sin cambiar su indexación para que se ordenen de forma ascendente o descendente.
Además, la documentación dice que el array sólo puede ordenarse por la primera dimensión.
AS_SERIES y la clasificación son conceptos completamente diferentes.
1 - cambia la dirección de la indexación de las celdas del array sin cambiar su contenido, y 2 - sin cambiar la indexación cambia el contenido de las celdas para que se ordenen de forma ascendente o descendente.
Además, la documentación dice que el array sólo puede ordenarse por la primera dimensión.
Aquí se clasifica en orden ascendente
¿Cómo lo invierto ahora? Tiene que estar en orden descendente, está clasificando lotes.
Aquí se clasifica en orden ascendente
¿Cómo lo invierto ahora? Lo necesitas en orden descendente, ordena los lotes.
Y la opción más tonta es reescribir toda la matriz en el orden inverso. ¿Merece la pena?
Aquí se clasifica en orden ascendente
¿Cómo lo invierto ahora? Lo necesitas en orden descendente, ordena los lotes.
¿Qué pasa si, después de ordenar, cambias el orden de indexación usando ArraySetAsSeries?
Entonces es así: