Não para desenvolvedores de MT! O que substituir INIT_PARAMETERS_INCORRECT por ? - página 11

 
Сергей Таболин:

Uma idéia surgiu para peneirar os parâmetros "inválidos" durante a otimização genética no OnTester():

Acontece que sem interferir na genética, os resultados do INIT_PARAMETERS_INCORRECT podem não ser vistos.

Mas aqui temos outra pergunta: podemos obter um "profundo menos" no lucro neste caso?

este é um método muito lento. Estamos gastando recursos para calcular o passe completo.

 
Mikhail Mitin:

é um método muito lento. Estamos desperdiçando recursos no cálculo errado de todo o corredor.

De dois males...

 
Mikhail Mitin:

é um método muito lento. Estamos desperdiçando recursos calculando o passe completo.

EntrarINIT_PARAMETERS_INCORRECT_ONTESTER - rolar para OnTester.

 

Como resolvi este problema (várias variantes):

  • Um parâmetro separado é criado, e outros valores são substituídos dependendo de seu valor (descrito em alguns postos acima). A otimização vai apenas para este parâmetro
  • há também uma saída para esta situação, mas não é fácil de implementar:
    1. criou o arquivo csv, no qual foi enumerado apenas os parâmetros necessários
    2. leio o arquivo no OnInit, leio valores do arquivo e os dou aos parâmetros (ler arquivos com a bandeira Acesso compartilhado)
    3. otimizado apenas 1 parâmetro (número de linha no arquivo csv)
  • escreveu um algoritmo para gerar um arquivo mqh a partir de um arquivo csv (semelhante aos pontos acima, mas mais rápido) e o conectou ao Expert Advisor.

 
Mikhail Mitin:

Como resolvi este problema (várias variantes):

  • Um parâmetro separado é criado, e outros valores são substituídos dependendo de seu valor (descrito em alguns postos acima). A otimização vai apenas para este parâmetro
  • há também uma saída para esta situação, mas não é fácil de implementar:
    1. criou o arquivo csv, no qual foi enumerado apenas os parâmetros necessários
    2. leio o arquivo no OnInit, leio valores do arquivo e os dou aos parâmetros (ler arquivos com a bandeira Acesso compartilhado)
    3. otimizado apenas 1 parâmetro (número de linha no arquivo csv)
  • escreveu um algoritmo para gerar um arquivo mqh a partir de um arquivo csv (similar aos pontos acima, mas mais rápido) e o conectou ao Expert Advisor.

E como isso lhe permite implementar um algoritmo genético, se você tem apenas uma variável?

 

Acorda em mim! ))))

A partir das linhas do OnInit

   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_profit)                  return(INIT_PARAMETERS_INCORRECT);
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_stop)                    return(INIT_PARAMETERS_INCORRECT);
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && shift_correction_HMA7C != 5)  return(INIT_PARAMETERS_INCORRECT);

mudou-se para.

void OnTick()
{
//--- пропустить бесполезные проходы оптимизации
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_profit)                                 ExpertRemove();
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_stop)                                   ExpertRemove();
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && shift_correction_HMA7C != 5)                 ExpertRemove();

A genética não interfere, ePARÂMETROS_INCORRETOS não é calculado. )))

 
Сергей Таболин:

Acorda em mim! ))))

A partir das linhas do OnInit

mudou-se para.

A genética não interfere, ePARÂMETROS_INCORRETOS não é calculado. )))

Solução interessante. E como, a genética vai com sucesso, não fica atolada em um descendente?

 
Aleksey Vyazmikin:

Essa é uma solução interessante. E como, a genética está indo bem, não ficando atolada em uma única prole?

Está tudo bem. Não falha. ))) Pelo menos ainda não. Em algum lugar eu tinha uma coruja com muitos parâmetros inválidos. Vou ter que fazer a otimização e ver.

A idéia de portar é que a genética tropeça exatamente na inicialização. Mas se a verificação for movida para OnTick , então a inicialização vai bem, o teste começa, termina imediatamente e a genética obtém resultado de passagem a zero.

 
Сергей Таболин:

Está tudo bem. Não está caindo. ))) Pelo menos ainda não. Em algum lugar eu tinha uma coruja com muitos parâmetros inválidos. Vou ter que fazer a otimização e ver.

A idéia de portar é que a genética tropeça exatamente na inicialização. Mas se a verificação for movida para OnTick , então a inicialização vai bem, o teste começa e termina imediatamente e a genética obtém resultado zero.

É bom que não falhe. A essência do código é clara, mas eu acrescentaria a execução apenas uma vez, especialmente se houver muitas condições para a saída antecipada.

 
Aleksey Vyazmikin:

É bom que não fique atolada. A essência do código é clara, mas eu só adicionaria a execução uma vez, especialmente se houver muitas condições para a saída antecipada.

A otimização sobre aquela coruja de que falei está indo bem. )))

Boa idéia. É preciso acrescentar uma bandeira de verificação.