Terminal MT5 atualizado hoje e a janela "Otimização" não aparece durante o teste - página 5

 
Texnolog:

Por que quebrar um bom e velho algoritmo e substituí-lo por um novo que seja 3 vezes mais lento?

O algoritmo do testador genético não mudou. E as declarações cerca de 3 vezes são absolutamente infundadas.

O método de trabalho de um cache de resultados anteriores mudou. E tornou-se muito melhor e mais completo do que o anterior.

Se você precisar introduzir uma nova abordagem ao método genético, adicione um novo item à guia "otimização",

Criar uma descrição e técnicas para trabalhar com ela.

Dê uma olhada nos links acima - todos estes artigos são de nosso site. O otimizador genético tem sido discutido instantaneamente por muitos anos.

Procure por "testador de estratégia", "otimizador genético" na busca, por favor.

E siga meus repetidos conselhos - a otimização de um único fator de recuperação em genética está contra-indicada. Você simplesmente engana o algoritmo com uma relação"lucro/tração máxima" completamente instável e enganosa (para automatismos), o que facilmente gera valores enormes. Pense em como e por que.


Vamos corrigir o desenho do gráfico de otimização na segunda-feira.

 
Haverá execução parcial de ordens limitadas, dependendo do volume do mercado?
 
pivomoe:
Haverá uma execução parcial de ordens limitadas, dependendo dos volumes que passam pelo mercado?

Você já viu volumes em um copo na história? Isto é irrealista para implementar sem um instantâneo do mercado.

 
Aleksey Vyazmikin:

Você já viu volumes em um copo na história? É impossível fazer isso sem um molde do vidro.

Eu não sonharia com isso. Eu gostaria que o limite de compra com preço 90 e lote 10 acionasse parcialmente, se, digamos, houvesse um carrapato de venda com preço 89 e volume 1. Agora é muito triste. O pedido seria acionado se houvesse um tique de compra com o preço 90 e o lote 1... e em volume total.

 
Renat Fatkhullin:

O algoritmo do testador genético não mudou. As alegações cerca de 3 vezes são absolutamente infundadas.

O que foi alterado foi a forma como funciona o cache dos resultados anteriores. E se tornou radicalmente melhor e mais completo do que o anterior.


Fez alguns testes comparativos sobre as construções novas e antigas do testador.

Aqui estão os resultados. Logs e descrição no post #34.

11

 

Aqui está meu teste com as condições sugeridas:

  • configurações de https://www.mql5.com/ru/forum/241285/page4#comment_7271206
  • todas as caches de arquivos de teste uma vez removidas do disco antes do início dos testes
  • Windows 10, Intel Xeon E5-2630 v4 a 2,20GHz, 8 núcleos utilizados para agentes

Passe completo até o final, depois reinício do terminal
com parada a 1000 (aprox.) passes
Continuar após a parada
Metatrader 5 construir 1755
38 seg, 4780 passes
15 seg, 1105 passes
25 seg, 3487 passes
Metatrader 5 construir 180933 seg, 5.549 passes
9 seg, 1126 passes
36 seg, 5863 passes


