Saudações a todos!
Espero que tenham gostado do artigo.
Ficarei feliz em ouvir suas dicas sobre como converter UGA em OOP.
Gostaria de ver se isso
MathSrand((int)TimeLocal());
funcionará quando otimizado?
Você executou sua biblioteca no testador?
1) Eu gostaria de ver se isso será
MathSrand((int)TimeLocal());
funcionará quando otimizado?
2) Você executou sua biblioteca no testador?
1) Não vejo nenhuma razão para que não funcione.
2) Você não pode dar uma resposta exaustiva a essa pergunta simples em duas palavras.
Os problemas de otimização do trader podem ser condicionalmente divididos em dois tipos: a) "Problemas locais" e b) "Problemas globais".
a) Local - um conjunto de todas as ações de um trader/TS (que, por sua vez, também podem ser divididas em tarefas locais) realizadas em cada tick. Um exemplo desse tipo é a primeira tarefa do artigo (resolver equações, escolher o preço ideal da opção e outras tarefas semelhantes). Elas não requerem um histórico de preços "futuros".
b) Tarefas globais - otimização de alguma função de todas as tarefas locais (pode ser o lucro total para o período do relatório, drawdown, MO, etc.). É necessário todo o histórico de preços para o período de tempo que está sendo otimizado. O testador interno executa exatamente esse tipo de tarefa.
O UGA foi projetado de modo a não depender do testador padrão e pode ser usado para tarefas globais e locais sem alterar o código do algoritmo, inclusive em testadores "caseiros". Dentro da estrutura do testador padrão, o UGA pode ser usado sem alterações apenas em tarefas locais. Para tarefas globais, ela deve ser modificada no testador.
Ainda não tive a necessidade de usar o algoritmo de otimização em um testador que tenha seu próprio algoritmo de otimização.
Descreva sua tarefa em termos gerais e consideraremos aqui maneiras de resolvê-la.
Obrigado, joo- trabalho interessante!
Surgiram dúvidas sobre a aplicação prática do algoritmo genético
O artigo descreve:
- encontrar o máximo/mínimo de uma função de duas variáveis em um determinado intervalo
- encontrar o máximo da função de lucro (exemplo com ZigZag).
Por favor, dê exemplos de tarefas práticas de negociação em que você acha que o algoritmo pode ser útil.
- 2010.05.25
- Andrey Dik
- www.mql5.com
Descreva seu problema em termos gerais e analisaremos maneiras de resolvê-lo aqui.
O problema é simples: quero que a função srand() defina o gerador em um ponto inicial aleatório toda vez que eu executar o testador.
Descobriu-se que MathSrand((int)TimeLocal()) define o gerador para o (mesmo) estado inicial anterior em várias execuções diferentes do testador.
A tarefa é simples: quero que a função srand() defina o gerador para um ponto de partida aleatório toda vez que eu executar o testador.
Acontece que MathSrand((int)TimeLocal()) define o gerador para o (mesmo) estado inicial anterior em várias execuções diferentes do testador.
TimeLocal fornece o tempo em segundos. Ao testar, será o mesmo tempo de teste gerado.
Tente usar GetTickCount. Ele fornece honestamente milissegundos e não emula nada.
Ao testar, será o mesmo tempo de teste gerado.
О! Muito obrigado.
Obrigado, joo- trabalho interessante!
Surgiram dúvidas sobre a aplicação prática do algoritmo genético
O artigo descreve:
- encontrar o máximo/mínimo de uma função de duas variáveis em um determinado intervalo
- encontrar o máximo da função de lucro (exemplo com ZigZag).
Dê exemplos de tarefas práticas de negociação em que você acha que o algoritmo pode ser útil.
As tarefas econômicas em geral e as tarefas do trader em particular são, em sua maioria, de natureza otimizadora.
Os traders estão constantemente buscando os parâmetros ideais de sua TS. Aqui está uma lista incompleta dos tipos de tarefas que a UGA pode ajudar a resolver:
-encontrar parâmetros ideais de indicadores
-Encontrar os parâmetros ideais de MM
-busca de configurações ideais de filtros (qualquer um, inclusive busca de coeficientes em filtros digitais) em indicadores
-treinamento de redes neurais de qualquer topologia e tamanho arbitrário
-treinamento de comitês de redes de qualquer topologia e tamanho arbitrário. (um comitê é um grupo de redes independentes umas das outras).
A UGA pode ser usada para resolver as tarefas separadas mencionadas acima e todas juntas de uma só vez. Portanto, para ajudá-lo a entender o poder da UGA, direi que a possibilidade de resolver o último tipo de tarefa da lista permite criar modelos do cérebro (como você sabe, o cérebro é formado por departamentos).
A lista de tarefas pode continuar por muito tempo, basta dar uma olhada nos tópicos do fórum.
Material bacana e bem escrito. Eu mesmo também brinquei com a otimização genética, mas, infelizmente, encontrei poucos benefícios. Geralmente, o GA é considerado um método de otimização global. Isso é verdade se você tiver muito tempo para lidar com colônias muito grandes, mas quando o tempo (tamanho da colônia) é limitado, a AG, assim como os métodos de descida de gradiente, converge para um mínimo local, e bem lentamente. É claro que, em comparação com os métodos de busca direta de todas as combinações possíveis de parâmetros de entrada, a AG oferece uma vantagem inegável em termos de velocidade. Uma das amplas aplicações do GA é o treinamento de redes neurais multicamadas com um grande número de coeficientes. Essas redes têm um grande número de mínimos locais. Por alguma razão, os AGs são considerados a cura para esse problema. Mas, na verdade, a cura é a ferramenta aplicada, ou seja, a rede multicamadas nesse caso. É muito mais fácil escolher outra ferramenta capaz de obter alta precisão de classificação (como buy/sell/hold) ou extrapolação de regressão com otimização simples e inequívoca ;-).
1) Material interessante e bem escrito.
2) Eu também tenho brincado com a otimização genética, mas infelizmente não encontrei muitos benefícios. Geralmente, o GA é considerado um método de otimização global. Isso é verdade se você tiver muito tempo para lidar com colônias muito grandes, mas quando o tempo (tamanho da colônia) é limitado, o AG, assim como os métodos de descida de gradiente, converge para um mínimo local, e bem lentamente. É claro que, em comparação com os métodos de busca direta de todas as combinações possíveis de parâmetros de entrada, a AG oferece uma vantagem inegável em termos de velocidade. Uma das amplas aplicações do GA é o treinamento de redes neurais multicamadas com um grande número de coeficientes. Essas redes têm um grande número de mínimos locais. Por alguma razão, os AGs são considerados a cura para esse problema. Mas, na verdade, a cura é a ferramenta aplicada, ou seja, a rede multicamadas nesse caso. É muito mais fácil escolher outra ferramenta capaz de fazer uma classificação de alta precisão (como compra/venda/manutenção) ou extrapolação de regressão com otimização simples e inequívoca ;-).
1) Obrigado por suas palavras gentis.
2) Não duvido de seu conhecimento sobre o assunto, mas ainda assim, é preciso ter alguma habilidade para trabalhar com algoritmos genéticos (4ª dica na seção do artigo "Recomendações para trabalhar com o UGA")
O UGA foi desenvolvido como uma ferramenta universal que pode ser usada para qualquer problema de otimização (seção do artigo "Um pouco de história") sem nenhuma modificação do algoritmo. Ele está disponível ao máximo para modificações adicionais e adição de operadores específicos. Você conhece muitos algoritmos de otimização com essas propriedades?
Não sei por que o AG é considerado uma panaceia para vários problemas de otimização. Pessoalmente, não penso assim e nunca afirmei isso em lugar algum. É claro que, para cada tarefa específica, você pode escolher a melhor ferramenta de otimização, tanto em termos de velocidade de execução quanto de resultado final. O UGA tem um objetivo diferente: ser universal.
Eu publiquei algumas funções de teste interessantes no tópico do fórum MQL4 "Test Multivariable Multiextreme Function", uma delas é apresentada no artigo.
Se quiser, você pode tentar encontrar os extremos das funções propostas usando outros algoritmos de otimização além do GA e publicar os resultados aqui. Você está convidado a fazer isso. Será interessante para todos e para mim, em primeiro lugar.
PS: Recomendo que você se familiarize com o algoritmo proposto no artigo para se convencer do oposto (em negrito), embora eu não tenha o objetivo de convencer ninguém de nada.
Boa sorte em sua pesquisa!
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Algoritmos genéticos - é fácil! foi publicado:
Neste artigo o autor fala sobre cálculos evolutivos com o uso de um algoritmo genético desenvolvido pessoalmente. Ele demonstra o funcionamento do algoritmo, usando exemplos e fornece recomendações práticas para seu uso.
Autor: Andrey Dik