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

 

Alexander Laur, es decir, mientras se ejecute el script/asesor la memoria está reservada y no se puede borrar - triste conclusión.
¿Es posible que la secuencia de comandos ejecute otra secuencia de comandos, y que luego el cierre de la secuencia de comandos en ejecución haga que se borre la memoria, o se consideraría como un entorno de procesamiento complejo?

 
-Aleks-:

Alexander Laur, es decir, mientras se ejecute el script/asesor, la memoria está reservada y no se puede limpiar - triste conclusión.
¿Es posible ejecutar otro script, y luego cerrar el script que se está ejecutando debería dar lugar a la limpieza de la memoria, o se considerará como un entorno de procesamiento de datos complejo?

Inmediatamente sugerí"abrir el gráfico con el Asesor Experto en marcha", se puede hacer - ChartOpen + ChartApplyTemplate

La única duda es si la memoria se liberará al cerrarlo (borrar el Asesor Experto).

Compruébalo.

 
Andrey Khatimlianskii:

Inmediatamente sugerí"abrir el gráfico con el Asesor Experto en marcha", se puede hacer - ChartOpen + ChartApplyTemplate

La única duda es si la memoria se liberará al cerrarlo (borrar el Asesor Experto).

Compruébalo.

Lo he probado manualmente, cambiando la plantilla con muchos indicadores a casi vacía - el efecto está ahí (pero el caché permanece - creo que no es crítico). Pero cómo hacer la apertura y el cierre a través de una secuencia de comandos de la plantilla - no sé. He entendido que la duda es que mientras se ejecute el script, la memoria no se borrará... Andrei, por favor, ayuda con el experimento.
 

Pregunta adicional, ¿la elección del tipo de búfer real para el cálculo dentro del indicador afecta al tamaño del búfer gráfico?

Tipo

Tamaño en bytes

Valor mínimo positivo

Valor máximo

Exactitud de la representación

Analógico en C++

float

4

1.175494351e-38

3.402823466e+38

7 dígitos significativos

float

doble

8

2.2250738585072014e-308

1.7976931348623158e+308

15 dígitos significativos

doble


Y una idea loca, qué tal si en vez de un buffer gráfico usamos TextOut - sólo que no sé cómo leer datos de él...

 
-Aleks-:

Pregunta adicional, ¿la selección del tipo de búfer real para el cálculo dentro del indicador afecta al tamaño del búfer gráfico?

¿Por "buffer gráfico" te refieres a la visualización gráfica de un indicador normal?
 
Dennis Kirichenko:
¿Con el término "buffer gráfico" te refieres a la visualización gráfica de un indicador normal?

La pregunta es si es posible afectar el tamaño de la memoria asignada al buffer gráfico en una barra si se utiliza float en lugar de double en el código del indicador para los cálculos.

//---- buffers

double Vy[];
double bufDirSoft[];

extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;

 
Además, ¿cómo se puede saber si la memoria se ha agotado, hay alguna función?
 
-Aleks-:

La pregunta es si es posible afectar el tamaño de la memoria asignada al buffer gráfico en una barra si se utiliza float en lugar de double en el código del indicador para los cálculos...

No. Hay una función mágica que desplazará todos los intentos:

bool  SetIndexBuffer(
   int                    index,         // индекс буфера
   double                 buffer[],      // массив
   ENUM_INDEXBUFFER_TYPE  data_type      // что будем хранить
   );

Este mecanismo está integrado en el propio lenguaje de Terminal. Pero es una idea interesante...

 
-Aleks-:
Además, ¿cómo se puede saber si la memoria se ha agotado, hay alguna función?

¿A qué te refieres con quedarse sin memoria? :-)

Hay algo aquí:

https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer

En mi opinión, la forma más eficaz de gestionar la memoria para los recursos del indicador es minimizar el parámetro "Max bars in history" (Settings --> Charts). Que yo recuerde, el mínimo para el parámetro es de 5k.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks-:
Además, ¿cómo puedo saber si la memoria está agotada, hay alguna función?

Es posible recuperar información sobre el terminal

TERMINAL_MEMORY_TOTAL

Tamaño de la memoria, disponible para el proceso del terminal (agente), en MB

int

TERMINAL_MEMORIA_DISPONIBLE

El tamaño de la memoria disponible del proceso terminal (agente) en MB

int

TERMINAL_MEMORY_USED

Tamaño de la memoria, utilizada por el terminal (agente), en MB

int

Razón de la queja: