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

 
-Aleks-:

Já entendi, o problema está resolvido.

Quando confrontado com freios indicadores reais em um projeto real, eu estarei pronto para continuar a discussão.

 
-Aleks-:

Um fato triste para cinco, e os desenvolvedores não explicam o significado sagrado disso?

Aparentemente, é uma questão de arquitetura. Eu não estava interessado.

Houve aqui uma discussão sobre um tema relacionado - https://www.mql5.com/ru/forum/8278

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

O iniciante entrou na engrenagem, não tendo entendido o básico do trabalho com indicadores ... mas a informação está disponível ao público (artigos + Documentação).

Daí muitas perguntas e palpites errados...

Outro link para o indicador criado usando OpenCL. A carga está na placa de vídeo.

É verdade, para obter uma velocidade de cálculo comparativa, a tarefa tem de ser realmente "pesada"...

 
komposter:

A propósito, o MT4 lida muito bem com o cálculo de apenas uma parte da história e não consome memória para todo o buffer, se o loop passar pelas últimas 1000 barras (mesmo se houver 50000 barras "na janela").

No entanto, encontrei este problema no MT5 - ele aloca memória para todas as 50000 barras, mesmo que apenas as últimas 100 sejam contadas.

Você tem certeza disso?

Em ambas as plataformas, os buffers indicadores são alocados automaticamente e da mesma forma para todo o histórico de barras disponíveis.

 
Renat:

Você tem certeza disso?

Em ambas as plataformas, os buffers indicadores são alocados automaticamente e igualmente para todo o histórico de barras disponíveis.

Não o verifiquei no último semestre, mas o mesmo indicador com 1000 barras em MT4 e MT5 usou uma quantidade muito diferente de memória (quando exibia um grande número de barras na janela).

Agora tenho dúvidas. Talvez seja um problema com o cache de objetos que discutimos aqui -https://www.mql5.com/ru/forum/8278?

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

Você tem certeza disso?

Em ambas as plataformas, os buffers indicadores são alocados automaticamente e o mesmo para todo o histórico de barras disponíveis.

Encontrei um problema no MT4 - há um roteiro que tem a tarefa de sobrepor um indicador em um gráfico, coletar dados de seu buffer e fazer o cálculo matemático e a análise.

O funcionamento do script com indicadores embutidos é perfeito, mas as coisas não são tão boas com indicadores chamados via iCustom - a memória, alocada para o terminal (máximo), termina rapidamente, como resultado o script começa a obter valores nulos do buffer do indicador. Existe a possibilidade de limpar à força a RAM no momento da exclusão do indicador do gráfico ou após sua rechamada, mas com parâmetros diferentes, através do iCustom)?

 
-Aleks-:

Enfrentei um problema com o MT4 - há um roteiro que implementa um indicador em um gráfico, coleta dados de seu buffer e realiza cálculos e análises matemáticas.

O funcionamento do script com indicadores embutidos é perfeito, mas as coisas não são tão boas com indicadores chamados via iCustom - a memória, alocada para o terminal (máximo), termina rapidamente, como resultado o script começa a obter valores nulos do buffer do indicador. Existe a possibilidade de limpar à força a RAM no momento da remoção do indicador do gráfico ou após sua rechamada, mas com parâmetros diferentes, através do iCustom)?

E exatamente quantos iCustoms com parâmetros diferentes você já criou?

Se há dezenas e centenas (parece que sim), nada pode ser feito dentro dos indicadores externos. Você só pode incorporá-lo dentro de sua EA como uma unidade de cálculo que não consome memória.

No MetaTrader 5 há um controle total sobre todos os indicadores solicitados, mas mesmo ali o jogo "Eu crio e excluo centenas de indicadores" está repleto de custos sérios.

 
Renat Fatkhullin:

E exatamente quantos iCustoms com parâmetros diferentes você já criou?

Se há dezenas e centenas (parece ser assim), nada pode ser feito dentro de indicadores externos. A única coisa que você pode fazer é incorporá-lo em sua EA como uma unidade de cálculo que não consome memória.

No MetaTrader 5 há um controle total sobre todos os indicadores solicitados, mas o jogo "Eu crio e excluo centenas de indicadores" está repleto de custos sérios.

Você cria um único indicador, depois muda seus parâmetros. A função iCustom é utilizada no próprio indicador com o pedido de dados para outro indicador - foi mais fácil fazê-lo desta forma.
Se contarmos todos os pedidos deste grupo, receberemos aproximadamente 7 buffers.
Outros indicadores com a função iCustom, mas mais simples, os enigmas do script... sobreposições totais na vizinhança de dez mil. O indicador atual se esmaga na sexta dúzia de passes.
Entendo que estou ficando sem memória, mas se não estamos usando dados antigos, por que os novos dados não estão sendo preenchidos corretamente?

Por que no MT4 não há nenhuma função para apagar o indicador da memória, é muito difícil de implementar?

 
Se o número de cópias indicadoras for alto, integrar na EA. Não há outra saída.
 
Renat Fatkhullin:
Se o número de cópias de indicadores for grande, então integre-os no Expert Advisor. Não há outra solução.

Não estamos falando aqui de um EA, estamos falando de um roteiro! O roteiro analisa o indicador. Se ensinarmos o roteiro a fechar e abrir o gráfico após várias passagens (mudança de parâmetros indicadores e sua análise), isso permitirá limpar a memória?

Alexander Laur:

Por que criar um indicador em seu Expert Advisor que deve ser apagado mais tarde, especialmente não uma vez?

Inclua no código da EA uma função que realize um cálculo semelhante ao cálculo do indicador. Nesta função, você pode facilmente alterar os parâmetros para o cálculo e não haverá excesso de memória. Além disso, o cálculo em todas as barras, que, como eu entendo, você não precisa, pode ser evitado. E você não vai precisar da função iCustom().

Eu só preciso de todas as barras por um período. O script funciona - é universal para análise de indicadores de certo tipo - é caro escrever um script para cada indicador. Se apenas o compilador inserisse indicadores (de acordo com um determinado comando) nos conselheiros/scrições/indicadores, então a vida seria diferente! Ah, os sonhos...