Teste o novo compilador MQL5 para plataformas x64 - cálculos 2 a 10 vezes mais rápidos!
Muito bem feito!
Aqui estão mais testes e discussões anteriores:
Profissionais em sua área!
Obrigado!
Além disso - o próximo lançamento até 20 de maio muito provavelmente terá um depurador disponível nos dados históricos.
Estaremos mostrando na iFX Expo nos dias 26 e 28 de maio.
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin:
- O novo compilador MQL5 de 64 bits é 2 a 10 vezes mais rápido do que o compilador MQL5 atual.
O desenvolvimento do novo compilador levou muito tempo, mas os ganhos foram surpreendentes. Há alguns problemas com a otimização das operações de cordas, mas tentaremos acelerá-los também. - O novo compilador está muito próximo da qualidade e da velocidade do compilador Visual Studio 2012 x64.
Ainda não ativamos todos os métodos de otimização desde que ainda estamos testando-os. Portanto, os resultados continuarão a melhorar.
Além disso, um depurador de dados históricos provavelmente estará disponível no próximo lançamento no dia 20 de maio.
Demonstraremos isso na iFX Expo nos dias 26 e 28 de maio.
O novo compilador aproxima-se muito da qualidade e velocidade do compilador Visual Studio 2012 x64
Ainda não ativamos todos os métodos de otimização desde que ainda estamos testando-os. É por isso que os resultados continuarão a melhorar.
Boas notícias ! Muito bem feito!
Renat Fatkhullin:
Você pode fazer mais cálculos ao mesmo tempo e pensar menos em mudar para DLL. Isto é especialmente importante para aqueles que fazem matemática pesada.
Sim, eu realmente não consigo pensar em mais nenhuma tarefa onde DLLs externas são necessárias.
Além disso - o próximo lançamento até 20 de maio muito provavelmente terá um depurador disponível nos dados históricos.
Esta é realmente a característica mais útil. Muito obrigado, de fato.
Pessoalmente, tenho apenas uma pergunta - dicas para matrizes. Para matrizes privadas, o problema é resolvido enrolando uma matriz em uma classe.
Mas para arrays passados para a função OnCalculate() eu tenho que copiar os dados em buffers internos cada vez, e só então passar apontadores em objetos analisadores e manipuladores. Uma vez que eu tentei passar indicações usando memcpy, mas de alguma forma a velocidade foi quase a mesma, e na minha opinião, tais "truques" não deveriam ser aplicados.
Talvez a possibilidade de usar o tipo de referência seja mais aceitável. Em geral, a tarefa é acessar os elementos da matriz sem copiá-los.
Sim, eu não consigo pensar em mais tarefas onde DLLs externas são necessárias.
Acontece que a atribuição do parâmetro de entrada de desvio ao campo de desvio da instância da estrutura MqlTradeRequest leva a erro de geração de código.
Exemplo hipotético (tudo o mais foi removido):
sinput ulong deviation = 100; int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }Eu recebo"erro de geração de código 1 1".
Se você atribuir apenas "100":
int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = 100; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }
...então a compilação será feita sem erros. Nota, tenho o processador AMD Athlon II X4 645, 3,1 GHz. Talvez seja importante (só esta semana a MQL4 com servicedesk tem pegado algum bug na AMD).
Meu compilador não se queixa de mais nada.
- 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
Como prometemos anteriormente, estamos lançando um novo compilador MQL5 otimizado para a versão de 64 bits do MetaTrader 5.
Mantemos total compatibilidade do código gerado tanto para versões de 32 bits do terminal quanto para versões mais antigas dos terminais.
Você já pode atualizar para o MetaTrader 5 build 1108 com sua nova funcionalidade em nosso servidor MetaQuotes-Demo. Para habilitar o novo compilador otimizador, adicione a chave Optimize=1 ao [Especialistas] no metaeditor.ini:
Para testar o desempenho dos compiladores MQL4, MQL5 e C++, usamos testes padrão de compilação. Todos os arquivos fonte são anexados junto com a planilha de Excel, para que todos possam checá-la novamente.
Por enquanto, vamos dar uma olhada nos resultados dos testes no ambiente a seguir:
Para ver a tabela detalhada, por favor clique sobre ela.
Quais são as conclusões:
A MQL5 é mais rápida que a MQL4 desde dezenas de porcentagens até várias vezes. A razão está no ambiente de execução e 32 bits. O MetaTrader 5 tem um tempo de execução muito mais eficiente e em constante desenvolvimento.
O desenvolvimento do novo compilador demorou muito tempo, mas os ganhos foram surpreendentes. Há alguns problemas com a otimização das operações de cordas, mas tentaremos acelerá-los também.
Ainda não ativamos todos os métodos de otimização desde que ainda estamos testando-os. Portanto, os resultados continuarão a melhorar.
O que isso dá aos comerciantes?
A capacidade de fazer mais cálculos na mesma quantidade de tempo e menos pensar em mudar para uma DLL. Isto é especialmente importante para aqueles que fazem as contas pesadas.