Erros, bugs, perguntas - página 2667
![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
Acontece que o perfilador para projecto de guião só exibe resultados quando a optimização está desactivada, se a optimização estiver activada, tudo funciona, mas sem quaisquer resultados.
Eu tinha um bug de MT5 (build 2345) e não percebi porque é que o profiler está a funcionar e a funcionar, mas não são apresentados resultados.
Acontece que o perfilador para projecto de guião só mostra resultados quando a optimização está desactivada, se a optimização estiver activada então tudo funcionará e funcionará, mas sem qualquer resultado.
O perfilador não funciona para todos os indicadores (sem optimização). Escrevi sobre isso duas vezes no fórum, enviei código aos programadores em PM - sem resposta.
Grosso modo, estava a pensar porquê dois algoritmos que dão o mesmo resultado no final de execução a velocidades diferentes, um drawdown de 1,7x no modo de optimização.
Como resultado, adquirimos experiência prática com o profiler MT5 e detectámos uma série de defeitos no seu funcionamento.
Como não é claro se os criadores estão interessados nesta informação, e não há vontade de gastar horas de tempo para a localização de bugs, apenas serão dadas breves informações sobre os problemas detectados:
1) Não há forma de comparar as velocidades de diferentes algoritmos.
Assim, um algoritmo que é três vezes mais rápido do que outros, tanto com optimização activada como sem, pode aparecer o mais lento no perfilador.
Aparentemente, existe algum tipo de sobrecarga do profiler, que afecta o tempo de execução dos algoritmos, neste caso, não vale a pena comparar a velocidade de desempenho dos algoritmos no profiler.
2) Valor de contagem incorrecto nas pontas de ferramentas do histograma no ecrã.
O profiler diz que a função foi iniciada 80K vezes e não 20K vezes como esperado, da mesma forma a contagem é excedida por vezes para cordas diferentes, três vezes para algumas cordas e duas vezes para outras.
3) Valor incorrecto do Tempo nas pontas de ferramentas do histograma no ecrã.
Há casos em que o profiler mostra que o algoritmo entrou na condição 99,90% das vezes, e na realidade só acontece uma vez em 20K passagens.
Não é um insecto, é mais um comentário!
mt 5 construir 2340.
Ontem, quando abri o Directório de Dados, não reparei como a pasta de Indicadores foi movida para a pasta de Especialistas. Depois desabilitei o mt5 e activei-o hoje, os indicadores também podem ser utilizados a partir do Navegador como se nada tivesse acontecido. Contudo, se eu reabrir a Pasta de Dados, aparecerá uma pasta de Indicadores vazia e se eu mover algum indicador para ela, ele não aparecerá no Navigator. Não aparecerá no Navigator. O regresso da pasta de Indicadores à MQL5\Indicadores resolve o problema.
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 aulas, podemos assumir que elas realizam algum tipo de "registo interno em listas", para além de chamar o 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;
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?
Mesmo isso não ajuda.
Simplesmente não faz qualquer sentido. Em vez de acelerar, está apenas a abrandar.
ZZZ Strange, o resultado do exemplo da Documentação é zero.
Trabalhou com o profiler em MT5 (construção 2345),
Grosso modo, eu estava a pensar porque dois algoritmos, dando o mesmo resultado no final, funcionam a velocidades diferentes, um drawdown de 1,7 vezes no modo de optimização.
...
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?
Se quiser comparar, deve ser:
Se quiser comparar, deve ser:
Do meu lado, a comparação era o que deveria ser.
Sei quantos elementos serão colocados na matriz e em vez de os criar todos de uma só vez, reservo a memória para os não criados.
O problema é que, se eu reservar memória e criar elementos de matriz um por um, leva muitas vezes mais tempo do que apenas criá-los todos de uma só vez.
Assim, para estruturas, é 7 vezes mais lento.
E é duas vezes mais lento para os tipos de dados de classe e int.
Esta é uma diferença muito grande, que acredito que os criadores podem eliminar se assim o desejarem.