Metatrader 5 - Tira muito proveito da memória ao percorrer uma carta através de símbolos - página 2
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
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.
Atualmente é de 650 Mb
Eu não mudei nada, apenas o mantive funcionando.
Obrigado pelo feedback.
Acho que vou atualizar para o Windows 10 e ver se isso faz alguma diferença.
Esse script no início é o EA completo (ForumQuestion1.mq5), é o que empurra a memória para cima. Não há outras ações na EA.
Não há controles gráficos.
Olá Alain,
Por favor, veja a palavra doc. em anexo. Isto é de uma instância do Windows Server 2012 R2 rodando no Windows Azure. É uma máquina nova (portanto, sem software engraçado ou nada) e está rodando no centro de dados da Europa Ocidental.
A memória de uso aumentando com o tempo também acontece aqui quando se executa o script ForumQuestion1.mq5 (de antes no tópico).
Aqui está uma quebra do aumento ao longo do tempo das 8:40h às 14:05h, que passou de 74,1MB para 379,9MB.
8:40 da manhã
74,1 MB
Acaba de iniciar o ForumQuestion1 EA
9:53h
281,6 MB
10:30h
297,2 MB
11:23h
319,3 MB
12:23pm
343,5 MB
13:00 pm
369,1 MB
14:05 PM
379,9 MB
Acho isso normal. Meu MT4 está agora na ram de 1GB
Este tópico é sobre o MT5 Daniela.
Solução: Executar um script PowerShell que verifica a memória. Quando ultrapassa 60%, ele reinicia o MetaTrader.
O script está abaixo, estou ocupado testando-o.
Passos:
O script está abaixo deste reinicia Metatrader (terminal64) se a memória ultrapassar 300 MB (de acordo com a coluna de memória em seu Gerente de Tarefas):
################################################################# strict-mode cls $memoryThresholdInKiloBytes = 300000 $cooldownSeconds = 30 $loopPauseInSeconds = 30 $counter = 0 while($true){ if($counter -gt 1000){ cls } #write-host "$(get-date) Checking memory in use... counter=$counter" $processPrivateSet = Get-Counter "\Process(terminal64)\Working Set - Private" $wsPrivateKiloBytes = $processPrivateSet.CounterSamples[0].CookedValue / 1KB $memoryLabel = $wsPrivateKiloBytes.ToString('## ### ###') + " K" write-host "$(get-date) Kilo Bytes in use $memoryLabel" if($wsPrivateKiloBytes -gt $memoryThresholdInKiloBytes){ write-host "$(get-date) Over threshold of $memoryLabel closing metatrader" # Close metatrader (terminal64) Get-Process terminal64 | Foreach-Object { $_.CloseMainWindow() | Out-Null } | stop-process –force # Give time to shutdown write-host "$(get-date) Shutting down cooldown of $cooldownSeconds seconds #####################" start-sleep -Seconds $cooldownSeconds # Open metatrader write-host "$(get-date) Opening metatrader again and wait $cooldownSeconds seconds" &"C:\Program Files\MetaTrader 5\terminal64.exe" start-sleep $cooldownSeconds } start-sleep -Seconds $loopPauseInSeconds $counter = $counter + 1; } # Links # http://stackoverflow.com/questions/33344611/get-memory-private-working-set-of-processVocê já tentou setTERMINAL_MAXBARScom TerminalInfoInteger(...) a um valor razoavelmente pequeno?
Além disso, você já tentou:
TERMINAL_MEMORY_PHYSICAL
Memória física no sistema, Mb
int
TERMINAL_MEMÓRIA_TOTAL
Memória disponível para o processo do terminal , Mb
int
TERMINAL_MEMÓRIA_DISPONÍVEL
Memória livre do processo terminal, Mb
int
TERMINAL_MEMÓRIA_UTILIZADA
Memória utilizada pelo terminal , Mb
int
para verificar onde está o cerne da questão.
Meus 2 centavos é que você não está liberando a memória apenas com "apagar símbolos".
Tente isto: