Teoria da aceleração da EA ao usar um indicador personalizado (função - iCustom) - página 6

 

Alexander Laur, ou seja, enquanto o roteiro/conselheiro estiver rodando a memória é reservado e não pode ser apagado - triste conclusão.
É possível que um script rode outro script e depois fechar o script rodando deve fazer com que a memória seja apagada, ou isso seria considerado como um ambiente de processamento complexo?

 
-Aleks-:

Alexander Laur, ou seja, enquanto o roteiro/conselheiro estiver funcionando, a memória é reservada e não pode ser limpa - triste conclusão.
É possível executar outro script, então fechar o script em execução deve resultar na limpeza da memória, ou será considerado como um ambiente complexo de processamento de dados?

Sugeri imediatamente"abrir gráfico com o Expert Advisor funcionando", isso pode ser feito - ChartOpen + ChartApplyTemplate

A única questão é se a memória será liberada ao fechá-la (apagando o Expert Advisor).

Verifique.

 
Andrey Khatimlianskii:

Sugeri imediatamente"abrir gráfico com o Expert Advisor funcionando", isso pode ser feito - ChartOpen + ChartApplyTemplate

A única questão é se a memória será liberada ao fechá-la (apagando o Expert Advisor).

Verificar.

Eu tentei manualmente, mudando o modelo com muitos indicadores para quase vazio - o efeito está lá (mas o cache permanece - eu acho que não é crítico). Mas como fazer abertura e fechamento através de um roteiro modelo - não sei. Entendi que a dúvida é que, enquanto o roteiro estiver em execução, a memória não será apagada. Andrei, por favor, ajude com a experiência.
 

Pergunta adicional, a escolha do tipo de buffer real para o cálculo dentro do indicador afeta o tamanho do buffer gráfico?

Tipo

Tamanho em bytes

Valor mínimo positivo

Valor máximo

Precisão de representação

Analógico em C++

flutuador

4

1.175494351e-38

3.402823466e+38

7 dígitos significativos

flutuador

duplo

8

2.2250738585072014e-308

1.7976931348623158e+308

15 dígitos significativos

duplo


E uma idéia maluca, e se em vez de um buffer gráfico usarmos TextOut - só não sabemos como ler os dados a partir dele...

 
-Aleks-:

Pergunta adicional, a seleção do tipo de buffer real para o cálculo dentro do indicador afeta o tamanho do buffer gráfico?

Por "buffer gráfico", você quer dizer a exibição gráfica de um indicador normal?
 
Dennis Kirichenko:
Com o termo "buffer gráfico" você quer dizer a exibição gráfica de um indicador regular?

A questão é se é possível afetar o tamanho da memória alocada ao buffer gráfico por uma barra se você usar o flutuador em vez do dobro no código indicador para os cálculos.

//---- buffers

double Vy[];
double bufDirSoft[];

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

 
Além disso, como você pode saber se a memória se esgotou, existem funções?
 
-Aleks-:

A questão é se é possível afetar o tamanho da memória alocada ao buffer gráfico por uma barra se você usar o flutuador em vez do dobro no código indicador para os cálculos...

Não. Há uma função mágica que irá deslocar todas as tentativas:

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

Este mecanismo está embutido na própria linguagem do Terminal. É uma idéia interessante, porém...

 
-Aleks-:
Além disso, como você pode saber se a memória se esgotou, existem funções?

O que você quer dizer com ficar sem memória? :-)

Há algo aqui:

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

Na minha opinião, a maneira mais eficaz de administrar a memória dos recursos indicadores é minimizar o parâmetro "Max barras na história" (Configurações --> Gráficos). Até onde me lembro, o mínimo para o parâmetro é 5k.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks-:
Além disso, como posso saber se a memória está desligada, há alguma função?

É possível recuperar informações sobre o terminal

TERMINAL_MEMÓRIA_TOTAL

Tamanho da memória, disponível para o processo terminal (agente), em MB

int

TERMINAL_MEMÓRIA_DISPONÍVEL

O tamanho da memória disponível do processo do terminal (agente) em MB

int

TERMINAL_MEMÓRIA_UTILIZADA

Tamanho da memória, utilizada pelo terminal (agente), em MB

int

Razão: