Erros, bugs, perguntas - página 2676
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
MT5 (build 2347) Porquê uma sobrecarga tão grande ao adicionar um elemento de cada vez a um array usando o ArrayResize, se a memória foi reservada para eles com antecedência?
Por favor, considere melhorar o algoritmo de reserva interna com o ArrayResize.
Por exemplo, para as classes, podemos assumir que elas realizam algum tipo de "registo interno em listas" para além da chamada do construtor.
E no âmbito da reserva com ArrayResize, para além da alocação directa de memória, pode tentar optimizar o processo:
- retirar dados do elemento criado adjacente (por exemplo, ponteiro para uma tabela de funções virtual);
- pré-executar ou reservar espaço para "inscrição interna" de aulas que ainda não foram criadas;
Obrigado pela mensagem.
O código ArrayResize está protegido de ser chamado vazio (quando não há alteração no número de elementos), pelo que o código de função não funciona.
Considerando que uma mudança real no número de elementos desencadeia uma ou outra parte da função ArrayResize, dependendo da matriz
Graças ao código que apresentou, consegui reduzir a complexidade de uma parte do ArrayResize a zero, isto irá acelerar a função para as matrizes de objectos
Pode dizer-me como reduzir o consumo de memória do terminal? Quando dirijo uma EA, peço alguns milhões de carraças. Eu faço cálculos sobre eles e já não preciso deles. Utilizo apenas funções de carraças para carregar carraças frescas, para que não haja lacunas.
Devido a esses milhões de carrapatos, o terminal consome 500 Mb de memória e não tem pressa em libertá-la. Para ser mais exacto, simplesmente não o liberta. É possível forçar o Terminal a limpar todas as suas caches para minimizar o consumo? Para um VPS, 0,5 GB por terminal é demasiado.
Pode dizer-me como reduzir o consumo de memória do terminal? Quando dirijo uma EA, peço alguns milhões de carrapatos. Eu faço cálculos sobre eles e já não preciso deles. Utilizo apenas funções de carraças para carregar carraças frescas, para que não haja lacunas.
Devido a esses milhões de carrapatos, o terminal consome 500 Mb de memória e não tem pressa em libertá-la. Para ser mais exacto, simplesmente não o liberta. É possível forçar o Terminal a limpar todas as suas caches para minimizar o consumo? Para VPS, 0,5 GB por terminal é demasiado.
ArrayFree
Se o seu programa precisa de gerir a memória em ambientes dinâmicos complexos, a função ArrayFree() permite-lhe libertar explícita e imediatamente a memória ocupada por uma matriz dinâmica que já não é necessária.
ArrayFree
Grátis, claro. O próprio terminal armazena carraças na sua cache, das quais não preciso durante a operação.
É melhor para mim levantar estas carraças novamente quando tenho frio. Preciso de um mecanismo para "arrefecer" o Terminal.
Olá, encontrei um problema que o CopyTicks e o CopyTicksRange no testador não conseguem obter dados de outras ferramentas... Quando adicionado ao gráfico, tudo funciona.
Build 2363 (e o mesmo foi em 2361)
Posso ter cometido um erro? Por favor, ajudem, obrigado!
Olá, encontrei um problema que o CopyTicks e o CopyTicksRange no testador não conseguem obter dados de outras ferramentas... Quando adicionado ao gráfico, tudo funciona.
Bild 2363 (e o mesmo foi em 2361)
Posso ter cometido um erro? Por favor, ajudem, obrigado!
CopyTicks não inicia um carregamento de dados no testador
Pedir primeiro CopyRates do instrumento desejado. Pelo menos 1 barra. Em seguida, a bombagem e a geração da sequência de carraças terão lugar.
Depois disso, pedir calmamente carraças
Obrigado pela mensagem.
Graças ao código que apresentou, consegui reduzir a complexidade de uma parte do ArrayResize a zero, o que acelerará a função para as matrizes de objectosO código ArrayResize tem protecção contra uma chamada vazia (quando não há alteração no número de elementos), pelo que o código de função não funciona.
Considerando que uma mudança real no número de elementos, desencadeia uma ou outra parte da função ArrayResize, dependendo da matriz
Boa tarde, muito obrigado.
Nunca tinha utilizado o novo operador antes, porque logicamente deveria ser mais lento do que o ArrayResize com memória reservada.
Mas estou impressionado com os resultados obtidos, acontece que é o contrário, a matriz nativa através do novo operador é mais rápida.
MT5 (construir 2363):
CopyTicks não inicia um carregamento de dados no testador
Pedir primeiro CopyRates do instrumento desejado. Pelo menos 1 barra. Em seguida, a bombagem e a geração da sequência de carraças terão lugar.
Depois disso, pedir calmamente carraças
Muito obrigado, ajudou. Não consegui encontrá-lo na documentação... Ou procurei mal? Seria bom escrever sobre isso aí :)
Seria melhor fazer carregamentos automáticos como em CopyRates.
Limpei ontem a lista de "velhos" agentes inactivos no meu perfil
Um dia depois vou ao perfil e vejo que a lista de agentes foi restaurada às entradas que foram eliminadas.
E a data de criação e actividade dos agentes foi alterada