Errores, fallos, preguntas - página 2504
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Gente, compartid algo de información. ¿Para qué utiliza la alineación?
¡esto es programación orientada a los mapaches!
Por desgracia, no se puede prescindir de él ;)
¡esto es programación orientada a los mapaches!
Por desgracia, no se puede prescindir de él ;)
Soy consciente de ello. No te pido que me enseñes sobre POO. He preguntado quién utiliza la alineación para qué.
Gente, ¿pueden compartir alguna información? ¿Para qué utiliza la alineación?
Todo esto es muy útil en un entorno multihilo, yo lo veo así. ¿Qué tiene que ver MKL con esto? No sé, la pregunta estaba hecha, así que me quedé atascado.
Y en general - estos son los fundamentos, una comprensión básica es necesaria para cualquier programador decente.
ZS: Bueno, aquí hay muchos fanáticos de la velocidad, si empiezan a alinear todo de forma inteligente, deberían volar aún más rápido, en teoría al menos.Gente, compartid algo de información. ¿Para qué utiliza la alineación?
Vict:
ZS: bueno, hay muchos aficionados a la velocidad aquí, si empiezan a hacerlo bien, debería ir aún más rápido, en teoría al menos.
En general, ni siquiera me lo esperaba:
El código es un poco sobrecomplicado - traté de golpear ese elemento que no cabe en la línea de caché y golpear directamente en él, pero falló (probablemente se podría hacer si quisiera, pero me aburrí), y no cambié mucho el código. Pero esto es aún más impresionante - sólo uno de los 16 colapsos se hace sobre el elemento que no cae en la línea de caché, sin embargo, da un resultado sensible.
SZY: más objetivamente en este caso para hacer RIGHT_ALIGNED mediante la inserción de dos cortos, en lugar de eliminar única (por lo que vamos a lograr dos actualizaciones de la línea de caché para ambos casos). El aumento de velocidad será más modesto, pero aún así se multiplicará por 1,5.
Por cierto, en mql el valor por defecto de pack es 1, más o menos.
A juzgar por el post anterior, tal vez tenga sentido prescribir 8 explícitamente a todas las estructuras y clases.
No puedo superar el error.
Tomé el zigzag de la entrega de Metatrader para demostrar el error. Se han añadido búferes adicionales al código, tomados de mi programa. En este código no se pretende realizar manipulaciones con búferes adicionales. Son sólo para demostrar el error.
Trazado de este zigzag en el marco de tiempo EURUSD H1. Cerró la terminal. Se han eliminado del historial todas las series temporales generadas para el EURUSD. Es decir, borró todos los archivos *.hcc y *.hc del par de divisas EURUSD. Se ha hecho para asegurar la carga de archivos .hcc y la generación de archivos .hc a partir de una hoja limpia.
Después de iniciar el terminal, verá un montón de artefactos en el gráfico del EURUSD. Estos artefactos no pueden ser tratados.
Adjunto el código modificado del zigzag en forma de texto y en forma de archivo.
Quiero advertir que los parámetros del zigzag se especifican a través de #propert.
Todos los demás búferes no se establecen a través de #propert, porque todo, incluyendo los búferes de zigzag, se cambian dinámicamente.
Por favor, ayude a los desarrolladores de terminales a arreglar este error.
Imagen con artefactos:
No puedo superar el error.
Tomé el zigzag de la entrega de Metatrader para demostrar el error. Se han añadido búferes adicionales al código, tomados de mi programa. En este código no se realizan manipulaciones con búferes adicionales. Son sólo para demostrar el error.
Trazado de este zigzag en el marco de tiempo EURUSD H1. Cerró la terminal. Se han eliminado del historial todas las series temporales generadas para el EURUSD. Es decir, borró todos los archivos *.hcc y *.hc del par de divisas EURUSD. Se ha hecho para garantizar la carga de los archivos .hcc y la generación de los archivos .hc a partir de una hoja limpia.
Después de iniciar el terminal, verá un montón de artefactos en el gráfico del EURUSD. Estos artefactos no pueden ser tratados.
Adjunto el código modificado del zigzag en forma de texto y en forma de archivo.
Quiero advertir que los parámetros del zigzag se especifican a través de #propert.
Todos los demás búferes no se establecen a través de #propert, porque todo, incluyendo los búferes de zigzag, se cambian dinámicamente.
Por favor, ayude a los desarrolladores de terminales a arreglar este error.
Imagen con artefactos:
Es necesario inicializar todos los búferes.
Si no hay ningún valor en el buffer de la barra, debe escribirse explícitamente en el buffer. En otras palabras, si el valor calculado debe salir al búfer, escríbalo en el búfer, de lo contrario escriba un valor vacío.
En general, no me lo esperaba:
Las pruebas por mi cuenta no han mostrado ninguna diferencia notable.
Si en lugar de
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bichos, errores, preguntas
Vict, 2019.07.09 07:17
Data data[32768];
hacer
¡Hay una ralentización de 6x!
Es necesario inicializar todos los búferes.
Si no hay ningún valor en el buffer de la barra, debe escribirse explícitamente en el buffer. Es decir, si el valor calculado debe salir al buffer - lo escribimos en el buffer, de lo contrario - escribimos un valor vacío.
Lo siento, se me pasó la inicialización. Lo tengo en mi programa pero se me pasó en el ejemplo.
Se adjunta un archivo con la inicialización. El efecto es el mismo.
La pregunta para los desarrolladores sigue siendo. Por favor, arregle este error.
-------------
En mi opinión, ocurre lo siguiente. Al lanzar el programa junto con el terminal, el tamaño de las series de tiempo es igual a cero o tiene algún valor mínimo.
El programa se inicializa en el trozo de historia existente. Pero cuando se aumenta el tamaño de las series de tiempo, los fragmentos de memoria que no pasaron por la inicialización se están utilizando para las matrices de búfer. Como resultado, tenemos este efecto.
Intenté manejar este efecto usando eventos de la terminal. No obstante, los artefactos aparecen durante una fracción de segundo. Y esto no es bueno. Dicho programa no debe ser liberado.
He aquí cómo solucionarlo. Después de la asignación de memoria para los búferes, debe borrar esta memoria de inmediato. Pero, ¿cómo podemos hacerlo? No he encontrado esa característica en el lado del desarrollador de la aplicación del terminal.