Teoría de la aceleración del EA cuando se utiliza un indicador personalizado (función - iCustom) - página 4

 
-Aleks-:

Lo entiendo, el problema está inventado.

Cuando me enfrente a los frenos de los indicadores reales en un proyecto real, estaré preparado para continuar el debate.

 
-Aleks-:

Un hecho triste para cinco, ¿y los desarrolladores no explican el significado sagrado de esto?

Aparentemente, es una cuestión de arquitectura. No me interesaba.

Hubo un debate sobre un tema relacionado aquí - https://www.mql5.com/ru/forum/8278

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 

El principiante se metió en el ajo, sin haber entendido los fundamentos del trabajo con indicadores ... pero la información está disponible públicamente (artículos + Documentación).

De ahí un montón de preguntas y conjeturas erróneas...

Otro enlace al indicador creado con OpenCL. La carga está en la tarjeta de vídeo.

Es cierto que para obtener una velocidad de cálculo comparativa, la tarea tiene que ser realmente "pesada"...

 
komposter:

Por cierto, MT4 se las arregla muy bien con el cálculo de sólo una parte de la historia y no consume memoria para todo el buffer, si el bucle pasa por las últimas 1000 barras (incluso si hay 50000 barras "en la ventana").

Sin embargo, me encontré con este problema en MT5 - asigna memoria para todas las 50000 barras aunque sólo se cuenten las últimas 100.

¿Estás seguro de eso?

En ambas plataformas, los búferes de los indicadores se asignan automáticamente y de la misma manera para todo el historial de barras disponible.

 
Renat:

¿Está seguro de esto?

En ambas plataformas, los búferes de los indicadores se asignan automáticamente y por igual para todo el historial de barras disponible.

No lo he comprobado en el último medio año, pero el mismo indicador con 1000 barras en MT4 y MT5 utilizaba una cantidad de memoria muy diferente (cuando se mostraba un gran número de barras en la ventana).

Ahora tengo dudas. Tal vez sea un problema con el caché de objetos del que hablamos aquí -https://www.mql5.com/ru/forum/8278?

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 
Renat Fatkhullin:

¿Está seguro de esto?

En ambas plataformas los búferes de los indicadores se asignan automáticamente y son los mismos para todo el historial de barras disponible.

Me encontré con un problema en MT4 - hay un script que tiene la tarea de superponer un indicador en un gráfico, recoger los datos de su buffer y hacer el cálculo matemático y el análisis.

El funcionamiento del script con los indicadores incrustados es perfecto, pero las cosas no son tan buenas con los indicadores llamados a través de iCustom - la memoria, asignada para el terminal (máximo), termina rápidamente, como resultado el script comienza a obtener valores cero del buffer del indicador. ¿Existe la posibilidad de borrar forzosamente la memoria RAM en el momento de la eliminación del indicador del gráfico o después de su rellamada, pero con parámetros diferentes, a través de iCustom)?

 
-Aleks-:

Me he enfrentado a un problema con MT4 - hay un script que implementa un indicador en un gráfico, recoge los datos de su buffer y realiza un cálculo y análisis matemático.

El funcionamiento del script con los indicadores incrustados es perfecto, pero las cosas no son tan buenas con los indicadores llamados a través de iCustom - la memoria, asignada para el terminal (máximo), termina rápidamente, como resultado el script comienza a obtener valores nulos del buffer del indicador. ¿Existe la posibilidad de borrar a la fuerza la memoria RAM en el momento en que se retira el indicador del gráfico o después de volver a llamarlo, pero con parámetros diferentes, a través de iCustom)?

¿Y exactamente cuántos iCustoms con diferentes parámetros has creado?

Si hay docenas y cientos (eso parece), no se puede hacer nada dentro de los indicadores externos. Sólo puede incrustarlo dentro de su EA como una unidad de cálculo que no consume memoria.

En MetaTrader 5 hay un control total sobre todos los indicadores solicitados, pero incluso allí el juego "creo y borro cientos de indicadores" está cargado de graves costes.

 
Renat Fatkhullin:

¿Y exactamente cuántos iCustoms con diferentes parámetros has creado?

Si hay docenas y cientos (parece que es así), no se puede hacer nada dentro de los indicadores externos. Lo único que puedes hacer es incrustarlo dentro de tu EA como una unidad de cálculo que no consume memoria.

En MetaTrader 5 hay un control total sobre todos los indicadores solicitados, pero el juego "creo y borro cientos de indicadores" está cargado de graves costes.

Se crea un único indicador y se modifican sus parámetros. La función iCustom se utiliza en el propio indicador con la solicitud de datos para otro indicador - era más fácil de hacer de esta manera.
Si contamos todas las peticiones de este grupo, obtendremos aproximadamente 7 buffers.
Otros indicadores con la función iCustom, pero más sencillos, el script cruza... total de solapamientos en torno a los diez mil. El indicador de corriente cruje en la sexta docena de pasadas.
Entiendo que me estoy quedando sin memoria, pero si no estamos utilizando datos antiguos, ¿por qué no se rellenan correctamente los nuevos datos?

¿Por qué en MT4 no hay una función para borrar el indicador de la memoria, es muy difícil de implementar?

 
Si el número de copias del indicador es alto, integrar en el EA. No hay otra salida.
 
Renat Fatkhullin:
Si el número de copias de los indicadores es grande, entonces intégrelos en el Asesor Experto. No hay otra solución.

No estamos hablando de un EA, sino de un script. El script analiza el indicador. ¿Existe alguna solución para liberar la memoria en este sentido? Si enseñamos al script a cerrar y abrir el gráfico después de varias pasadas (cambiando los parámetros de los indicadores y su análisis), ¿permitirá esto limpiar la memoria?

Alexander Laur:

¿Por qué crear un indicador en su Asesor Experto que debe ser eliminado más tarde, especialmente una vez?

Incluya en el código del Asesor Experto una función que realice un cálculo similar al del indicador. En esta función, puede cambiar fácilmente los parámetros para el cálculo y no habrá sobrecarga de memoria. Además, se puede evitar el cálculo en todas las barras, que, según tengo entendido, no necesitas. Y no necesitarás la función iCustom().

Sólo necesito todas las barras para un período. El script funciona - es universal para el análisis de los indicadores de un determinado tipo - es costoso escribir un script para cada indicador. Si sólo el compilador insertara los indicadores (según un determinado comando) en los asesores/scripts/indicadores, entonces la vida sería diferente! Ah, los sueños...