Discussão do artigo "Otimização Controlada: Recozimento Simulado" - página 2

 
MetaQuotes Software Corp.:

Novo artigo Otimização controlada: Simulated annealing foi publicado:

Autor: Aleksey Zinovik

Ainda não comecei a trabalhar com o mt5, mas acho que (talvez com algumas alterações e/ou compilação condicional) também poderei usar isso no testador de estratégia do mt4.

A otimização genética do mt4 tem um pequeno problema que talvez também exista no mt5 e talvez também na sua abordagem.

Se eu verificar em OnInit() o conjunto de parâmetros e descobrir que um conjunto real não vale a pena ser verificado, retorno de OnInit() com INIT_PARAMETERS_INCORRECT. A otimização não é executada, o que economiza tempo, ok - mas:

  1. o algoritmo genético do mt4 considera isso como uma passagem válida
  2. portanto, ele aumenta o contador de modo que
  3. o algoritmo genético pare muito antes do que deveria (acho que o critério de parada é uma mistura do número de execuções e da alteração do valor-alvo).

Você já cuidou dessa situação? Retornar de OnInit() apesar de não haver nenhum erro (como: arquivo não encontrado,...) só porque a configuração do parâmetro não deve ser testada, o que, nesse caso, não deve aumentar o número e diminuir a temperatura?

De qualquer forma, obrigado por esse artigo interessante!

Bom

 
Carl Schreiber:

Ainda não comecei a trabalhar com o mt5, mas acho que (talvez com algumas alterações e/ou compilação condicional) também poderei usar isso no testador de estratégias do mt4.

A otimização genética do mt4 tem um pequeno problema que talvez também exista no mt5 e talvez também na sua abordagem.

Se eu verificar em OnInit() o conjunto de parâmetros e descobrir que um conjunto real não vale a pena ser verificado, retorno de OnInit() com INIT_PARAMETERS_INCORRECT. A otimização não é executada, o que economiza tempo, ok - mas:

  1. o algoritmo genético do mt4 considera isso como uma passagem válida
  2. portanto, ele aumenta o contador de modo que
  3. o algoritmo genético pare muito antes do que deveria (acho que o critério de parada é uma mistura do número de execuções e da alteração do valor-alvo).

Você já cuidou dessa situação? Retornar de OnInit() apesar de não haver nenhum erro (como: arquivo não encontrado,...) só porque a configuração do parâmetro não deve ser testada, o que, nesse caso, não deve aumentar o número e diminuir a temperatura?

De qualquer forma, obrigado por esse artigo interessante!

Bom

Não verifico a exatidão dos parâmetros e não interrompo a função OnInit() se os parâmetros não estiverem corretos. Na função OnTesterInit(), os parâmetros cujos valores precisam ser otimizados usando o testador de estratégia são desativados da otimização. A cada nova iteração, os parâmetros são lidos do arquivo e, na função OnTester(), os novos valores dos parâmetros são gravados no arquivo. Isso torna possível não usar os valores de parâmetros gerados pelo testador de estratégias, para emitir de forma independente os parâmetros necessários para a função OnInit().
Desculpe-me por meu inglês
 
Aleksey Zinovik:
Não verifico a exatidão dos parâmetros e não interrompo a função OnInit() se os parâmetros não estiverem corretos. Na função OnTesterInit(), os parâmetros cujos valores precisam ser otimizados usando o testador de estratégia são desativados da otimização. A cada nova iteração, os parâmetros são lidos do arquivo e, na função OnTester(), os novos valores dos parâmetros são gravados no arquivo. Isso torna possível não usar os valores de parâmetros gerados pelo testador de estratégias, para emitir de forma independente os parâmetros necessários para a função OnInit().
Desculpe-me por meu inglês

Entendi agora - obrigado! Eu só preciso verificar a plausibilidade da configuração dos parâmetros da próxima iteração antes que essa configuração seja gravada no arquivo para a próxima execução. Dessa forma, o "meu problema" pode ser evitado!

Obrigado por essa ideia e pelo artigo!

 

Hi ,

Você disse que '' as desvantagens podem ser eliminadas com o desenvolvimento de um módulo universal, que incluiria vários algoritmos para otimizar os parâmetros do especialista''.

Você pode dar mais detalhes sobre o módulo universal? Quais são os outros algoritmos para otimizar os parâmetros do especialista?

 
nevar:

Hi ,

Você disse que '' as desvantagens podem ser eliminadas com o desenvolvimento de um módulo universal, que incluiria vários algoritmos para otimizar os parâmetros do especialista''.

Você pode dar mais detalhes sobre o módulo universal? Quais são os outros algoritmos para otimizar os parâmetros do especialista?

O artigo mostra como conectar um novo algoritmo de otimização ao testador de estratégias. Da mesma forma, adicionando novos métodos a uma classe AnnealingMethod.mqh ou criando uma nova classe, é possível conectar outros algoritmos, por exemplo, algoritmos de formiga (Ant colony optimization). Pretendo testar o trabalho de tais algoritmos e compartilhar os resultados.