Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 732
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
¿Qué pasa si después de clasificar cambias el orden de indexación usando ArraySetAsSeries?
ArraySetAsSeries no se aplica a las matrices multidimensionales.
Sí, no se aplica. Y quién sabe lo que se aplica, por favor responda.
Sí, no se aplica. Y quién sabe lo que se aplica, por favor responda.
A veces utilizo la ordenación por burbujas en un array bidimensional. Puede elegir la dirección y la dimensión por la que se va a clasificar
Ir a tu casa por el código, o publicarlo, si no te importa)
Añadido: Como consume recursos, también podría invertir el bucle, cosa que no quiero hacer.
Ir a tu casa por el código, o publicarlo si no te importa)
No recuerdo qué dimensión de la matriz que escribió - tal vez usted no lo necesita, y voy a empujar ...
//| Пузырьковая сортировка двумерного массива |
//+------------------------------------------------------------------+
template<typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) {
T t=0;
int k=ArrayRange(array,1); // Количество колонок
int n=ArrayRange(array,0); // Количество строк
//---
if(sort_dimension<0) sort_dimension=0;
if(sort_dimension>k) sort_dimension=k;
//---
for(int i=n-1; i>0; i--) {
for(int j=0; j<i; j++) {
//--- по возрастанию
if(sort_direction==0) {
if(array[j][sort_dimension]>array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
//--- по убыванию
else {
if(array[j][sort_dimension]<array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Bueno, coge una cerveza y ven a visitarnos ;)
Sólo que no recuerdo qué dimensión del array escribiste - tal vez no lo necesites, y lo pondré aquí ...
Es invierno, pero los esquís no van
{
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 работает
... здесь работа с уже сортированным массивом и основной код
}
Error: "'m' - conversión de parámetros no permitida e.mq5 2076 20"
Es invierno, pero los esquís no van
{
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 работает
... здесь работа с уже сортированным массивом и основной код
}
Error: "'m' - conversión de parámetros no permitida e.mq5 2076 20"
Nota
El indicador AS_SERIES no puede establecerse para matrices multidimensionales ni para matrices estáticas (es decir, matrices cuyo tamaño entre corchetes ya está especificado en tiempo de compilación).
¿Y qué te impide ordenarlo con la función que te propongo?
Está escrito en la ayuda:
Nota
El indicador AS_SERIES no puede establecerse para matrices multidimensionales y matrices estáticas (es decir, matrices cuyo tamaño entre corchetes se especifica en tiempo de compilación).
Pero, ¿qué le impide solucionarlo con la función que le sugiero?
Exactamente el mismo error al transferir a una función
¿Cuál?
A su"ArraySortBubbleTwoDims".
De todas formas, he ampliado el bucle y el tema está resuelto. Pero todavía me gustaría ver una solución normal en la forma de una función estándar