Características da linguagem mql5, subtilezas e técnicas - página 132
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
enrolar no cálculo de classe do indicador - ligar amortecedores aos campos de classe
Ai de mim...
Não funcionou. Mesmo que o buffer esteja dentro da classe e do cabo, todos os buffers internos de cálculo intermédio criados permanecem na RAM mesmo depois da instância da classe ser eliminada.
A memória é apagada apenas através da alteração da TF.
O comando da limpeza da memória por punho está obviamente em falta. Por exemplo MemErase( int handle);
Ai de mim...
Não funcionou. Mesmo que o buffer esteja dentro da classe e do cabo, todos os buffers internos de cálculo intermédio criados permanecem na RAM mesmo depois da instância da classe ser eliminada.
A memória é apagada apenas através da alteração da TF.
O que obviamente falta é um comando destinado a limpar a memória por punho. Por exemplo MemErase( int handle);
1. verificou as combinações de um ponteiro de objecto e uma instância de objecto (quero dizer *)?
2. Escreveu o destruidor e apagou o tamanho da matriz nele? (ArrayFree() e ArrayResize(arr,0,0) )
Ai de mim...
Não funcionou. Mesmo que o buffer esteja dentro da classe e do cabo, todos os buffers internos de cálculo intermédio criados permanecem na RAM mesmo depois da instância da classe ser eliminada.
A memória é apagada apenas através da alteração da TF.
O que obviamente falta é um comando destinado a limpar a memória por punho. Por exemplo MemErase( int handle);
E não utilizou o IndicatorRelease?
Mas ainda assim penso que se trata de um empreendimento vazio. Para que precisa dele? Para desenhar animações? E para o comércio? Para calcular a média da média móvel até atingir uma linha recta?
Ai de mim...
Não funcionou. Mesmo que o amortecedor esteja dentro da classe e do cabo, todos os amortecedores intermediários criados internamente ainda permanecem na RAM, mesmo depois da instância da classe ser apagada.
A memória é apagada apenas através da alteração da TF.
O comando para limpar a memória por manípulo está obviamente em falta. Por exemplo MemErase( int handle);
O terminal armazena as caches durante algum tempo, mesmo que o programa não as utilize.
Pode-se apanhar quanto tempo a memória é libertada.
Já utilizou o IndicatorRelease?
Mas mesmo assim, penso que é uma perda de tempo. Diga-me, para que precisa dele? Para desenhar desenhos animados? E para o comércio? Para calcular a média da média móvel até atingir uma linha recta?
Sim, obrigado, Alexey. Eu tinha-me esquecido desta função. Já o tinha visto antes, mas nunca o utilizou.
Eu tentei. Alguma coisa está a correr mal. Apaga depois apaga, mas depois de o apagar, tudo pára.
Simplesmente adicionei uma linha de código à função DrawSetup() antes do cálculo do indicador com os seguintes parâmetros.
O indicador simplesmente pára de funcionar e ainda não consigo compreender a razão.
Penso que se trata de uma ideia fútil. Para que é que preciso dele? Para desenhar desenhos animados? E para o comércio? Para calcular a média da média móvel até atingir uma linha recta?
Estou absolutamente de acordo consigo. É apenas um brinquedo inútil.
O terminal mantém as caches durante algum tempo, mesmo que o programa não as utilize.
Pode demorar quanto tempo leva para a memória se libertar.
Esperei 6 minutos e ainda nada foi esclarecido.
1. verificou as combinações de ponteiro de objecto e instância de objecto (quero dizer *)?
2. Escreveu o destruidor e apagou o tamanho da matriz nele? (ArrayFree() e ArrayResize(arr,0,0) )
1. Sim, fi-lo através de um ponteiro, novo e apagado.
2. portanto, não existe uma matriz. Isto é, existem matrizes internas mas não têm nomes. Existe apenas o número do cabo.
E a cada iteração do for loop, o valor da variável handle aumenta em um. Ou seja, multiplicam-se os amortecedores interiores e todos os anteriores participam no cálculo do próximo.
De acordo com a lógica, devemos fazer IndicatorRelease(handle); antes de outro cálculo completamente novo do indicador, mas já escrevi acima que vai matar o indicador. Não é claro porquê.
Sim, obrigado, Alexey. Eu tinha-me esquecido dessa função. Já o tinha visto antes, mas nunca o utilizou.
Experimentei-o. Alguma coisa está a correr mal. Apaga-o, mas depois de o apagar, tudo pára.
Simplesmente adicionei uma linha de código à função DrawSetup() antes do cálculo do indicador com os seguintes parâmetros.
O indicador simplesmente pára de funcionar e ainda não consigo compreender a razão.
Estou absolutamente de acordo consigo. É apenas um brinquedo inútil.
Não era isso que eu estava a pensar. Penso que deveríamos fazer um par de manipuladores, como um enumerador de gráficos
E uma vez obtido um novo cabo, o cabo usado pode ser deitado fora como o usado ...
Não era isso que eu estava a pensar. Acho que é preciso fazer um par de mãos-cheias, como uma pesquisa gráfica
E uma vez obtido um novo cabo, o usado pode ser descartado como o usado ...
que não vai funcionar.
Nem pensar