Otimização e testes fora da amostra. - página 6

 
Mathemat:
Vita, bem visto. Mas eu diria que a capacidade de generalização não é apenas uma propriedade da EA, mas também uma propriedade do algoritmo de aprendizagem, que deve identificar corretamente esta capacidade. O algoritmo do metaquot não revela esta capacidade, ele a destrói pela super-otimização.

Um algoritmo de metaquota não capta esta capacidade, mas a mata com uma otimização excessiva. -- Eu gostaria de ver um exemplo.
 

Os exemplos abundam. Eu não fui claro. Eu quis dizer que o uso irrefletido do otimizador a la "um, dois, três!" leva a um otimismo excessivo e irrazoável dos gray-ists. Por exemplo, o último exemplo - 'Será que o Forex está se movendo contra nós? Ou talvez eu não o entenda". Ou 'Trend Advisor (Expert). Estou esperando o feedback". Todos estes são truques.

Sobre "arruinar na raiz": a probabilidade de que a curva de ajuste marginal em um segmento de dados leve a uma rentabilidade sustentada no segmento real, fora da amostra, é extremamente baixa. O ótimo está em algum lugar no meio entre a rentabilidade excessiva e o breakevenness, que é inerente ao algoritmo de treinamento NS.

Diga-me por favor, Vita, nosso otimizador genético em sua forma pura oferece alguma garantia de rentabilidade de um Expert Advisor no futuro - mesmo que seja super-duper lucrativo em testes/optimização? Não estou falando do testador, o testador está muito bem.

P.S. Finalmente encontrou uma das primeiras menções de otimizador genético feitas pela MQ: https://www.mql5.com/ru/forum/50805. Veja o correio de Filin e a resposta de Slawa. A resposta mostra que o otimizador é útil apenas para a estimativa aproximada das capacidades de um Expert Advisor e nada mais. A maioria dos grailistas a utilizam como a primeira e única ferramenta de teste "completo" dos Expert Advisors. Esta é uma abordagem amadora que leva a falsas ilusões. Na verdade, esta ferramenta, destinada apenas a uma estimativa aproximada, é, pela lei da mesquinhez, boa apenas para sucatear os Expert Advisors obviamente maus em caso de resultados obviamente negativos - mas não para tirar conclusões positivas sobre o valor do Expert Advisor...

 

Mathemat писал (а):

Os exemplos abundam. Eu não fui claro. Eu quis dizer que o uso irrefletido do otimizador a la "um, dois, três!" leva a um otimismo excessivo e irrazoável dos gray-ists. Por exemplo, o último exemplo - 'Será que o Forex está se movendo contra nós? Ou talvez eu não o entenda". Ou 'Trend Advisor (Expert). Estou esperando o feedback". Tudo isso são ajustes.

--> :) Entendi. Entretanto, de acordo, as metaquotas não podem ser responsáveis pela "aplicação imprudente do otimizador". Eu sou a favor do pensamento humano e da otimização do otimizador. Eu, por exemplo, conheço a lei segundo a qual meu consultor especializado negocia. O otimizador me dá muitos conjuntos de parâmetros lucrativos. Como as obtém - "sem rodeios" com a ajuda da genética ou "inteligentemente" com a ajuda de um neurônio - não tem importância para mim, porque de qualquer forma eu critico (deliberadamente, por assim dizer) olho para os resultados e separo imediatamente as moscas das costeletas, porque sou o único que conhece exatamente a lei pela qual meu Consultor Especialista negocia.

--> Imagine que temos um otimizador "inteligente" que pode dizer com precisão: "Aqui está o conjunto ideal de parâmetros operacionais. Eu juro, sem ajuste" ou "Não, pessoal, para esta EA eu não posso escolher parâmetros de trabalho, e não apenas encaixar a curva". Esses seriam os tempos! Um otimizador que certifica estratégias implementadas em EAs! Acesso livre a partir de metaquotas! Ótimo! Eu realmente quero um.

Sobre a "matança pela raiz": a probabilidade de que a curva marginal em um intervalo de dados leve a uma rentabilidade sustentada no intervalo real, fora da amostra, é extremamente baixa. O ideal está em algum lugar no meio entre o breakeven e o superprofit, o que é inerente ao algoritmo de aprendizagem NS.

--> O "ótimo está em algum lugar no meio" é uma sensação intuitiva que resulta do fato de que os "grãos" totalmente otimizados estão garantidos de falhar no futuro, portanto não se deve otimizar até o fim, ou que "a verdade está em algum lugar próximo" ou algo parecido. Este sentimento não tem nada a ver com a realidade. A regularidade pode ser otimizada até o limite e somente lá ela se revelará em toda a sua glória. Não importa o quanto você a torça, ela não será útil, mas a sensação de que o ideal está em algum lugar no meio pode ser desenvolvida.

Por favor me diga, Vita, nosso otimizador genético em sua forma pura oferece alguma garantia de rentabilidade de um Expert Advisor no futuro - mesmo em caso de rentabilidade superduper na parte de teste/optimização? Não estou falando do testador, o testador está muito bem.

--> Eu não sou, e acho inadequado exigir tais garantias a partir dos resultados do otimizador. Veja acima sobre "inteligente", dando garantias, otimizador.

P.S. Finalmente encontrou uma das primeiras menções de otimizador genético feitas pela MQ:

https://www.mql5.com/ru/forum/50805

. Veja o correio de Filin e a resposta de Slawa. Você pode ver pela resposta que o otimizador só é útil para uma estimativa aproximada das capacidades de um Expert Advisor e nada mais. A maioria dos grailistas a utilizam como a primeira e única ferramenta de teste "total" dos Expert Advisors. Esta é uma abordagem amadora que leva a falsas ilusões. Na verdade, tal ferramenta destinada apenas a uma estimativa aproximada é, pela lei da mesquinhez, boa o suficiente apenas para sucatear os Expert Advisors obviamente maus no caso de um resultado claramente negativo - mas não para fazer uma conclusão positiva sobre o valor do Expert Advisor...

-->"O otimizador é útil apenas para uma estimativa aproximada das capacidades da EA" - mais uma vez, a alegação ao otimizador que é incapaz de estimar com precisão as capacidades de uma EA, mas, na verdade, de certificar as estratégias de uma EA. Resta apenas criar um robô que gere estratégias, alimentá-las ao otimizador, obter uma opinião sobre sua adequação e ir para o corte garantido de dinheiro. O que você acha desta ilusão?


 

A ilusão é grande, mas apenas uma ilusão. Mas é possível melhorar drasticamente a aplicação do que temos (testador/optimizador) com os meios disponíveis na MQL4. Caso contrário, ainda veremos super helicópteros a cada três dias com apenas resultados adequados, fingindo ser testes normais...

E não tenho nenhuma reclamação sobre metaquotas: o otimizador faz exatamente aquilo para o qual foi projetado, ou seja, a otimização genética no espaço de parâmetros do Expert Advisor e, na verdade, é um ajuste de curva.

Tenho uma sugestão para o testador: seria bom ter uma função padrão como teste() na qual todos os parâmetros necessários seriam claramente especificados, incluindo o nome do arquivo de histórico no qual tudo é testado. A vinculação rígida de um nome de arquivo ao seu conteúdo não é uma solução flexível o suficiente.

 
leonid553:

Boa tarde a todos.

Depois de otimizar uma EA, muitas vezes temos que nerd fora da amostra mais de uma dúzia de conjuntos de parâmetros sugeridos pelo otimizador.

Tenho uma idéia de otimizar os Expert Advisors fora da amostra. Suponha que nós "cobramos" do consultor especializado a otimização por uma série de parâmetros. Estabelecemos uma data. Por exemplo, a partir de 1 de janeiro. 2006 até 1 de janeiro de 2007.

Recebemos vários milhares de Expert Advisors. Depois disso, salvamos a página com os RESULTADOS DE OPTIMIZAÇÃO como um arquivo separado. Em seguida, estabelecemos o seguinte período histórico para otimização, ou seja, adicionamos um ou dois meses, ou tantos quantos forem necessários.

Em nosso caso, estabelecemos, por exemplo, a partir de 1 de janeiro. 2007 a 1 de junho de 2007. E mais uma vez usamos a otimização. Para ser mais exato, não será uma otimização completa. O otimizador não deve tomar parâmetros em PROPRIEDADES DO EXPERTADOR, mas selecionar novamente conjuntos de parâmetros do arquivo que salvamos após a primeira otimização. Após esta segunda otimização, ficamos apenas com aqueles vAriens que produziram lucros fora da amostra!

O resultado, idealmente, é que obtemos os "parâmetros ideais" para trabalhar e testar on-line mais tarde!

Acho que isto será uma adição útil ao testador do mt4. Provavelmente, e muito provavelmente, já é implementado por alguém em algum lugar. Se alguém souber, por favor, compartilhe o link!

Eu, devido a meu modesto conhecimento, não consigo descobrir como implementar a idéia na prática.

Certamente já existe uma implementação prática deste algoritmo ... No fórum encontrei apenas seus derivados... Por exemplo, "Como implementar seu critério de otimização"...

Eu quero compartilhar minha solução para este problema....

Vamos preparar um EA... Vamos adicionar parâmetros externos...

extern int    Counter      = 1;        // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...
extern string Filename     = "";       // Имя файла с оптимизируемыми параметрами

int    FilePtr=0;                      //  Положение файлового указателя

Dentro da função init() insira o seguinte bloco....

   if(IsOptimization() && Counter>0)
   {
// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции
// с помощью глобальной переменной FilePtr 
// На первом проходе инициализируем её нулём.
      if (GlobalVariableCheck("FilePtr")==false || Counter == 1) 
      {
         FilePtr = 0; 
         GlobalVariableSet("FilePtr",0); 
      } 
      else 
      {
         FilePtr = GlobalVariableGet("FilePtr"); 
      }

      int handle=FileOpen(Filename,FILE_CSV|FILE_READ,';');
      FileSeek(handle,FilePtr, SEEK_SET);
      Parametr1=StrToInteger(FileReadString(handle));
      Parametr2=StrToInteger(FileReadString(handle));
      Parametr3=StrToInteger(FileReadString(handle));

      FilePtr = FileTell(handle); 
      GlobalVariableSet("FilePtr",FilePtr);
      
      FileClose(handle); 
   }

Parametr1, Parametr2, Parametr3 - parâmetros externos, que devem ser otimizados....

Isso é tudo ...

 
kharko:

Certamente já existe uma implementação prática deste algoritmo. No fórum encontrei apenas seus derivados... Por exemplo, "Como implementar seu critério de otimização"...

Eu quero compartilhar minha solução para este problema....

Veja os artigos de Nikolay Kositsin, por exemplo, 'Especialistas baseados em sistemas comerciais populares e alquimia de otimização de robôs comerciais (Continuação)'.

 

Como funciona?

No intervalo de tempo A, executamos a otimização habitual dos parâmetros (Contador=0) .

Transferimos os resultados para o Excel... Agora nossa tarefa é criar um arquivo com parâmetros otimizados e salvá-lo no diretório ...arquivos de teste

Selecione colunas com nossos parâmetros em Excel, copie e cole-as no Word ou Notepad como texto sem formatação...

Em Wordboard ou Notepad, converta cada linha para a forma: valor1;valor2;valor3.

Salve-o no diretório ...arquivos de teste

Se você não for muito preguiçoso, você pode escrever uma macro para realizar as operações acima na mosca...

Agora podemos executar a otimização no slot de tempo B... Agora o paramétro de otimização será Counter... Especifique o valor máximo (número de linhas na lista).

É isso aí, o problema está resolvido... Boa sorte...

 

Eu li este artigo... Eu acho que minha variante é mais simples e conveniente.... e o mais importante, é universal...

A implementação acima coincide completamente com o desejo do autor do ramo...

 
Um exemplo de otimização na vida real... Ver anexo
Arquivos anexados:
sample.zip  1201 kb
 

Obrigado, kharko, pela solução. Vou tentar usá-lo!

Razão: