Os resultados da otimização diferem dos testes individuais sobre eles

 

Eu otimizo a EA. Em seguida, faço um único teste com base nos resultados. Os resultados da otimização e dos testes individuais nem sempre coincidem.

Seqüência de ações:
1. Eu seleciono um par (por exemplo, AudUsd) no otimizador e defino o período 2010.08.23 - 2010.10.30. O Expert Advisor na lista e o cronograma H1 já estão selecionados - eu testei apenas um Expert Advisor agora.
2. Eu entro nas faixas de otimização de parâmetros.
3. Abro o histórico minuto para AudUsd clicando duas vezes no Arquivo de Citações. Clique em Download. Depois de baixar, abro o relógio e clico novamente em Baixar. Diz: "Será que ele recalculará todos os prazos? Eu respondo que sim.
4. Eu otimizo 4 ou 5 parâmetros e espero algumas horas. Gostaria de ver os resultados da otimização em "AudUsd_1_optim.txt" anexados ao arquivo.
5. Selecionei a linha que me convém em "Resultados de otimização" (no meu exemplo é o número 2183 no arquivo "AudUsd_1_optim.txt") e fiz duplo clique em seus parâmetros no testador. Eu não mudo e não toco em mais nada.
6. Eu inicio o teste único. Eu olho para o Relatório de tabulação e vejo um lucro e um drawdown completamente diferentes (201.78/-116.28), não correspondendo aos resultados de otimização (162.36/-34.25) para esta combinação de parâmetros. Há um erro de descasamento de volumes nos registros, mas minha estratégia não usa volumes de forma alguma, portanto, acho que este erro não é crítico e não pode afetar tanto os resultados. O número de negócios e tudo mais também é diferente. A lista de pedidos deste teste está disponível no arquivo "AudUsd_2_Orders.txt" e o log pode ser encontrado em "AudUsd_2.log".
7. Estou muito surpreso. Embora eu esteja lentamente me acostumando a isso.
8. Repito o passo 3.
9. Começo novamente os testes individuais usando os mesmos parâmetros. Agora obtenho lucros e drawdown que coincidem com a otimização. A lista de pedidos deste teste está contida em "AudUsd_1_Orders.txt" e o log está em "AudUsd_1.log".

Tem sido assim por mais de dois meses (eu otimizo a cada semana). Esta falha é periódica e não detectada nenhum padrão claro. Não depende da hora de início da otimização e de um casal. Às vezes, os resultados dos testes otimizados e dos próximos testes separados coincidem, mas às vezes não.
Francamente falando, eu já estou cansado disso. Toda a noite ela está contando e otimizando algo. E então tenho que reoptimizá-lo novamente porque não consigo entender em que resultados devo confiar. Além disso, não tenho certeza de que mesmo uma coincidência tenha acontecido de ser uma variante correta e não uma variante com falhas do trabalho do testador.

Quero dizer-lhes imediatamente que pesquisei e li tópicos similares em fóruns. Procurei e li ambos no fórum da Alpari e aqui. E em Yandex também. Já há algumas semanas venho tentando encontrar informações. Mas tudo o que encontrei foram as palavras dos desenvolvedores sobre "propagação flutuante", das quais dependem os resultados dos testes. E conselhos para testar estratégias nos fins de semana (é exatamente o que eu faço - não funciona). Embora, a meu ver, pareça nada mais do que uma desculpa para não querer de alguma forma resolver este problema. Afinal, para fechar o tópico "spread flutuante" basta adicionar o campo "Spread" aos parâmetros do otimizador preenchidos pelos usuários a seu critério, e já se pode realizar uma otimização e comparação adequada de estratégias por parâmetros. Não vejo nenhum sentido em memorizar a última propagação do mercado para fins de otimização.

