Saturday 23 September 2017

Algoritmo genético forex matlab


Usando Algoritmos Genéticos para Previsão de Mercados Financeiros, Burton sugeriu em seu livro, Random Walk Down Wall Street, (1973) que, um macaco com os olhos vendados jogando dardos em páginas financeiras de jornais poderia selecionar um portfólio que faria tão bem quanto um selecionado cuidadosamente por Especialistas. Embora a evolução tenha tornado o homem mais inteligente na escolha de estoques, a teoria de Charles Darwins tem bastante eficaz quando aplicada de forma mais direta. (Para ajudá-lo a escolher ações, verifique como escolher um estoque.) Quais são os algoritmos genéticos Os algoritmos genéticos (GAs) são métodos de resolução de problemas (ou heurísticas) que imitam o processo de evolução natural. Ao contrário das redes neurais artificiais (RNAs), projetadas para funcionar como neurônios no cérebro, esses algoritmos utilizam os conceitos de seleção natural para determinar a melhor solução para um problema. Como resultado, os GAs são comumente usados ​​como otimizadores que ajustam os parâmetros para minimizar ou maximizar alguma medida de feedback, que pode então ser usada de forma independente ou na construção de uma ANN. Nos mercados financeiros. Os algoritmos genéticos são mais comumente usados ​​para encontrar os melhores valores de combinação de parâmetros em uma regra de negociação, e eles podem ser incorporados em modelos ANN projetados para escolher ações e identificar trades. Vários estudos demonstraram que esses métodos podem se tornar efetivos, incluindo Algoritmos Genéticos: Gênesis de Avaliação de Estoque (2004) de Rama e As Aplicações de Algoritmos Genéticos em Otimização de Mineração de Dados de Mercado de Valores (2004) por Lin, Cao, Wang, Zhang. (Para saber mais sobre ANN, veja Redes Neurais: Previsão de Lucros.) Como funcionam os Algoritmos Genéticos Os algoritmos genéticos são criados matematicamente usando vetores, que são quantidades que têm direção e magnitude. Os parâmetros para cada regra de negociação são representados com um vetor unidimensional que pode ser pensado como um cromossomo em termos genéticos. Enquanto isso, os valores utilizados em cada parâmetro podem ser pensados ​​como genes, que são então modificados usando a seleção natural. Por exemplo, uma regra de negociação pode envolver o uso de parâmetros como Moving Average Convergence-Divergence (MACD). Média móvel exponencial (EMA) e estocástica. Um algoritmo genético então entraria valores nesses parâmetros com o objetivo de maximizar o lucro líquido. Ao longo do tempo, pequenas mudanças são introduzidas e aqueles que fazem um desejável impacto são mantidos para a próxima geração. Existem três tipos de operações genéticas que podem ser realizadas: os cruzamentos representam a reprodução e o cruzamento biológico visto na biologia, pelo qual uma criança assume certas características de seus pais. As mutações representam a mutação biológica e são usadas para manter a diversidade genética de uma geração de uma população para outra, introduzindo pequenas mudanças aleatórias. As seleções são o estágio em que os genomas individuais são escolhidos de uma população para reprodução posterior (recombinação ou crossover). Esses três operadores são então usados ​​em um processo de cinco etapas: Inicialize uma população aleatória, onde cada cromossomo é n-comprimento, sendo n o número de parâmetros. Ou seja, um número aleatório de parâmetros são estabelecidos com n elementos cada. Selecione os cromossomos, ou parâmetros, que aumentam os resultados desejáveis ​​(presumivelmente lucro líquido). Aplicar operadores de mutação ou crossover aos pais selecionados e gerar uma prole. Recombine a prole e a população atual para formar uma nova população com o operador de seleção. Repita as etapas duas a quatro. Ao longo do tempo, esse processo resultará em cromossomos (ou, parâmetros) cada vez mais favoráveis ​​para uso em uma regra comercial. O processo é encerrado quando um critério de parada é cumprido, o que pode incluir tempo de execução, aptidão, número de gerações ou outros critérios. (Para mais informações sobre MACD, leia Trading The MACD Divergence.) Usando Algoritmos Genéticos na Negociação Enquanto os algoritmos genéticos são usados ​​principalmente por comerciantes quantitativos institucionais. Os comerciantes individuais podem aproveitar o poder dos algoritmos genéticos - sem diploma em matemática avançada - usando vários pacotes de software no mercado. Essas soluções variam de pacotes de software independentes voltados para os mercados financeiros para complementos do Microsoft Excel que podem facilitar mais análises práticas. Ao usar essas aplicações, os comerciantes podem definir um conjunto de parâmetros que são então otimizados usando um algoritmo genético e um conjunto de dados históricos. Algumas aplicações podem otimizar quais parâmetros são usados ​​e os valores para eles, enquanto outros são focados principalmente em simplesmente otimizar os valores para um determinado conjunto de parâmetros. (Para saber mais sobre essas estratégias derivadas do programa, veja O Poder de Operações de Programas.) Sugestões e Truques de Otimização Importantes O encaixe de curva (sobreposição), projetando um sistema de negociação em torno de dados históricos, em vez de identificar comportamentos repetitivos, representa um risco potencial para os comerciantes usando algorítmos genéticos. Qualquer sistema de negociação que utilize GAs deve ser testado no papel antes do uso ao vivo. A escolha de parâmetros é uma parte importante do processo, e os comerciantes devem procurar parâmetros que se correlacionem com as mudanças no preço de uma determinada segurança. Por exemplo, experimente diferentes indicadores e veja se algum parece se correlacionar com as principais voltas do mercado. The Bottom Line Os algoritmos genéticos são formas únicas de resolver problemas complexos ao aproveitar o poder da natureza. Ao aplicar esses métodos para prever os preços dos títulos, os comerciantes podem otimizar as regras de negociação, identificando os melhores valores a serem usados ​​para cada parâmetro para uma determinada segurança. No entanto, esses algoritmos não são o Santo Graal, e os comerciantes devem ter o cuidado de escolher os parâmetros certos e não ajustar a curva (sobreposição). (Para ler mais sobre o mercado, veja Ouvir o mercado, não seus especialistas.) MetaTrader 4 - Algoritmos genéticos do testador versus pesquisa simples no Optimizador MetaTrader 4 1. Quais são os algoritmos genéticos A plataforma MetaTrader 4 agora oferece algoritmos genéticos de Otimização das entradas do Expert Advisors. Eles reduzem significativamente o tempo de otimização sem qualquer invalidação significativa dos testes. O seu princípio de operação é descrito no artigo denominado Algoritmos Genéticos: Matemática em detalhes. Este artigo é dedicado à otimização de insumos EAs usando algoritmos genéticos em comparação com os resultados obtidos usando pesquisa direta e completa de valores de parâmetros. 2. The Expert Advisor Para as minhas experiências, completei ligeiramente a EA chamada CrossMACD que você pode ter conhecido do artigo denominado Gerenciamento de encomendas: é simples: adicionou StopLoss e TakeProfit às posições colocadas. Adicionado Trailing Stop. Parâmetro Usado OpenLuft para filtrar sinais: Agora o sinal virá se a linha zero for cruzada em uma certa quantidade de pontos (com a precisão a uma casa decimal). Adicionado o parâmetro CloseLuft para a filtragem semelhante de sinais próximos. Coloque em variáveis ​​experimentais os períodos das médias lentas e de movimentação rápida usadas para cálculos MACD. Agora é um consultor especialista praticamente completo. Será conveniente otimizar e usar na negociação. Você pode fazer o download de EA CrossMACDDeLuxe. mq4 para o seu PC e testá-lo de forma independente. 3. Otimização Agora podemos começar a otimizar a EA. Três testes serão realizados com diferentes quantidades de pesquisas de otimização. Isso ajudará a comparar lucros obtidos usando algoritmos genéticos em várias situações. Após cada teste, vou remover manualmente o cache do testador para os testes subseqüentes para não usar combinações já encontradas. Isso é necessário apenas para que o experimento seja mais preciso - normalmente, a busca automática de resultados apenas melhora a otimização repetida. Para comparar os resultados. A otimização usando algoritmos genéticos será feita duas vezes: primeira vez - para encontrar o lucro máximo (Lucro), segunda vez para encontrar o maior fator de lucro (Lucro Fator). Depois disso, os melhores três resultados para ambos os métodos de otimização serão dados na tabela de relatório de resumo ordenada pelas colunas indicadas. A otimização é puramente experimental. Este artigo não tem como objetivo encontrar insumos que realmente façam maiores lucros. Símbolo do gráfico EURUSD cronograma do gráfico 1 período de teste 2 anos de modelagem Aumente os preços apenas entradas pesquisadas: Deve-se notar que, ao usar algoritmos genéticos, o tempo esperado de otimização é aproximadamente o mesmo que o da otimização usando busca de entradas diretas. A diferença é que um algoritmo genético destrói continuamente as combinações certamente infrutíferas e, dessa forma, reduz a quantidade de testes necessários várias vezes (talvez várias dezenas, centenas, milhares de vezes). É por isso que você não deve ser orientado para o tempo de otimização esperado ao usar algoritmos genéticos. O tempo real de otimização sempre será mais curto: como você vê, a otimização usando algoritmos genéticos levou menos de quatro minutos em vez das esperadas cinco horas e meia. Gráfico de otimização com algoritmos genéticos também difere daquela com pesquisa direta. Uma vez que as combinações ruins já foram eliminadas, os testes subsequentes são conduzidos com combinações de entradas que são mais lucrativas por padrão. É por isso que o gráfico de saldo aumenta: considere os resultados de ambos os métodos de otimização em todos os detalhes. A situação mudou. Os períodos de otimização coincidem (um erro insignificante é admissível) e os resultados são idênticos. Isso pode ser explicado através de que a otimização consistiu em apenas 1331 pesquisas e essa quantidade de passagens não é suficiente para usar algoritmos genéticos. Eles não têm tempo para acelerar a velocidade - a otimização é mais rápida devido ao rastreamento certamente perdendo combinações de insumos, mas com a quantidade de combinações acima mencionadas, os algoritmos genéticos não podem definir o que os pais (combinações de entradas) geram mau fora da primavera. Então, não há sentido usá-los. 4. Conclusões Os algoritmos genéticos são uma boa adição ao otimizador de 4 estratégias. A otimização é dramaticamente aprimorada se a quantidade de pesquisas for grande, os resultados coincidem com os obtidos por otimização regular. Agora não há sentido usar a busca completa em insumos. Os algoritmos genéticos encontrarão o melhor resultado mais rápido e não menos efetivamente. 5. Depois de escrever o artigo, satisfez minha curiosidade e lancei otimização do CrossMACDDeLuxe em todas as entradas. A quantidade de combinações feitas em mais de cem milhões (103 306 896). A otimização usando algoritmos genéticos levou apenas 17 horas, enquanto a otimização usando pesquisa em todas as entradas levaria cerca de 35 anos (301 223 horas). As conclusões dependem de você. GAATbx: Algoritmo de Algoritmo Genético e Evolutivo para uso com documentação MATLAB A Caixa de ferramentas de Algoritmo Genético e Evolutivo (GEATbx) implementa uma ampla gama de algoritmos genéticos e evolutivos para resolver grandes e complexos problemas do mundo real. Muitas demos e exemplos prontos para executar estão incluídos. A 6 Instalação do GEATbx é simples e pode ser feita em um minuto. As Notas de versão do GEATbx oferecem uma visão geral compacta dos novos recursos e das mudanças entre as versões. 1 Tutorial Tutorial - explica o uso do GEATbx, incluindo o início rápido, como escrever funções de objetivo próprio, o uso de otimização multi-objetivo, otimização restrita e a abordagem de novos problemas de otimização. Função de início rápido de gravação Funções Representação variável Estrutura da caixa de ferramentas GEA - Chamando árvore de funções e convenções de nomeação Otimização multi-objetivo Otimização restrita Estruturas de dados Como abordar novos problemas de otimização Exemplos de funções objetivas 1 Funções de otimização paramétrica, incl. Função De Jongs, Vale de Rosenbrocks (função De Jongs 2), Função Rastrigins, Função Schwefels, Função Griewangks, Função Ackleys Path, Função Langermanns, Função Michalewiczs, Função rcan Braninss, Função Easoms, Função Goldstein-Prices, Função Back-Back . 2 Introdução aos Algoritmos Evolutivos Explica a estrutura dos Algoritmos Evolutivos e seus operadores como implementados no GEATbx. Também pode ser usado para entender o funcionamento dos Algoritmos Evolutivos. Algoritmos evolutivos: princípios, métodos e algoritmos Introdução Visão geral Seleção Recombinação Mutação Reinserção Otimização multi-objetivo Modelos populacionais - Implementações paralelas Aplicação de diferentes estratégias Combinação de Operadores e Opções para Produção de Algoritmos Evolutivos Referências (documentos, livros e conferências) na área de Computação Evolutiva 3 Referência Contém uma explicação profunda em todas as configurações de parâmetros disponíveis e as opções do GEATbx e a documentação das funções implementadas diretamente criadas a partir da fonte dos arquivos m. Opções de Configuração de Parâmetros da GEATbx - em uma visão geral profunda de recursos, operadores, parâmetros e opções da caixa de ferramentas, todas as configurações são mostradas, o significado é explicado e exemplos são fornecidos Índice de arquivos GEATbx Matlab - documentação, produzida diretamente a partir do código fonte de Os m-arquivos (propósito, sintaxe e exemplos de todas as rotinas) 4 Características do GEATbx real, inteiro, binário (escala linear e logarítmica, codificação cinza) e permutação representação variável atribuição de aptidão: ranking linear-linear ranking multi-objetivo: PARETO Ranking, seleção de objetivos, seleção de compartilhamento: amostragem universal estocástica, local, truncamento, recombinação de seleção de torneio: discreto, intermediário, linha, linha prolongada, cruzamento de permutação: ponto único, shuffle, mutação substitutiva reduzida: binário, inteiro, valor real, reinserção de permutação : Migração global, regional, local: irrestrito, anel, competição de bairro: entre subpopulaçõesestratégias H nível de funções para todos os operadores diferentes modelos de população suportados (modelo global, regional e local) apoio de população múltipla apoio de estratégia múltipla (executar múltiplas estratégias de busca ao lado de uma outra em uma execução de otimização) concorrência entre subpopulações possíveis (fornece distribuição eficiente de recursos de computador entre diferentes Subpopulação) visualização de otimização sofisticada de estado e curso dos Algoritmos Evolutivos, on-line (durante a otimização) e off-line (após uma execução de otimização usando dados registrados) monitoramento confortável e armazenamento de resultados (cada execução pode ser totalmente documentada em arquivos de texto e dados ) Incorporação de conhecimento específico do problema (exemplos incluídos) 5 Implementação da implementação do arquivo mG GEATbx (Matlab 5.3, 6.x, 7.x, R2006ab e provavelmente mais recente) compatível em todas as plataformas de computadores Funções modulares, de fácil utilização e alta estrutura de entrada Muitos exemplos e funções de teste incluídas (pronto para executar) configurações de parâmetros padrão eas Documentação extensível extensível 6 Instalação Extraia os arquivos compactados para os diretórios desejados. A estrutura do diretório deve ser mantida intacta. Recomenda-se que os arquivos da Caixa de ferramentas de Algoritmo Genético e Evolutivo sejam armazenados em um diretório chamado geatbx do diretório principal do matlabtoolbox. Todos os caminhos da caixa de ferramentas GEA devem ser incluídos no caminho de pesquisa do Matlab. Na verdade, inclua todos os caminhos. Reinicie o Matlab e a funcionalidade do GEATbx deve estar disponível. Teste-o executando um dos scripts demoexemplo (por exemplo demofun1.m, demo. m em scripts de subdiretório). 7 Uso da documentação Por favor, considere o seguinte: O uso desta documentação é permitido apenas para informações pessoais. Além disso, você pode copiar esta documentação de forma inalterada em sua rede interna para uso interno como documentação da Caixa de ferramentas de Algoritmos Genéticos e Evolutivos. É proibido usar a documentação ou parte dela na forma alterada. (No entanto, se você quiser usar partes dele, texto ou gráficos para palestras, outra documentação ou qualquer outra coisa, entre em contato com o autor.) 8 Por que uma caixa de ferramentas para Algoritmos evolutivos para Matlab Nos últimos anos, o interesse em Algoritmos Genéticos e Evolutivos (EA: Algoritmos Evolutivos) aumentaram de forma constante. Em comparação com os procedimentos tradicionais de busca e otimização, como estratégias baseadas em cálculo e enumerativas, os Algoritmos Evolutivos são robustos, orientados para o mundo e geralmente mais simples de se aplicar em situações onde há pouco ou nenhum conhecimento a priori sobre o problema a resolver. Como os Algoritmos Evolutivos não requerem informações derivadas ou estimativas iniciais formais da solução, e porque são de natureza estocástica, os Algoritmos Evolutivos são capazes de procurar o espaço da solução com maior probabilidade de encontrar o melhor global. A Matlab tornou-se um padrão de fato em uma ampla gama de aplicações técnicas. Muitas áreas são atendidas por uma ampla gama de caixas de ferramentas, além de extensas ferramentas de visualização e análise. Além disso, a Matlab possui uma arquitetura aberta e extensível que permite que usuários individuais desenvolvam rotinas adicionais para suas próprias aplicações. Essas qualidades fornecem um ambiente uniforme e familiar para construir ferramentas de algoritmo genético e evolutivo. Este documento faz parte da versão 3.8 da GEATbx: Algoritmo de Algoritmo Genético e Evolutivo para uso com Matlab - geatbx. A Caixa de ferramentas de Algoritmo Genético e Evolutivo não é de domínio público. 169 1994-2006 Hartmut Pohlheim, Todos os Direitos Reservados, (supportgeatbx).

No comments:

Post a Comment