Metatrader 5 constrói 1755:

  • Bild 1755 full pass, um total de 8960 variantes passaram, das quais 4780 foram realmente calculadas e 4180 foram retiradas do cache acumulado na mesma sessão

    após o qual o terminal é reiniciado para evitar a influência direta de hot caches na memória
    2018.04.30 11:20:46.867	Tester	Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 11:20:47.118	Tester	genetic calculation is over
    2018.04.30 11:20:47.126	Tester	4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:20:47.338	Tester	result cache used 4180 times
    2018.04.30 11:20:47.338	Tester	genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 11:20:47.349	Statistics	optimization done in 0 minutes 38 seconds
    2018.04.30 11:20:47.349	Statistics	local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • constrói 1755 com uma parada em 1337 execuções. 216 delas são retiradas do cache (216 / 1337 = 16% de cache atingido, não muito devido à aleatoriedade inicial e tamanho de amostra pequeno)
    2018.04.30 11:24:15.913	Tester	Best result 3254.53 produced at generation 0. Next generation 4
    2018.04.30 11:24:16.775	Tester	file cache used 19 times
    2018.04.30 11:24:16.775	Tester	result cache used 216 times
    2018.04.30 11:24:16.775	Tester	genetic optimization finished on pass 1337 (of 49644595)
    2018.04.30 11:24:16.775	Statistics	optimization done in 0 minutes 15 seconds
    2018.04.30 11:24:16.775	Statistics	local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1755 com continuação após uma parada em Stop, terminal não reiniciado, continuação.

    teste continua do ponto de parada e não do início como no build 1809, depois das 10496 passagens propostas foram tiradas 3487 e 66+3814 tiradas do cache (66+3814 / 10496 = 36% de cache atingido)
    2018.04.30 11:26:27.931	Tester	Best result 3363.35 produced at generation 15. Next generation 32
    2018.04.30 11:26:28.104	Tester	genetic calculation is over
    2018.04.30 11:26:28.111	Tester	3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:26:28.539	Tester	file cache used 66 times
    2018.04.30 11:26:28.539	Tester	result cache used 3814 times
    2018.04.30 11:26:28.539	Tester	genetic optimization finished on pass 8704 (of 49644595)
    2018.04.30 11:26:28.550	Statistics	optimization done in 0 minutes 25 seconds
    2018.04.30 11:26:28.550	Statistics	local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    





Metatrader 5 constrói 1809:

  • build 1809 full pass, total de 8960 passes, dos quais 5549 foram realmente contados e 3411 foram retirados do cache hit acumulado na mesma sessão

    após o qual o reinício do terminal é feito para evitar a influência direta de hot caches na memória.
    2018.04.30 10:50:58.997 Tester  Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 10:50:59.485 Tester  genetic calculation is over
    2018.04.30 10:50:59.485 Tester  result cache used 3411 times
    2018.04.30 10:50:59.485 Tester  genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 10:50:59.495 Statistics      optimization done in 0 minutes 33 seconds
    2018.04.30 10:50:59.495 Statistics      local 5549 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • construiu 1809 com parada em 1348 passagens. 222 delas foram retiradas do cache (222 / 1348 = 16% de cache atingido, não o suficiente por causa da aleatoriedade inicial e amostra pequena)
    2018.04.30 11:00:59.532 Tester  Best result 3263.17 produced at generation 0. Next generation 4
    2018.04.30 11:00:59.742 Tester  result cache used 222 times
    2018.04.30 11:00:59.742 Tester  genetic optimization finished on pass 1348 (of 49644595)
    2018.04.30 11:00:59.742 Statistics      optimization done in 0 minutes 09 seconds
    2018.04.30 11:00:59.742 Statistics      local 1126 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • construção 1809 com continuação após uma parada em Stop, terminal não reiniciado, continuação.

    como o teste é iniciado desde o início, das 10240 passagens propostas foi feita limpa 5863 e 4377 foram retiradas do cache (4377 / 10240 = 42% de cache atingido)
    2018.04.30 11:04:28.046 Tester  Best result 3391.17 produced at generation 27. Next generation 38
    2018.04.30 11:04:28.477 Tester  genetic calculation is over
    2018.04.30 11:04:28.477 Tester  result cache used 4377 times
    2018.04.30 11:04:28.477 Tester  genetic optimization finished on pass 10240 (of 49644595)
    2018.04.30 11:04:28.488 Statistics      optimization done in 0 minutes 36 seconds
    2018.04.30 11:04:28.488 Statistics      local 5863 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    