Tenho a última versão do Metatrader baixada do site da Alpari - 4.00.226. Exatamente a mesma falha é observada em dois outros computadores, com a mesma versão, mas instalados em momentos diferentes, com alguns meses de intervalo. As configurações e a pontuação são as mesmas lá que na primeira MT.
Eu só faço testes e otimização em uma conta demo na Alpari. Eu não conectei nenhuma outra conta. O servidor Alpari-Demo está nas configurações - Alpari NZ Limited. Eu também não toquei no servidor. Não mudei as citações manualmente, não acrescentei as minhas próprias. Metatrader está sempre online (tenho sempre Internet em meu computador). Realizo a otimização no sábado e no domingo. A propagação, em teoria, nesses dias não deve mudar e a falha com a "última propagação" provavelmente não tem nada a ver com isso. Os troncos em anexo são de sábado, 30 de outubro.
O período de testes é sempre declarado explicitamente.

As questões são:
1. Como isso pode acontecer? Qual é a razão?
2. Se for uma falha do testador, quando você vai consertá-la? E o que devo fazer para que tudo combine agora, nesta versão?
3) Se a culpa é minha, o que estou fazendo de errado e como devo fazer isso?

Estou pronto para fornecer o código real completo do Expert Advisor (de qualquer forma é apenas uma versão altamente truncada para otimização) e um conjunto de parâmetros de teste para o desenvolvedor do Metatrader em sua mensagem pessoal.

Arquivos anexados:
audusd.zip  116 kb
 

Aqui está outro exemplo. Acabo de começar a rever a otimização para a UsdJpy durante a noite. Logo após a otimização sem alterar as citações e sem tocá-las, cliquei duas vezes nos valores dos parâmetros selecionados do resultado 2631 (lucro 117,07 e drawdown 34,86) no testador e fiz um único teste usando estes parâmetros. Tive um lucro de -3925 e um drawdown de -4049,04. Diferença perceptível...
O relatório diz cerca de 51 desajustes de gráficos. Há 51 entradas no diário de bordo sobre o assunto. Mas todas as entradas se referem apenas a volumes, e eu não os uso em nenhum lugar, nem mesmo em indicadores (eu não uso indicadores).
O período de otimização e teste é o mesmo que em meu primeiro posto. Seqüência de ações - a mesma, mas com a adição do testador de controle executado após a p.3 para verificar a ausência de erros de desajuste. Todas as outras condições são as mesmas. A otimização foi realizada à noite de sábado a domingo - o mercado, e portanto a propagação deve ser congelada.

Fiquei surpreso novamente. Abri o "Quote Archive", pressionei Upload neste par e permiti recalcular todos os prazos.
Eu novamente faço duplo clique para inserir parâmetros no testador a partir dos resultados da otimização e iniciar os testes. Os resultados agora são os mesmos que na otimização. Não há erros de descasamento no relatório e no registro.

Estou acrescentando perguntas (continuo numerando-as):
4. Onde as discrepâncias apareceram após a otimização (e talvez durante ela) se antes da otimização eu fiz um teste de propósito e me certifiquei de que após carregar o par no "Arquivo de Citações" (entre o ponto 3 e o ponto 4 na minha mensagem anterior) não havia discrepâncias?
5. Como posso ter certeza de que todos os resultados de otimização são obtidos com citações corretas e que não houve falhas no processo de otimização?
6. Como as inadequações de volume têm um impacto tão crítico nos resultados de testes que não usam volumes?

Z.I. Tenho o antivírus instalado e funcionando. Mas tanto o executável Metatrader quanto sua pasta completa com todas as subpastas e arquivos estão em exceções. Meu outro computador não tem nenhum antivírus, mas tais falhas estão presentes. Isso significa que excluímos os antivírus. A mesma falha em três computadores diferentes. Excluímos problemas de disco e hardware e possível influência de programas vizinhos. Algo está errado em Metatrader, ele faz algo errado com as citações.

