Función - Método para ordenar una matriz de estructuras. Premio 10$ - página 4

 
Sergey Dzyublik:

¿Cuál es el problema?

Además de la función en sí, hay que hacer un typedef sobre ella y crear una variable, justo para pasar la función como parámetro, que es lo que se hace bajo la macro lambda.

 
fxsaber:

Lo he comprobado y funciona.

Lamentablemente no (((.


 
Vladimir Pastushak:

Lamentablemente no (((.

No tiene clasificación trabajando en MT4.
Por lo tanto, inserte la llamada a la ordenación sugerida para MT4 en la compilación condicional, y deje el código para MT5 sin tocar.

 
Vladimir Pastushak:

Lamentablemente no (((.


Actualice su MT4.

 

Comprobado el código en MT4, todo funciona

2020.04.21 23:27:35.728 Script t EURUSD,H1: eliminado

2020.04.21 23:27:35.726 t EURUSD,H1: uninit reason 0

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.085420.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Clasificación por tiempo.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Clasificación por valor alto.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.0850220.04.21 22:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Clasificación por precio abierto.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.085420.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Barras sin clasificar - tal y como se recibieron.

2020.04.21 23:27:35.726 t EURUSD,H1: inicializado

2020.04.21 23:27:34.279 Script t EURUSD,H1: cargado con éxito

MT4 build 1262

descomprimirlo así:

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

En el código proporcionado me olvidé de envolver la función principal ArraySortStruct de nuevo en la macro, que sería posible especificar el campo de clasificación.
Pero el autor del tema se obstina en callar, al parecer soy el único que lo necesita...

 

Algoritmo:

1. Estructura = Cadena. Primer bucle.

2. Ordenar array de cadenas. Segundo bucle (complejo, burbuja).

3. Cadena = Estructura. El tercer bucle.

Apenas más rápido.

Razón:

1. Las estructuras se representan en el sistema como cadenas, sólo hay que tener en cuenta la alineación (byte a byte).

2. La velocidad de procesamiento de las cadenas es muy superior a la de otros tipos de datos.

3. Sólo se realiza una operación de comparación de dos filas en un bucle. No es necesario comparar los valores de los campos.

Lo hacía en Clarion a principios de los 90. Ha funcionado.

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

En el código proporcionado me olvidé de envolver la función principal ArraySortStruct de nuevo en la macro, que sería posible especificar el campo de clasificación.
Pero el autor del tema se obstina en callar, al parecer soy el único que lo necesita...

Todavía no lo he mirado. No entiendo las macros. Le agradecería el código completo.
 
Алексей Тарабанов:

Lo hice a principios de los 90 en un Clarion. Voló.

¡hasta las lágrimas! )))

recuerdo el primer semestre del primer curso y las primeras clases prácticas de algoritmos y programación.... ni siquiera recuerdo lo que aprendimos, creo que aprendimos pascal al principio, pero las lecciones fueron en las clases de terminal de IBM, compilé el programa a 15-20 líneas... bueno, primero 2-3 minutos, luego hasta 20 minutos cuando la gente hizo un montón de errores de escritura y sintaxis

a partir del segundo semestre, estábamos trabajando en 486s


¡estaba volando! ))))


SZS: si no me equivoco, fue el EC-1035 .... el que voló.

 
Igor Makanu:

¡hasta las lágrimas! )))

Me acordé del primer semestre del primer año y de las primeras sesiones de prácticas sobre algoritmos y programación.... ni siquiera recuerdo lo que estudiábamos, creo que era Pascal al principio, pero las clases eran en ordenadores IBM en las clases de terminal, compilando el programa de 15-20 líneas... bueno, al principio estudiábamos durante 2-3 minutos, luego hasta 20 minutos cuando la gente escribía mucho y cometía errores de sintaxis

a partir del segundo semestre, estábamos trabajando en 486s


¡Voló! ))))


SZY: ¡Si no me equivoco, fue el EC-1035 .... el que voló!

Empecé con el primer ordenador personal electrónico digital del mundo en 1976. Fue diseñado por el Instituto de Cibernética de Kiev de la Academia de Ciencias de la República Socialista Soviética de Ucrania. Luego vino el Minsk-32, y después la CE.