Sim, é um loop infinito, mas essa é a idéia.
Continuar pedalando através de todos os símbolos.
O código abaixo dispara a cada 3 segundos.
Aqui está o código snippet (está tudo em um método para fins de demonstração):
void OnTimer() { // Find next symbol long symbolsTotal = SymbolsTotal(false); long count = GlobalVariableGet("testmem"); if(count >= symbolsTotal) { count = 0; } string newSymbol = SymbolName(count, false); SymbolSelect(newSymbol, true); count++; GlobalVariableSet("testmem", count); // Change chart symbol ChartSetSymbolPeriod(0, newSymbol, Period()); // Remove other symbols from Market Watch CArrayString *symbols = new CArrayString(); for(int i = 0; i < SymbolsTotal(true); i++) { string symbol = SymbolName(i, true); // Get name from local market watch symbols.Add(symbol); } int total = symbols.Total(); for(int i = 0; i < total; i++) { string symbolToRemove = symbols.At(i); // Is the symbol not the current chart or about to // be added? if(newSymbol != symbolToRemove) { // Remove from Market Watch SymbolSelect(symbolToRemove, false); } } delete symbols; }
Não sei o que você quer dizer com "símbolos", mas o código acima está em um novo Expert Advisor com o ExecuteTimer() definido para 3 segundos.
Aqui está o código (isto está em um EA):
int OnInit()
{
//--- criar temporizador
EventSetTimer(3);
//---
return(INIT_SUCCEED);
}
Acrescentei o script completo ver arquivo anexo "ForumQuestion1.mq5".
Passos para recriar o erro:
- Abra o script em anexo no Metaeditor (é seguro) para o Metatrader 5
- Gerente de tarefas abertas no Windows
- Procure por "Metatrader 5 Client Terminal" e anote a quantidade de memória
- Execute o roteiro e assista à coluna de memória no Task Manager
A memória vai aumentando lentamente à medida que o script percorre os símbolos.
Hi,
Adicionei o script completo veja o arquivo anexo "ForumQuestion1.mq5".
Passos para recriar o erro:
- Abra o script em anexo no Metaeditor (é seguro) para o Metatrader 5
- Gerente de tarefas abertas no Windows
- Procure por "Metatrader 5 Client Terminal" e anote a quantidade de memória
- Execute o roteiro e assista à coluna de memória no Task Manager
A memória vai aumentando lentamente à medida que o script percorre os símbolos.
Eu tentei seu código e não tenho problemas de memória.
MT5 Build 1325.
Olá Alain,
Obrigado pela resposta.
Estou na mesma construção. O aumento da memória é lento. Demora alguns minutos. Basicamente, aumenta gradualmente.
Veja o arquivo anexo "Memory increase.docx.png", eu tenho algumas capturas de tela mostrando o aumento ao longo do tempo.
Eu estou na mesma construção "MT5 Build 1325".
Informações da máquina:
- Windows 8.1 Enterprise
- OS de 64 bits
- 16Gb RAM
- processador i7
Obrigado
Olá Alain,
Obrigado pela resposta.
Estou na mesma construção. O aumento da memória é lento. Demora alguns minutos. Basicamente, aumenta gradualmente.
Veja o arquivo anexo "Memory increase.docx.png", eu tenho algumas capturas de tela mostrando o aumento ao longo do tempo.
Estou no mesmo build "MT5 Build 1325".
Informações da máquina:
- Windows 8.1 Enterprise
- OS de 64 bits
- 16Gb RAM
- processador i7
Obrigado
Eu estou no Windows 10 se isso fizer alguma diferença.
Seu script está em execução desde alguns minutos antes do meu post anterior. Atualmente o uso de memória é menor do que quando o iniciei (280 Mb contra 300 Mb).
EDIT: Acabei de checar o againt e agora é 189 Mb !!! ainda está diminuindo :D
EDIT2: Rodando em Metaquotes Demo-Servidor.
Obrigado pelo feedback.
Acho que vou atualizar para o Windows 10 e ver se isso faz alguma diferença.
Coloquei-o no Windows Server 12 R2 e isso também aumenta a memória.
Deixe-me monitorar isto por um tempo e dar feedback sobre este tópico.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Tenho um Expert Advisor que foi configurado para fazer o ciclo através de símbolos e mastiga muita memória.
Notei que é quando os símbolos são carregados para dentro e para fora do relógio do mercado que lentamente se insinua. Portanto, não é o gráfico que percorre os itens existentes no relógio do mercado, mas mais quando novos símbolos são carregados e removidos.
Está preparado para fazer o seguinte:
Quando eu removo o máximo de código personalizado possível e simplesmente uso os passos acima para percorrer um gráfico através dos símbolos disponíveis, noto que o uso de memória em minha máquina continua aumentando.
A CPU permanece e uma taxa constante, mas a memória dispara.
Dúvidas:
(ou seja, abrir um novo gráfico com ChartOpen() em vez de usar o gráfico existente com ChartSetSymbolPeriod())
(ou seja, é exatamente assim que funciona)
Muito agradecido.