Tenho visto as mesmas falhas de otimização em outras estratégias fundamentalmente diferentes. Portanto, em essência, não depende realmente do meu Conselheiro Especialista. É que não era tão importante para mim antes e eu não estava testando o suficiente. Agora estou fazendo dezenas de otimizações por semana, e vou fazer ainda mais. E já estamos falando de dinheiro real. Favor me aconselhar sobre as ações corretas ou emendar o testador e o otimizador. Obrigado!

O arquivo contém os seguintes arquivos:
UsdJpy_1_optim.txt - resultados da otimização
UsdJpy_1_Orders.txt - lista de ordens (resultados) de uma única execução coincidindo com a otimização
UsdJpy_1.log - log deste teste
UsdJpy_1.htm - relatório sobre ele
UsdJpy_2_Orders.txt - lista de pedidos (resultados) de uma única execução com uma enorme perda (com desencontros)
UsdJpy_2.log - log deste teste
UsdJpy_2.htm - relatório sobre ele

Arquivos anexados:
usdjpy.zip  179 kb
 

Agora é ainda mais interessante. Isto está no terceiro computador e em um par diferente. Eu faço tudo de acordo com o esquema desde o meu primeiro posto. Após várias horas de otimização, eu verifico os resultados. Eu colei o conjunto de parâmetros selecionados clicando duas vezes (sem tocar ou alterar nada) e obtive resultados absolutamente diferentes dos da seqüência de otimização com os mesmos parâmetros. Eu verifico o descasamento de citações. Embora eu tenha baixado e recalculado as citações em "Arquivo" antes da otimização. Ok, eu acho, talvez o recálculo da cotação ajude. Lanço "Recalcular todos os prazos" e o testo novamente. As discrepâncias desapareceram. Mas agora calculei uma terceira variante dos resultados que não coincide de forma alguma com os dois primeiros. *smiley_with_great_geyes*

Mais algumas tentativas de recalcular as citações no Arquivo e testes. Todos os resultados agora correspondem à última, terceira opção. Hurra, encontramos a variante certa! Mas meio dia de trabalho de otimização foi desperdiçado e os resultados da otimização são obviamente incorretos. Ou seja, tenho que reinstalar a otimização à noite e ter tempo de levantar cedo pela manhã para escolher os parâmetros adequados para a semana seguinte. Além disso, não se pode ter certeza de que eles estejam corretos.

Notei mais alguns detalhes. Primeiro, o número de "Barras na História" difere em relatórios de teste para diferentes variantes. Em segundo lugar, mesmo com a mesma quantidade de barras na história, os resultados podem ser diferentes. Terceiro, meu consultor especializado trabalha com castiçais de hora em hora e abre os primeiros pedidos da série estritamente a uma determinada hora e 00 minutos, ou seja, em um castiçal aberto. Mas estas encomendas são abertas a preços diferentes e com resultados diferentes. Isto pode ser visto nos relatórios que anexei em meus primeiros posts, portanto, por enquanto, não estou escrevendo mais logs. Se você precisar de mais alguma coisa, eu a postarei.

Eu sou o único que tem esse problema com o testador?

 

E mais perguntas sobre o "Arquivo de Citações", já que o tema de sua conversão foi abordado. Você pode me dizer onde lê-lo em detalhes ou responder minhas perguntas aqui.

Eu faço todas as ações no sábado e domingo, ou seja, o arquivo de citações não deve ser alterado.

Abro um par com uma janela de gráficos não aberta durante a última semana, ou seja, entendo que as citações para esta semana não foram baixadas no arquivo local. Eu aperto Download. O monitor de tráfego instalado neste computador mostra as solicitações MT para o servidor e os blocos de dados retornados do servidor. Tudo está correto. Após o download, clico novamente em Download. Mas aqui eu tenho duas opções: ou continuo contando todos os prazos (o que é lógico quando o download é completado completamente) ou faço o download de algo novamente (e o monitor de tráfego confirma isso) - não está claro porque não fez o download no início. E se você pressioná-lo algumas vezes, o download do servidor pode ser feito após o recálculo, o que não é de forma alguma lógico e compreensível. Se já foi baixado, recalculado, o que mais está sendo baixado? Eu não fecho o arquivo entre os downloads, não mudo o par.