Agora as conclusões:

  1. Sua declaração sobre "3 vezes mais lento" está errada.

  2. Na verdade, o testador do build 1809 se tornou mais rápido através da otimização e reescrita dos processos internos.

    Isto pode ser visto no tempo de passagem plena, são 33 segundos em vez de 38 segundos. E 33 segundos para um número maior de passes.

    Se recalcularmos o número de passes por segundo, acontece:
    - build 1755 dá 4780 passes / 38 seg = 125 passes por segundo
    - build 1809 dá 5549 passes / 33 seg = 168 passes por segundo

  3. O novo esquema de otimização genética "continuação após parada" com geração de novo plano populacional está correto.

    Estamos reavaliando o conceito do testador e consertando velhas más decisões.

    Como os testes genéticos precisam ser executados várias vezes para cobrir a área de busca mais completamente, nosso novo modelo com visualização das execuções anteriores a partir do cache permite uma melhor compreensão da mecânica do fluxo de trabalho da genética.

    O novo modelo para exibir resultados de otimização com todos os dados de caches previamente calculados adicionados à tabela permite ver a imagem de forma mais completa. É possível calcular sua estratégia em pedaços e ver os resultados completos a cada vez, incluindo execuções anteriores.

    É por causa das tabelas de resultados realmente grandes fundidas que desativamos a exibição rieltime da lista de resultados e mostramos o resultado cumulativo após a fusão de todos os resultados anteriores.
 

Meu robô trava durante a inicialização, tanto em tempo de execução quanto em Debug. A compilação é boa.

Há uma classe com membros estáticos no código, provavelmente por causa deles. Tudo estava funcionando bem antes. Mas agora ele relata um erro durante a inicialização global.

Removidos os membros estáticos da classe, ela funciona bem.

 
Dennis Kirichenko:

Meu robô trava durante a inicialização, tanto em tempo de execução quanto em Debug. A compilação é boa.

Há uma classe com membros estáticos no código, provavelmente por causa deles. Tudo estava funcionando bem antes. Agora ele escreve um erro durante a inicialização global.

Removidos elementos estáticos na classe, lançados normalmente.

Escreva seu pedido ao Service Desk e anexe o Expert Advisor (pode ser um arquivo ex5), por favor.

 
Aleksey Vyazmikin:

Tudo isso é ótimo!

Entretanto, favor trazer de volta a aba "Otimização" - é impossível trabalhar sem uma análise operacional! As mesas grandes são lentas - vamos fazer um filtro - mostram os 20 primeiros para cada critério - não é tão intensivo em recursos(?), mas ajudará muito a ver o quadro. E, esses bilhões de passes - quem os faz? São unidades com enormes capacidades - você mesmo está falando sobre a razoabilidade da aplicação da genética, e não existem portmanteaus deste tipo lá. Portanto, mais de 10k passes é uma raridade.


Triste.

Pelo menos foi possível construir uma imagem sobre os dados preliminares, enquanto a otimização está em andamento.

 
Renat Fatkhullin:

Estamos ocupados com uma grande atualização de desempenho do testador e estamos redesenhando os modos de carga pesada. Grandes melhorias foram feitas e novos métodos de aceleração serão implementados em breve.

A janela da lista de corredores decidiu mostrar no final do erro de cálculo, para não desperdiçar recursos reais na manutenção, reordenação e exibição da lista de corredores em constante mudança.

Houve realmente um enorme desperdício de recursos e lentidão. Especialmente quando estamos falando de centenas de milhares de filas, milhões e dezenas de milhões de passes. Não há nenhum sentido razoável em olhar com seus olhos um monte de dados preliminares.


Estamos realizando testes de otimização e desempenho com 100 milhões de passes completos.

Obviamente, com tais números, está fora de questão reordenar em tempo real e exibir uma tabela de 2-5-10-50 milhões de valores. Há apenas uma opção - reunir tudo de forma rápida e econômica, ordenar tudo de forma rápida e econômica e proporcionar uma visão de qualquer profundidade.

Conte-nos sobre isso, e pronto.

Razão: