O motivo da principal lentidão do MT5 é a imitação do ambiente de negociação completo. Na grande maioria dos Expert Advisors, não é necessária uma simulação tão precisa. Uma excelente solução para esses Expert Advisors seria mudar para um modo de teste simplificado, com modelagem simples do ambiente de negociação. Entretanto, essa possibilidade não existe. Mas, se você escrever seu próprio testador de estratégia simplificado e executá-lo no modo de cálculos matemáticos, a velocidade de otimização será enorme! Isso é o que sugiro que você pense para todos aqueles que desejam aumentar drasticamente a velocidade de otimização dos Expert Advisors.
No CStrategy, as operações de negociação são realizadas diretamente por meio do CTrade. Ou seja, o CStrategy não tem nenhuma lógica de negociação própria. No Expert Advisor de teste, não vi nenhuma outra lógica de negociação além da abertura/fechamento de uma posição após N segundos. O CStrategy também não armazena posições históricas, portanto, infelizmente, esse exemplo não pode ser realizado no CStrategy.
A CTrade também não armazena histórico, mas isso não nos impediu de implementar a variante por meio dela.
O fato de o código OOP ser mais lento do que o código procedural não me diz nada. Vamos direto ao ponto: quais métodos do CTrade são um gargalo? Por quê? O que o perfil desses métodos lhe diz? Como identificar seções de código lento no testador?
Não analisei os motivos dos freios do SB, mas não acho que seja OOP, porque o MT4Orders também é escrito com OOP, mesmo que minimamente. Após uma solicitação ao BOD, os desenvolvedores aceleraram o SB. Não sei se eles ajustaram o próprio SB ou o compilador.
Eu mesmo analiso primeiro os freios absolutos e depois os relativos
O MetaTrader 5 tem uma excelente função de criação de perfil de um Expert Advisor em dados históricos. Mas, além do fato de que ele funciona lentamente (no modo visual), o resultado final é fornecido em unidades relativas, ou seja, é impossível comparar o desempenho em termos absolutos.
O motivo da principal lentidão do MT5 é a imitação do ambiente de negociação completo. Na grande maioria dos Expert Advisors, não é necessária uma simulação tão precisa. Uma excelente solução para esses Expert Advisors seria mudar para um modo de teste simplificado, com modelagem simples do ambiente de negociação. Entretanto, essa possibilidade não existe. Mas, se você escrever seu próprio testador de estratégia simplificado e executá-lo no modo de cálculos matemáticos, a velocidade de otimização será incrível! Sugiro que você pense nisso para todos aqueles que desejam aumentar drasticamente a velocidade de otimização do EA.
Por meio de símbolos personalizados, você pode obter ordens de magnitude de aumento de velocidade com a simulação completa. Na verdade, mesmo agora, no modo beta dos símbolos personalizados, é possível conseguir isso. Farei isso mais tarde.
Fiz ajustes no próprio SB (partes do SB usadas pelo Expert Advisor) sem alterar sua funcionalidade e versatilidade. O desempenho não ficou em 84%, mas em 97%.
Aqueles que usam o SB devem observar a possibilidade potencial de aceleração.
A versão artesanal perde significativamente. O motivo é simples - se você quiser séries temporais rápidas, não poderá converter as séries temporais do MT4 de ponta a ponta
Одной из основных проблем с MQL5 до сих пор было удаление встроенных функций для работы с таймсериями. Несмотря на то, что такой подход расширил для программистов возможности разработки, он также замедлил работу из-за обязательного шага по созданию и удалению новых ячеек памяти каждый раз, когда требуется доступ к данным таймсерии. Рассмотрим...
O artesanal perde significativamente. O motivo é simples: se você quiser séries temporais rápidas, não poderá converter as séries temporais do MT4 diretamente.
Conclusão errada. O motivo dos freios é bem diferente. Vamos inserir apenas uma linha em cada uma das variantes do MT5
A versão completa é 67% mais rápida, enquanto a artesanal é 108% mais rápida! Em resumo, a diferença agora é pequena - a completa é ~11% mais rápida que a artesanal. Parece que o motivo está na sobrecarga de OOP.
Mas isso não é o principal. Com uma linha, conseguimos acelerar os EAs! E isso é no Otimizador, onde o Comentário não desempenha nenhum papel.
O SB de negociação é 1,5 vez mais lento do que o MQL5 puro!
Isso foi escrito no verão junto com o aplicativo SD. Estou surpreso que tudo esteja igual! Ou isso é lógico? Como se pode falar sobre a supervelocidade do testador quando quase todos os EAs (usando SB) falham na velocidade, consomem dinheiro na nuvem, etc.! Aparentemente, isso é normal.
Simplifiquei o código-fonte, descartando o trabalho com History e MT4Orders. Deixei apenas a MQL5 pura e o SB
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
O motivo da principal lentidão do MT5 é a imitação do ambiente de negociação completo. Na grande maioria dos Expert Advisors, não é necessária uma simulação tão precisa. Uma excelente solução para esses Expert Advisors seria mudar para um modo de teste simplificado, com modelagem simples do ambiente de negociação. Entretanto, essa possibilidade não existe. Mas, se você escrever seu próprio testador de estratégia simplificado e executá-lo no modo de cálculos matemáticos, a velocidade de otimização será enorme! Isso é o que sugiro que você pense para todos aqueles que desejam aumentar drasticamente a velocidade de otimização dos Expert Advisors.
No CStrategy, as operações de negociação são realizadas diretamente por meio do CTrade. Ou seja, o CStrategy não tem nenhuma lógica de negociação própria. No Expert Advisor de teste, não vi nenhuma outra lógica de negociação além da abertura/fechamento de uma posição após N segundos. O CStrategy também não armazena posições históricas, portanto, infelizmente, esse exemplo não pode ser realizado no CStrategy.
A CTrade também não armazena histórico, mas isso não nos impediu de implementar a variante por meio dela.
O fato de o código OOP ser mais lento do que o código procedural não me diz nada. Vamos direto ao ponto: quais métodos do CTrade são um gargalo? Por quê? O que o perfil desses métodos lhe diz? Como identificar seções de código lento no testador?
Não analisei os motivos dos freios do SB, mas não acho que seja OOP, porque o MT4Orders também é escrito com OOP, mesmo que minimamente. Após uma solicitação ao BOD, os desenvolvedores aceleraram o SB. Não sei se eles ajustaram o próprio SB ou o compilador.
Eu mesmo analiso primeiro os freios absolutos e depois os relativos
O MetaTrader 5 tem uma excelente função de criação de perfil de um Expert Advisor em dados históricos. Mas, além do fato de que ele funciona lentamente (no modo visual), o resultado final é fornecido em unidades relativas, ou seja, é impossível comparar o desempenho em termos absolutos.
O motivo da principal lentidão do MT5 é a imitação do ambiente de negociação completo. Na grande maioria dos Expert Advisors, não é necessária uma simulação tão precisa. Uma excelente solução para esses Expert Advisors seria mudar para um modo de teste simplificado, com modelagem simples do ambiente de negociação. Entretanto, essa possibilidade não existe. Mas, se você escrever seu próprio testador de estratégia simplificado e executá-lo no modo de cálculos matemáticos, a velocidade de otimização será incrível! Sugiro que você pense nisso para todos aqueles que desejam aumentar drasticamente a velocidade de otimização do EA.
Por meio de símbolos personalizados, você pode obter ordens de magnitude de aumento de velocidade com a simulação completa. Na verdade, mesmo agora, no modo beta dos símbolos personalizados, é possível conseguir isso. Farei isso mais tarde.
MT4Orders:
MQL5 acabou sendo mais lento do que a biblioteca escrita na mesma MQL5! Comecei a investigar e descobri o motivo fazendo esta substituição
A variante MQL5 do Expert Advisor começou a apresentar esse desempenho.
A substituição estúpida de PositionSelect por PositionGetTicket aumenta a velocidade do backtest em 7%!
O MT4Orders fica atrás do MQL5 puro maximamente otimizado em menos de um por cento.
As vagas foram distribuídas da seguinte forma
Fiz ajustes no próprio SB (partes do SB usadas pelo Expert Advisor) sem alterar sua funcionalidade e versatilidade. O desempenho não ficou em 84%, mas em 97%.
Aqueles que usam o SB devem observar a possibilidade potencial de aceleração.
Foi interessante comparar o desempenho do mesmo Expert Advisor MT4 multimoeda convertido de diferentes maneiras.
Conversão completa
e conversão artesanal (rápida)
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.
Expert Advisors: Spreader
fxsaber, 2016.09.03 11:18 AM.
Resultados da medição de desempenho.
Versão completa
Artesanal
A versão artesanal perde significativamente. O motivo é simples - se você quiser séries temporais rápidas, não poderá converter as séries temporais do MT4 de ponta a ponta
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.
Bibliotecas: CPrice
fxsaber, 2016.08.28 10:36 AM
Dê uma olhada nessa opção
Você pode, como no MT4, chamar Open[bar], High[bar], Time[bar], Volume[bar], etc. E também iHigh(...), iClose(...) e outros.
Você precisa usar (não apenas para bush, mas também para variantes completas) soluções como esta.
O artesanal perde significativamente. O motivo é simples: se você quiser séries temporais rápidas, não poderá converter as séries temporais do MT4 diretamente.
Conclusão errada. O motivo dos freios é bem diferente. Vamos inserir apenas uma linha em cada uma das variantes do MT5
E medir novamente
A versão completa é 67% mais rápida, enquanto a artesanal é 108% mais rápida! Em resumo, a diferença agora é pequena - a completa é ~11% mais rápida que a artesanal. Parece que o motivo está na sobrecarga de OOP.
Mas isso não é o principal. Com uma linha, conseguimos acelerar os EAs! E isso é no Otimizador, onde o Comentário não desempenha nenhum papel.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: TesterBenchmark
fxsaber, 2017.07.24 14:13
O SB de negociação é 1,5 vez mais lento do que o MQL5 puro!
Isso foi escrito no verão junto com o aplicativo SD. Estou surpreso que tudo esteja igual! Ou isso é lógico? Como se pode falar sobre a supervelocidade do testador quando quase todos os EAs (usando SB) falham na velocidade, consomem dinheiro na nuvem, etc.! Aparentemente, isso é normal.
Simplifiquei o código-fonte, descartando o trabalho com History e MT4Orders. Deixei apenas a MQL5 pura e o SB
Resultado do SB
Resultado da MQL5 pura
Tudo a mesma coisa 1,5 vezes! Mas os otários não se importam, vamos continuar a usar o super-SB.
O mesmo 1,5 vezes! Mas os otários não se importam, vamos continuar usando o super-SB.
Esse é o tipo de ajuste do SB
que milagrosamente acelera os consultores do SB. É complicado?
Falando francamente, o SB de negociação, sem alterar a lógica da API, deveria ser reescrito quase que completamente. Qualquer parte dele é ruim.