Errores, fallos, preguntas - página 2557

 
Nikolai Semko:

Sí, chocar es muy duro. Es mejor no arriesgarse.
Se trata de la memoria, por supuesto.
Si limpias la memoria con la ayuda de tus manos como estas:

entonces el choque tampoco se produce. Al menos a mí no me ha pasado.
Pero cuando se modifica el TF, ¡las matrices deben limpiarse automáticamente!

No entiendo, por qué debemos tratar con la función Crash() si no lo hace, porque lee sólo la información sobre los indicadores.
Tal vez, la ejecución de esta función ralentiza el OnDeinit al cambiar el TF, y por lo tanto MT5 no tiene tiempo para limpiar la memoria.
Hay problemas con la función asíncrona OnDeinit durante mucho tiempo. ¡No es bueno! El sistema no debe fallar debido a la asincronía.

1) aquí hay que truncar el esturión con INT_MAX(2 bn):

CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,(TimeCurrent()-Weeks*7*24*60*60)*1000,INT_MAX);

también lo arreglaremos por nuestra parte.

2) toda la memoria tiene que ser gestionada de manera muy estricta, no hay GC aquí

3) la reinicialización del indicador en el cambio de marco temporal es cálida sin la reinicialización física desde cero, por lo que es necesario liberar memoria por sí mismo. especialmente los recursos a nivel global

4) utilizar OOP, al menos le dará la capacidad de describir y controlar adecuadamente los recursos

 

Y aquí hay una captura de pantalla de la carga del sistema al desplazarse - el GP está casi en un estado muerto - ¿por qué no se carga?


 
Aleksey Vyazmikin:

Hablo de un procesador FX-8350 y una tarjeta gráfica Radeon HD 7950. No tengo la sensación de que la tarjeta gráfica sea cargada por la MT5.

Sin embargo, lo es. La tarjeta gráfica tiene un gran impacto en la velocidad de renderizado, ya que es la que se utiliza en el renderizado.

A tu pregunta le falta información sobre el entorno en el que se produce el desplazamiento.

Por ejemplo:

  • cuántos indicadores, de qué tipo son - la complejidad de la representación es completamente diferente
  • cuántos programas hay en el gráfico
  • si los programas reaccionan a los eventos, especialmente a los movimientos, al ratón, etc. - pueden crear movimiento en sus hilos
  • Desplazamiento hacia el borde izquierdo del gráfico, lo que provoca la paginación automática y la reconstrucción de los datos
  • número de objetos gráficos en el área visible y en el total del gráfico, incluidos los ocultos

Si la situación es estable, todos los datos se calculan y no hay peticiones inducidas, entonces la tarjeta de vídeo y la CPU son responsables de la carga.


Dado que has dicho claramente "saltar al 100% en UN núcleo, no en todos los núcleos", es una situación perfectamente normal. El ordenador está haciendo su trabajo - está cargando el núcleo seleccionado y al hacerlo tiene un uso de la CPU = 12,5% de los 8 núcleos, no el 100%.

 
Renat Fatkhullin:

1) hay que truncar el esturión aquí con INT_MAX(2 bln):

También corregiremos esto.

2) Toda la memoria debe ser gestionada de forma muy estricta, aquí no hay GC.

3) la reinicialización del indicador en el cambio de marco temporal es cálida sin la reinicialización física desde cero, por lo que es necesario liberar memoria por sí mismo. especialmente los recursos a nivel global

4) utilizar OOP, al menos le dará la capacidad de describir y controlar adecuadamente los recursos

Para continuar con el mismo tema, por favor, mira este post - no está claro de dónde vienen estos ticks cuando la bolsa está cerrada - ¿debo contactar con el broker o con la bolsa?

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

MQL5 Plazos propios

Aleksey Vyazmikin, 2019.09.07 09:50

No sé qué hacer con ellos, no sé qué hacer con ellos, y no sé si están bien... Y durante el despeje.



 
Aleksey Vyazmikin:

Y aquí hay una captura de pantalla de la carga del sistema al desplazarse - el GP está casi en un estado muerto - ¿por qué no se está cargando?

Así que esta vez no se le transmite nada grave.

Y aquí está mi prueba, en una pantalla completamente en blanco con desplazamiento activo: se puede ver claramente el pico de carga, es la supervisión interna de Windows 10


 
Renat Fatkhullin:

Sin embargo, lo hace. La tarjeta gráfica tiene una gran influencia en la velocidad de renderizado, ya que es la que se utiliza en el renderizado.

A tu pregunta le falta información sobre el entorno en el que se produce el desplazamiento.

Por ejemplo:

  • cuántos indicadores, qué tipo de indicadores - la complejidad de la representación es totalmente diferente
  • cuántos programas hay en el gráfico
  • si los programas reaccionan a los eventos, especialmente a los movimientos, al ratón, etc. - pueden crear movimiento en sus hilos
  • Desplazamiento hacia el borde izquierdo del gráfico, lo que provoca la paginación automática y la reconstrucción de los datos
  • número de objetos gráficos en el área visible y en el total del gráfico, incluidos los ocultos

Si la situación es estable, todos los datos se calculan y no hay peticiones inducidas, entonces la tarjeta de vídeo y la CPU son responsables de la carga.


Dado que has dicho claramente "saltar al 100% en UN núcleo, no en todos los núcleos", es una situación perfectamente normal. El ordenador está haciendo su trabajo - está cargando el núcleo seleccionado y al hacerlo tiene un uso de la CPU = 12,5% de los 8 núcleos, no el 100%.

Doy información sobre el medio ambiente:

- Los indicadores son 16, la renderización no es complicada, sin kanvas, barras de herramientas, y otros adornos - palos / rayas - Adjunto una captura de pantalla.

- No hay programas en el gráfico, abro una ventana después del optimizador, es como un ejemplo - los gráficos de trabajo son lentos también, pero menos (hay menos indicadores).

- No, los eventos no se procesan.

- Se selecciona el modo de visualización de barras ilimitadas, es decir, se excluye la paginación.

- No hay objetos gráficos, o mejor dicho, he eliminado todas las flechas y guiones. Queda una etiqueta - es del indicador. Hoy tengo un día libre y no debería interferir en él.

He puesto una captura de pantalla más arriba en la que se ve que la tarjeta gráfica no está conectada, ¿hay alguna forma de comprobar si está conectada o es normal que la carga sea casi nula y el núcleo esté cargado?

Capturas de pantalla de la plataforma MetaTrader

Si Splice, M1, 2019.09.07

JSC ''Otkritie Broker'', MetaTrader 5, Real

Si Splice, M1, 2019.09.07, Otkritie Broker, MetaTrader 5, Real


 
Renat Fatkhullin:

Así que esta vez no se le transmite nada grave.

Y aquí está mi prueba, en una pantalla completamente en blanco mientras se desplaza activamente: se puede ver claramente el pico de carga, este es el monitoreo estándar de Windows 10


Así que tal vez debería, pero no lo es - ¿cómo lo sabes?

 

Parece que he explicado todo con suficiente detalle y de muchas maneras diferentes.

El ordenador hace su trabajo. Todo trabajo cuesta recursos y usted ve el consumo de esos recursos.

Qué te hace pensar que en tu opinión no se deben consumir recursos, no lo entiendo.


No sé exactamente qué características de la GPU considera MSI Afterburner. Hay muchas características por ahí y no estoy del todo seguro de cuál es la carga global de la GPU, más que algún punto en particular.

Mi prueba: lo cojo y me desplazo por la ventana del navegador:

La situación es exactamente la misma cuando se desplaza un gráfico en MetaTrader 5:


El uso del terminal de la tarjeta gráfica está probado.

Teniendo en cuenta que ya he dedicado 20 años a proyectos de terminales comerciales y su optimización, es extraño que no se confíe en mis palabras.

 
Aleksey Vyazmikin:

Así que tal vez debería, pero no lo es - ¿cómo lo sabes?

Cambie el programa de pruebas o escuche a alguien que esté directamente involucrado en el asunto en cuestión.
 
Renat Fatkhullin:

Parece que lo he explicado todo con mucho detalle y minuciosidad.

El ordenador hace su trabajo. Todo trabajo cuesta recursos y usted ve el consumo de esos recursos.

Qué te hace pensar que en tu opinión no se deben consumir recursos, no lo entiendo.


No sé cuál es exactamente la especificación de la GPU juzgada por MSI Afterburner. Hay muchas características por ahí y no estoy del todo seguro de cuál es la carga total de la GPU, más que algún punto en particular.

Mi prueba: lo cojo y me desplazo por la ventana del navegador:

La situación es exactamente la misma cuando se desplaza un gráfico en MetaTrader 5:


El uso de la carta por parte del terminal está probado.

Teniendo en cuenta que ya he dedicado 20 años a proyectos de terminales comerciales y su optimización, es extraño que no se confíe en mis palabras.

¡No se trata de confiar en ti! Estoy asumiendo que hay un problema con los drivers o algo así, aunque todo tipo de juegos 3D corren.

El navegador carga la tarjeta de vídeo, bueno, no todas las páginas, por supuesto, pero con videoclips y algo similar - lo he comprobado.

También lo he comprobado. Luego he lanzado todos los indicadores incorporados de MT5 en el gráfico de 40 índices y todo se desplaza muy rápido, la carga del núcleo es del 20%-25%.

¿Entonces el problema está en algún indicador que tengo? No lo entiendo, pero ya está calculado. Durante muchos años, he estado pidiendo algún gestor de implementar, lo que el usuario podría ver que el programa / indicador / script en el gráfico, la cantidad de tiempo de CPU sería muy conveniente.

Razón de la queja: