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

 
Alexander Laur:
¿Puede describir la tarea? ¿Qué debe hacer el script con todas las barras? Creo que está tratando de resolver el problema de frente. Es difícil dar consejos sin ver el problema que hay que resolver.

Tengo el script, aquí está el ToRhttps://www.mql5.com/p/21/234411 , pero hay dificultades en la operación debido a la falta de memoria.... o más bien se agota después de una corta ejecución del guión.

 
Alexander Laur:
La página está prohibida. Que tengas un script está bien, pero no resuelve el problema. ¿Qué hace el guión?
El script analiza la ubicación del indicador en relación con el precio. Hay muchos criterios - el propósito es encontrar la configuración óptima para el indicador, en el que el indicador es una zona de soporte o resistencia. El script permite conectar cualquier indicador similar a la media móvil y realizar la enumeración de los parámetros.
 
Alexander Laur:

Renat ha respondido que sólo hay una manera: transferir una parte de cálculo del indicador a un script.

Lo entiendo, pero eso complica el trabajo y aumenta mis costes considerablemente. Hace que la herramienta (script) no sea versátil.

Alexander Laur:

También puede hacer masoquismo y dividir el rango calculado de parámetros en subrangos. Y ejecutar el script cambiando los parámetros en cada subrango. Se trata de un proceso que requiere mucho tiempo, lo sé, pero ¿qué podemos hacer?

Ahora creo que la solución puede ser automatizar el proceso de abrir un gráfico por el script, calcular algunos indicadores en él, cerrar el gráfico por el script y abrir uno nuevo - esto permitirá limpiar la memoria?

Alexander Laur:

La segunda opción es cambiar a 5. Es decir, debemos buscar los parámetros óptimos en el 5º indicador y luego sustituir los parámetros óptimos en el 4º indicador. En el 5, es posible gestionar la carga y descarga de indicadores. Pero las operaciones de carga y descarga consumen muchos recursos.

Creo que es mejor tener operaciones costosas que no, y entiendo que se puede usar más memoria en el 5, pero necesito indicadores que fueron escritos para el 4, porque yo comercio en el 4...

Mis cálculos se basan en el primero y no sé cómo convertir el indicador en 5, pero es posible hacer que los indicadores sean compatibles entre sí, al menos después de compilar ...

 
Alexander Laur:

No se ha encontrado el comando para añadir un indicador al gráfico. Al eliminar el gráfico, por supuesto, liberará memoria. Pero cuando se cierra el gráfico, se cierran todos los indicadores del mismo.

Hay un comando para abrir nuevos gráficos, pero no hay ningún comando para adjuntar el indicador al gráfico recién abierto. Por ello, la automatización real tampoco funcionará en este caso.

Y qué pasa con iCustom, lo usamos para llamar al indicador - equivale a añadir un gráfico - de hecho, no pongo el gráfico en el gráfico.
 
Alexander Laur:

Llamar a un indicador a través de iCustom() no es añadir un gráfico al gráfico.

Si no pones el gráfico en el gráfico, entonces ¿qué gráfico vas a matar para liberar memoria?

No pierdas el tiempo, confía en Renate.

Tal vez me equivoque. Vamos a repasarlo de nuevo:

1. Hay un script que llama a la función del indicador iCustom y guarda los buffers del gráfico en la memoria.

2. La llamada a la función iCustom es múltiple - como resultado la RAM se llena y el indicador devuelve ceros.

El terminal debe ser capaz de trabajar con la memoria, ¿verdad? Borrar la caché, según entiendo, es posible si los datos no son necesarios, y no lo son si se elimina el gráfico con datos.

4. Elimine el gráfico y libere la memoria RAM para realizar los cálculos del punto 1.

¿En qué me equivoco?


P.D. Según tengo entendido, los datos están todos ligados al gráfico en el que se realiza el cálculo, independientemente de las cotizaciones que se utilicen para ello.

 
-Aleks-:

Tal vez me equivoque. Vamos a repasarlo de nuevo:

1. Hay un script que llama a la función del indicador iCustom y almacena los buffers gráficos en la memoria.

2. La llamada a la función iCustom es múltiple - como resultado la RAM se llena y el indicador devuelve ceros.

El terminal debe ser capaz de trabajar con la memoria, ¿verdad? Borrar la caché, según entiendo, es posible si los datos no son necesarios, y no lo son si se elimina el gráfico con datos.

4. Elimine el gráfico y libere la memoria RAM para realizar los cálculos del punto 1.

¿En qué me equivoco?


P.D. Según tengo entendido, los datos están ligados al gráfico sobre el que se realiza el cálculo, no importa qué cotizaciones se utilicen para ello.

En el punto 3.

El terminal almacena la caché de las series temporales y los indicadores construidos sobre ellas durante algún tiempo después del cierre, para no tener que recalcular todo de una vez en la siguiente llamada.

 
Andrey Khatimlianskii:

En el punto 3.

El terminal almacena la caché de las series temporales y de los indicadores basados en ellas durante algún tiempo después del cierre, para no tener que recalcular todo a la vez cuando se accede de nuevo.

¿Pero qué es "algún" tiempo? ¿Tal vez haya otros criterios/métodos para liberar recursos (borrar la caché de la memoria)?
 
-Aleks-:
¿Pero qué es "algún" tiempo? ¿Tal vez haya otros criterios/métodos para liberar recursos (eliminar la caché de la memoria)?

No, Renat ya ha respondido.

En MT5 la caché se borra si se descarga el Asesor Experto que utiliza indicadores como recursos. Es decir, puede cargar un gráfico con un Asesor Experto, leer una parte del mismo y cerrar el gráfico. Pero todavía no es muy rápido.

No lo sé en MT4.

 
Andrey Khatimlianskii:

No, Renat ya ha respondido.

En MT5 la caché se borra si se descarga el Asesor Experto que utiliza indicadores como recursos. Es decir, puede cargar un gráfico con un Asesor Experto, leer una parte del mismo y cerrar el gráfico. Pero todavía no es muy rápido.

No lo sé en MT4.

La memoria se libera después de la operación del script. Por lo tanto, la memoria para el cálculo de los datos obtenidos del indicador se libera, pero no afecta a los búferes del gráfico, ¿verdad?

¿Y si traducimos los datos no a través de un búfer gráfico, sino de otra manera - a través de variables globales, por ejemplo (no sé si se puede crear un búfer allí), entonces se puede superar el efecto de la escasez de memoria?

 
He aquí un experimento.
1. abrir el gráfico y el "administrador de tareas" - memoria utilizada 215692 kb
2. I aplicar indicador - memoria ocupada 219612 kb (aumento 3920 kb)
3. Eliminación del indicador - memoria utilizada 217984 kb (liberada 1628 kb)
¿Y los 2292kb restantes de memoria no liberada, según tengo entendido, fueron a parar a la caché?
El buffer no está ocupando demasiados datos - historial de febrero de 2013 en el Sentry.