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
Não consigo entender se é possível resolver esse problema com velocidade de teste sem usar as funções de linguagem do MT5. O problema surgiu há muito tempo, mas só agora consegui resolvê-lo.
Build 3802, __MT4ORDERS__ "2022.07.20"
Função condicional chamada no Expert Advisor em cada tick. Teste no testador de estratégia mt5.
Onúmero de negócios é de cerca de 26 mil. O tempo de teste é de cerca de 1 hora e 10 minutos.
Se removermos a função do código, o tempo de teste será de cerca de 17 minutos.
Reescrevi a mesma função usando a funcionalidade do MT5:
O tempo de teste é de cerca de 18 minutos.
Reverto a biblioteca para a versão __MT4ORDERS__ "2020.01.12" e compilo o Expert Advisor no build 2980.
O tempo do Expert Advisor com a função get_last_order_close_time é de cerca de 20 minutos.
Não consigo ver se esse problema de velocidade de teste pode ser resolvido sem o uso dos recursos de idioma do MT5.
Em todos os três casos, o resultado final é o mesmo?
Sim, com certeza.
Isso começou a acontecer depois de outra atualização do terminal. Eu não alterei sua biblioteca e compilei o bot no terminal antigo para que ele funcionasse como antes.
Isso começou a acontecer depois de outra atualização do terminal. Não alterei sua biblioteca e compilei o bot no terminal antigo para que ele funcionasse como antes.
Fiz algumas pesquisas.
Expert Advisor.
Em cada tick do inMod, uma posição é aberta e fechada. E, em cada tick, o OrderCloseTime é calculado.
OnTester serve como um critério para verificar a identidade dos resultados em diferentes configurações.
Funções correspondentes de trabalho com histórico.
Metodologia.
Uma única execução nas configurações como na fonte (inMod = 5).
28 mil transações, quase quatro segundos. Como precisamos medir o desempenho no modo de otimização, todas as leituras de desempenho a seguir foram feitas dessa forma.
Com recompilação obrigatória antes da execução e apenas um agente habilitado para execução sequencial de passes.
Desempenho.
Tabela de desempenho (tempo de execução em milissegundos) para b3815 e b2958.
O MT4Orders de 20.07.2022 foi usado em todos os lugares.
Conclusões.
O tempo de teste é de aproximadamente 1 hora e 10 minutos.
Reverto a biblioteca para a versão __MT4ORDERS__ "2020.01.12" e compilo o Expert Advisor no build 2980.
O tempo de funcionamento do Expert Advisor com a função get_last_order_close_time é de cerca de 20 minutos.
Experimente o código acima em uma versão antiga da biblioteca (eu não a tenho).
Se houver alguma diferença no desempenho, envie-o para a PM.
É possível que haja um vazamento de memória ou um uso de memória maior do que o necessário? Talvez em this.tickets ou em this.amount (::ArrayResize) ou em outro lugar?
O tamanho das matrizes só aumenta com o tempo. Isso é obrigatório? É possível esvaziá-las ou talvez não carregar todas as negociações anteriores?
É possível que haja um vazamento de memória ou um uso de memória maior do que o necessário? Talvez em this.tickets ou em this.amount (::ArrayResize) ou em outro lugar?
O tamanho das matrizes só aumenta com o tempo. Isso é obrigatório? É possível esvaziá-las ou talvez não carregar todas as negociações anteriores?
A biblioteca não armazena totalmente em cache os dados do histórico. A falta de memória é possível apenas na teoria, mas não na prática.
Escreva um script que classifique todo o histórico de negociação usando a biblioteca e veja quanta memória é consumida.
A biblioteca não armazena totalmente em cache os dados do histórico. A falta de memória é possível apenas na teoria, mas não na prática.
Escreva um script que classifique todo o histórico de negociação usando a biblioteca e veja quanta memória é consumida.
No teste de estratégia, o EA está usando 25 GB por núcleo.
editar: é um teste de período de 1 ano, portanto, não é muito.no teste de estratégia, o ea está usando 25 GB por núcleo.
editar: é um teste de período de 1 ano, portanto, não muito.A biblioteca (MT4Orders.mqh) não consome essa quantidade de memória. Você pode executar, por exemplo, este EA para ver por si mesmo.
Provavelmente, você está trabalhando com indicadores de forma incorreta: você cria novos identificadores de indicadores, mas não exclui os antigos.