Às vezes, acontece que depois de abrir o arquivo pressionando o botão Download algumas vezes seguidas (5 ou mais), ele ainda baixa algo do servidor e não sugere recalcular todos os prazos, não importando se o arquivo com o par foi baixado antes (na abertura do arquivo anterior) e se ele foi recalculado então. É como se nem tudo estivesse carregado da primeira vez, e agora toda vez que você clica, o material que falta é puxado pouco a pouco, mas não tudo de uma só vez. Você pode ver no monitor que não são apenas pedidos para o servidor, mas também blocos de dados devolvidos por ele. Por que e o que não foi carregado da primeira vez? Quantas vezes devemos realmente pressionar o botão Upload para ter certeza de que todas as cotações de um par são baixadas?

Se eu fechar o Arquivo, abri-lo novamente e depois clicar em Recarregar, ele não carregará as aspas na primeira ou segunda vez, mas oferecerá um recálculo. A seqüência lógica de trabalho é restaurada. E por que isso está acontecendo? Como você entende isso? Talvez depois de cada download eu deva fechar o arquivo, abri-lo novamente e depois fazer o recálculo? Por favor, explique.

Você pode fazer com que, ao clicar para carregar, os arquivos locais sejam verificados e todos os arquivos necessários sejam carregados de uma só vez, e então todos os prazos sejam recalculados automaticamente? E você pode construir o botão "Validar" no arquivo, que mostrará todas as lacunas da história, inconsistências e coisas do gênero? E então, na confirmação do usuário, tudo seria automaticamente puxado do servidor e reparado. Eu gostaria de usar a versão MT4, uma vez que a migração para a versão 5 continuará por muito tempo, e a versão 4 é muito popular e muito procurada. E o dinheiro que precisamos ganhar agora, no 4.

Mais uma vez, a MT está conectada aos servidores de demonstração da Alpari desde a instalação e eles nunca mudaram. Há apenas duas pastas no histórico do programa: Alpari-Demo e downloads. As configurações do número de barras no histórico e na janela do gráfico não foram alteradas e permanecem padrão também desde a instalação da MT no computador. Mas os resultados de pressionar o botão Download são inesperadamente diferentes. O que realmente acontece no Arquivo e por que é tão imprevisível?

 
Desculpe, algo terrível está acontecendo lá.
 

Há uma discussão paralela sobre este tópico no fórum Alpari http://forum.alpari.ru/thread58122.html

Será que ninguém aqui tem respostas ou mesmo perguntas? E os desenvolvedores também?

 

1. Você precisa remover os erros de desalinhamento do gráfico. Apague todo o histórico de citações, faça o upload de uma nova.
2. Se o corretor tem um spread flutuante, então é necessário otimizar e testar em um spread. De preferência em um típico.
3. Comece durante a noite ou durante a noite em uma conta de demonstração do Expert Advisor e compare os resultados da demonstração e do testador. Se as ordens coincidirem aproximadamente, e o número de ordens não for significativamente diferente, então o testador pode ser confiável. Se o ofício não corresponder ao testador, não se deve otimizar no testador.

Seria bom ver pelo menos um relatório de um testador.

 

Para a dimeon:

1. testado em três computadores diferentes, três instâncias diferentes de MT4. Os sintomas são os mesmos. Depois de carregar as citações no "Arquivo", eu as verifico executando o testador - não há discrepâncias para o período requerido. Em seguida, lanço a otimização pelo mesmo período. E então eu faço testes de otimização. Aqui é onde as discrepâncias podem ocorrer. Ou seja, eles aparecem depois de toda a história ter sido baixada e recalculada pelo Arquivo, após (ou durante) a otimização. É pouco provável que a eliminação da história faça algo aqui.

2. A Alpari tem um spread flutuante. Concordo com você, você precisa testá-lo em condições de mercado iguais. Mas como testá-lo em um spread selecionado, onde especificá-lo? Não consegui encontrá-lo no MT4.

Esta é uma boa idéia. Provavelmente vou tentar. Somente eu terei que levar pelo menos alguns dias. Mas ainda não resolve a questão principal: por que estas falhas com citações?

Os relatórios dos testadores estão nos arquivos nos meus postos acima. Mesmo para dois pares diferentes em dias diferentes. Nos mesmos postos há uma descrição dos arquivos dos arquivos. Dê uma olhada.

 

Faça o download do histórico, recalcule os prazos. Desconectar da Internet e testar.

Este tipo de porcaria geralmente indica que a EA é extremamente afiada. Os bilhetes não são baixados, eles são emulados. E se você abrir no mercado, a menor mudança da história leva a este absurdo.

Um resultado semelhante pode ser obtido desta forma:

O computador está conectado à Internet há muito tempo e o gráfico está aberto no H1.

Nós desligamos a Internet e começamos a testar. O Expert Advisor nos escreve que faz o download da história da M5, M1 e isto é quando a Internet é desconectada. Portanto, há muitas armadilhas. Também sabemos que tipo de história ele baixa quando a Internet está conectada.

 
Obrigado, Mislaid. É exatamente isso que vou tentar fazer nas próximas otimizações. Também fui informado sobre este algoritmo no fórum da Alpari hoje. Embora, francamente falando, ou eu não entendo a lógica do programa ou os desenvolvedores têm alguma atitude estranha em relação à parte mais importante do otimizador - o arquivo de citações. Então, ainda quero ouvir esclarecimentos dos desenvolvedores sobre este assunto e respostas a perguntas. E que história a MT faz o download da Internet? Eu não sei nada sobre isso. Explique, por favor, ou me dê um link onde ler.
 
ReasonMan:
Obrigado Mislaid. É exatamente isso que vou tentar fazer com as próximas otimizações. Também fui informado hoje sobre tal algoritmo no fórum Alpari. Vou tentar... Embora, francamente falando, ou eu não entendo a lógica do programa ou os desenvolvedores têm alguma atitude estranha em relação à parte mais importante do otimizador - o arquivo de citações. Portanto, ainda quero ouvir os desenvolvedores esclarecerem este tópico e responder a perguntas. E que tipo de história a MT faz o download da Internet? Eu não sei nada sobre isso. Explique, por favor, ou me dê um link onde ler.

Eu não sei tudo, conclusões de experiência pessoal.

Vejo que você já montou experimentos suficientes para poder formular hipóteses.

Você fez o upload de um arquivo de citações em minutos. Ele é baixado do servidor MQ. Se você já notou, faltam os últimos dias, ou mesmo semanas. Hipótese: o arquivo das últimas citações no servidor MQ pode ainda não ter sido formado. Você baixa o resto do histórico do servidor através de "Update".

Outra experiência. Você mata a história. Você tenta baixar as atas (cinco minutos) através de "Update". Uma pequena parte da história será baixada do servidor. Hipótese: apenas uma parte limitada da história mais recente é armazenada no servidor DC.

Hipótese: o testador baixa М5, М1 do arquivo no computador e o completa a partir do servidor MQ. Se o arquivo no servidor ainda não tiver sido gerado, estes dados são emulados. O mesmo se não houver conexão com a Internet. Os dados emulados não serão salvos?

Uma vez por semana eu faço o download do histórico para 27 pares de moedas usando a função "Atualizar". Em alguns pares mais de 10000 barras são baixadas, embora as novas barras para a semana sejam cerca de 7000. Hipótese: a história mudou.

Os resultados dos testes podem não coincidir com os dados mais recentes por estas razões.

Resultados de testes e resultados comerciais de demonstração (micro, reais) podem não coincidir devido a algumas outras razões.

Razão: