Teoria da aceleração da EA ao usar um indicador personalizado (função - iCustom) - página 5
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
Você pode descrever a tarefa. O que o roteiro deve fazer com todas as barras? Acho que você está tentando resolver o problema de frente. É difícil dar conselhos sem ver o problema a ser resolvido.
Eu tenho o roteiro, aqui está o ToRhttps://www.mql5.com/p/21/234411 , mas há dificuldades de operação devido à falta de memória.... ou melhor, acaba depois de uma curta etapa do roteiro.
A página é banida. Que você tem um roteiro é bom, mas não resolve o problema. O que o roteiro faz?
Renat já respondeu que só há uma maneira - transferir um cálculo indicador para um roteiro.
Entendo isso, mas isso torna o trabalho mais complicado e aumenta consideravelmente meus custos. Torna a ferramenta (roteiro) não versátil.
Você também pode realizar masoquismo e quebrar a gama calculada de parâmetros em subgrupos. E execute os parâmetros de mudança de roteiro em cada subgrupo. É um processo demorado, eu sei, mas o que podemos fazer?
Agora eu acho que a solução pode ser automatizar o processo de abrir um gráfico pelo script, calcular alguns indicadores nele, fechar o gráfico pelo script e abrir um novo - isso permitirá limpar a memória?
A segunda opção é mudar para 5. Ou seja, devemos procurar os parâmetros ótimos no 5º indicador e depois substituir os parâmetros ótimos no 4º indicador. Nos 5, é possível gerenciar a carga e descarga de indicadores. Mas as operações de carga/descarga são bastante intensivas em recursos.
Acho que é melhor ter operações caras do que não, e entendo que mais memória pode ser usada em 5, mas preciso de indicadores que foram escritos para 4, porque eu negocio em 4...
Meus cálculos são baseados no primeiro e não sei como converter indicador em 5, mas é possível tornar os indicadores compatíveis entre si, pelo menos após a compilação ...
O comando para adicionar um indicador ao gráfico não foi encontrado. Ao apagar a tabela, você irá, é claro, liberar a memória. Mas quando você fechar o gráfico, todos os indicadores no gráfico serão fechados.
Há um comando para abrir novos gráficos, mas não há nenhum comando para anexar o indicador ao gráfico recém aberto. É por isso que a automação real também não funcionará neste caso.
Chamar um indicador via iCustom() não é adicionar um gráfico ao gráfico.
Se você não colocar a carta na carta, então que carta você vai matar para liberar a memória?
Não perca seu tempo, confie na Renate.
Talvez eu esteja enganado. Vamos rever isso novamente:
1. Há um script que chama a função de indicador iCustom e salva os buffers de gráficos na memória.
2. A chamada de função iCustom é múltipla - como resultado, a RAM é preenchida e o indicador retorna zeros.
O terminal deve ser capaz de trabalhar com memória, certo? Para limpar o cache, como eu entendo, é possível se os dados não forem necessários, e eles não são necessários se o gráfico com os dados for removido.
4. Apagar a tabela e liberar a RAM para cálculos adicionais no ponto 1.
Onde eu estou errado?
P.S. Pelo que entendi, os dados estão todos vinculados ao gráfico no qual o cálculo é feito - não importa quais citações são usadas para ele.
Talvez eu esteja enganado. Vamos rever isso novamente:
1. Há um roteiro que chama a função de indicador iCustom e armazena os buffers gráficos na memória.
2. A função iCustom é chamada várias vezes - como resultado, a RAM é preenchida e o indicador retorna zeros.
O terminal deve ser capaz de trabalhar com memória, certo? Para limpar o cache, como eu entendo, é possível se os dados não forem necessários, e eles não são necessários se o gráfico com os dados for removido.
4. Apagar a tabela e liberar a RAM para cálculos adicionais no ponto 1.
Onde eu estou errado?
P.S. Pelo que entendi, os dados estão vinculados ao gráfico no qual o cálculo é realizado - não importa quais citações são usadas para isso.
No ponto 3.
O terminal armazena o cache das séries de tempos e indicadores construídos sobre eles por algum tempo após o fechamento, a fim de não recalcular tudo de uma vez na próxima chamada.
No ponto 3.
O terminal armazena o cache de timeseries e indicadores com base neles por algum tempo após o fechamento, para que não tenha que recalcular tudo de uma só vez quando você voltar a acessá-lo.
Mas o que é "algum" tempo? Talvez existam outros critérios/métodos para liberação de recursos (remoção do cache da memória)?
Não, Renat já respondeu.
No MT5 o cache é liberado se o Expert Advisor que usa indicadores como recursos for descarregado. Ou seja, você pode carregar um gráfico com um consultor especializado, ler uma parte dele e fechar o gráfico. Mas ainda não é muito rápido.
Eu não sei sobre isso no MT4.
Não, Renat já respondeu.
No MT5 o cache é liberado se o Expert Advisor que usa indicadores como recursos for descarregado. Ou seja, você pode carregar um gráfico com um consultor especializado, ler uma parte dele e fechar o gráfico. Mas não é muito rápido de qualquer forma.
Eu não sei sobre isso no MT4.
A memória é liberada após a operação do roteiro. Então, a memória para o cálculo dos dados obtidos do indicador é liberada, mas não diz respeito aos buffers de gráficos, certo?
E se traduzirmos os dados não através do buffer gráfico, mas sim - através de variáveis globais, por exemplo (não sei se um buffer pode ser criado lá), então o efeito da falta de memória pode ser superado?
1. gráfico aberto e "gerenciador de tarefas" - memória usada 215692 kb
2. Eu aplico indicador - memória ocupada 219612 kb (aumento 3920 kb)
3. Indicador de remoção - memória usada 217984 kb (lançado 1628 kb)
E os 2292kb restantes de memória não liberada, como eu entendo, foram para o cache?
O buffer não está ocupando muitos dados - histórico de fevereiro de 2013 sobre a Sentinela.