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
¡Bravo! Después de corregir un par de errores, me has bajado del pedestal incluso sin usar ArrayCopy. Jaque mate. :))
for(;;)
a
Sigue saliendo por la pausa
P.D. Sólo por diversión, ejecuté una copia directa en toda la matriz.Probablemente valga la pena cambiar
a
Sigue saliendo por la pausa
Funciona más lento que:
Si se presenta a este concurso sin reglas, deberá copiar el código del "líder" (actualmente Kuznetsov) y modificarlo de acuerdo con el comportamiento del sistema descrito anteriormente.
Esto lleva a una ganancia estable de unos 20 mseg desde el tiempo de ejecución inicial de 740 mseg:
Por cierto, tengo curiosidad por saber cómo cambiarán los resultados si la matriz original es una serie. ArraySetAsSeries(arr,true)
Si tomamos este concurso sin reglas, copiamos el código del "líder" (actualmente Kuznetsov) y lo modificamos según el comportamiento anterior del sistema.
Obtenemos una ganancia estable de unos 20 ms respecto al tiempo de ejecución original de 740 ms:
Vale la pena añadir. Si no te importa la secuencia de los elementos del array. Entonces sí, es una variante excelente. Si es importante mantener la coherencia, entonces se necesita algo más.
Ya que estamos, esta es mi versión:
resultados:
S.S. En principio, se ha alcanzado el límite de velocidad. El siguiente paso es sólo la micro-optimización y juguetear con el bucle for:
Creo que el resultado de Nikolai es un hábil uso de esas microoptimizaciones.
Hay un array que contiene un conjunto de datos de tipo 1,2,3,6,9,5,6,3,25,6,8,7,4 hay que eliminar por ejemplo los valores 3 y obtener el mismo array sin 3 y espacios vacíos en la salida...
Estoy buscando la forma más rápida de borrar un array de valores innecesarios...
Me viene a la mente el siguiente ejemplo
¿Quizás haya una forma más barata y rápida?
Vladimir, ¿por qué es necesario?
Según tengo entendido, hay que hacerlo con el buffer del indicador. Pero, ¿no sería más lógico sustituir los valores vacíos y/o "innecesarios" por el valor anterior o, por ejemplo, la media aritmética de los valores extremos? Entonces será mucho más rápido y la dimensión del array seguirá siendo la misma.
Vladimir, ¿por qué es necesario?
Según tengo entendido, hay que hacerlo con el buffer del indicador. Pero, ¿no sería más lógico sustituir los valores vacíos y/o "innecesarios" por el valor anterior o, por ejemplo, la media aritmética de los valores extremos? Entonces será mucho más rápido y la dimensión del array seguirá siendo la misma.
Vladimir, ¿por qué es necesario?
Según tengo entendido, hay que hacerlo con tampón indicador. Pero ¿no sería más lógico sustituir los valores vacíos y/o "innecesarios" por el valor anterior o la media aritmética de los valores extremos, por ejemplo? Entonces será mucho más rápido y la dimensión del array seguirá siendo la misma.
Cuando hay varios EAs con un gran número de posiciones/órdenes abiertas en mql4, en mi opinión, es más fácil mantener el array con las entradas y comprobar si la orden está cerrada recorriendo el array en lugar de probar todas las posiciones abiertas con la comprobación del símbolo y el mago. Por lo tanto, si la orden está cerrada, debe ser "tachada" de la matriz. En estos casos, solía copiar el array "en sí mismo" y reducir el tamaño del array en uno. Eso fue sugerido por Vasiliy Sokolov, muchas gracias, sabré que no es la opción más difícil, ya que nunca pensé en la velocidad. El porqué de la tarea de eliminar varios elementos iguales es otra cuestión...
ps Mientras escribía esto, la respuesta ya está ahí. Así que la pregunta también es errónea... ))))))Cuando hay varios EAs con un gran número de posiciones/órdenes abiertas en mql4, en mi opinión, es más fácil mantener el array con las entradas y comprobar si la orden está cerrada recorriendo el array en lugar de probar todas las posiciones abiertas con la comprobación del símbolo y el mago. Por lo tanto, si la orden está cerrada, debe ser "tachada" de la matriz. En estos casos, solía copiar el array "en sí mismo" y reducir el tamaño del array en uno. Eso fue sugerido por Vasiliy Sokolov, muchas gracias, sabré que no es la opción más difícil, ya que nunca pensé en la velocidad. El porqué de la tarea de eliminar varios elementos iguales es otra cuestión...
ps Mientras escribía, la respuesta ya está ahí. Resulta que la pregunta también es errónea... ))))))A grandes rasgos, me lo imaginé entonces.
Si tenemos un array de órdenes, el orden no es importante, por lo que es más razonable utilizar la variante de Kuznetsov con el llenado de "huecos" con valores de la parte superior del array, para no mover el resto de elementos del array. Esto es, por supuesto, más rápido.