Optimização no Testador de Estratégia - página 2

 

escreveu um EA, correu um look de optimização, look.... e fora... Parece-me que https://www.mql5.com/ru/docs/series Copiar... estão a trabalhar lentamente.

Документация по MQL5: Доступ к таймсериям и индикаторам
Документация по MQL5: Доступ к таймсериям и индикаторам
  • www.mql5.com
Доступ к таймсериям и индикаторам - Документация по MQL5
 

Estou a optimizar rapidamente. Não tenho queixas. Ultimamente, no entanto, a optimização não começa imediatamente, mas sim a parar no lugar (ouve-se o disco a trabalhar arduamente para fazer algo). Tenho de saltar constantemente de um Ponto de Acesso para outro. Só depois é que a optimização começa a funcionar.

 
gumgum:

e fora... Parece-me quehttps://www.mql5.com/ru/docs/seriesCopiar... trabalha lentamente.

Não é muito claro o que quer dizer com isso.

Explicar com mais precisão.

 
gpwr:

Estou a optimizar rapidamente. Não tenho queixas. Ultimamente, no entanto, a optimização não começa imediatamente, mas sim a parar no lugar (ouve-se o disco a trabalhar arduamente para fazer algo). Tenho de saltar constantemente de um Ponto de Acesso para outro. Só depois é que a optimização começa a funcionar.

Descreveria a situação em mais pormenor, se possível? Quanto tempo é que tem de esperar? O que (se alguma coisa) está escrito no livro de bordo?

 
Dmitriy2:

E seleccionei alguns parâmetros, cliquei no teste... de manhã, contei o número de corridas e quantas restaram. calculou que faltaram 50 dias para o fim da optimização. o meu computador tem 4 núcleos + 2 agentes centrais... Não preciso desta optimização, por isso desliguei-a...

Tentar optimizar primeiro alguns parâmetros, depois outros, aumentar o passo. Depois, pode executá-lo mais uma vez dentro da amostra.
 
alexvd:

Não é muito claro o que quer dizer.

Explicar com mais precisão.

Por exemplo:

double open(string sym,ENUM_TIMEFRAMES tf,int ps)
{
double ren[1]={EMPTY_VALUE};
CopyOpen(sym,tf,ps,1,ren); 
return(ren[0]); 
}

Se pedir os últimos 50000 valores e medir o tempo a ler do ficheiro, a diferença é de ~0%~30%. 50000 valores e medir o tempo, escrever no ficheiro, depois medir o tempo de leitura do ficheiro, depois a diferença é de ~0%~30% a favor do primeiro.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
gumgum:

Aqui está um exemplo:

então a diferença é de ~0%~30% a favor do primeiro.

Então lê mais depressa a partir do ficheiro?

Porquê copiar um valor de cada vez quando se pode copiar 50.000 de uma só vez (se tem tantos)?

 
alexvd:

Então lê mais depressa a partir do ficheiro?

Porquê copiar um valor de cada vez quando se pode copiar 50.000 de uma só vez (se tem tantos)?

A partir do ficheiro é mais lento. Então porquê uma tal diferença entre "ao mesmo tempo 50000" e a última chamada?

 
gumgum:

Então porque existe tal diferença entre "ao mesmo tempo 50.000" e a última chamada?

A aritmética é simples (os números são aproximados, mas a ordem de grandeza é importante).

Acesso a um elemento de matriz ~ 5 ciclos de CPU.

A chamada de função é ~100 ciclos de relógio.

Isto faz a diferença que uma única chamada de função para obter a quantidade de dados necessária de cada vez é mais barata em termos de velocidade de execução.

 

A discussão parece ter ido para as especificidades de um determinado código da EA. Mas reparei que quase todo o tempo é gasto em trabalhos preparatórios (mais de 90%), independentemente da EA que seja optimizada. E assim é com cada corrida (passe no registo) com novos parâmetros de entrada a serem optimizados. Assim, por muito bem que optimize o seu código, obterá apenas um par de por cento de ganho de desempenho.

Paraalexvd: Por favor, ver o primeiro e terceiro posts deste tópico: Descrevi-os em pormenor com amostras e registos.

Se um testador pudesse fazer o trabalho preliminar apenas uma vez durante a optimização e depois calcular o Expert Advisor enumerando os dados de entrada, o tempo de optimização seria pelo menos uma ordem de magnitude mais curta. Depois poderíamos falar sobre o próprio código do Expert Advisor.

Razão: