algoritmo genético de sistemas de negociação
Esta página usa quadros, mas seu navegador não os suporta.
O GRAIL fornece sinais de negociação diários para uma seleção de mercados de derivativos, incluindo os futuros S & P, Euro Currency, Hang Seng, Dax e FTSE. Entre para ler mais sobre o nosso sistema S & P, que gerou 385 pontos de lucro entre março de 2002 e outubro de 2003 (77,1% p. a.) durante o comércio em tempo real!
NOVO!! O Genetic System Builder cria sistemas de negociação robustos com o EasyLanguage TM totalmente divulgado no mercado de sua escolha. O software inclui gerenciamento de dinheiro e um dos genéticos do otimizador de portfólio genético. Indispensável para qualquer comerciante de sistemas: de iniciante a gerente de hedge funds! Demonstração gratuita disponível.
Para visualizar gráficos de Equity de sistemas de negociação modelados pelo GSB, clique aqui.
Nosso software de gerenciamento de dinheiro pode aumentar os lucros de um sistema de negociação existente. Peça o nosso relatório que irá mostrar em 8 etapas fáceis, como implementar qualquer uma das seguintes estratégias de dimensionamento de posição / gerenciamento de dinheiro em seu próprio sistema:% Margem,% de Risco, F otimizado, F Optimal Diluído, Critério de Kelly, Kelly Diluído e% Volatilidade. (Todo o código da TradeStation EasyLanguage TM incluído)
Nós nos especializamos em design, programação e teste de sistemas comerciais em TradeStation TM, Pascal, C ++ e Excel.
algoritmo genético de sistemas de negociação
Criando um Sistema de Negociação no Laboratório de Sistemas de Negociação.
O Trading System Lab gerará automaticamente Sistemas de Negociação em qualquer mercado em poucos minutos, usando um programa de computador muito conhecido, conhecido como AIMGP (Indução Automática de Código de Máquina com Programação Genética). A criação de um sistema de negociação no Trade System Lab é realizada em 3 etapas fáceis. Primeiro, é executado um pré-processador simples que extrai e pré-processa automaticamente os dados necessários do mercado com o qual você deseja trabalhar. A TSL aceita dados CSI, MetaStock, AIQ, TradeStation, dados de Internet gratuitos, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet. Em segundo lugar, o gerador do sistema de negociação (GP) é executado por vários minutos, ou mais, para evoluir um novo sistema de negociação. Você pode usar seus próprios dados, padrões, indicadores, relações de inter-mercado ou dados fundamentais dentro do TSL. Terceiro, o Sistema de Negociação evoluído é formatado para produzir novos sinais do Sistema de Negociação dentro da TradeStation ™ ou muitas outras plataformas de negociação. O TSL escreverá automaticamente Easy Language, Java, Assembler, código C, código C # e WealthLab Script Language. O Trading System pode então ser negociado manualmente, negociado através de um corretor ou negociado automaticamente. Você pode criar o Trading System você mesmo ou podemos fazer isso por você. Então, você ou o seu corretor podem trocar o sistema manualmente ou automaticamente.
O Programa de Genética do Sistema de Negociação do Comércio contém vários recursos que reduzem a possibilidade de montagem da curva ou produzem um Sistema de Negociação que não continua a atuar no futuro. Em primeiro lugar, os Sistemas de Negociação evoluídos têm seu tamanho reduzido ao tamanho mais baixo possível através do que é chamado de Pressão Parsimonia, extraindo do conceito de comprimento mínimo da descrição. Assim, o sistema de negociação resultante é o mais simples possível e, em geral, acredita-se que, quanto mais simples for o Sistema de Negociação, melhor será no futuro. Em segundo lugar, a aleatoriedade é introduzida no processo evolutivo, o que reduz a possibilidade de encontrar soluções que sejam localmente, mas não globalmente otimizadas. A aleatoriedade é introduzida sobre não apenas as combinações do material genético utilizado nos Sistemas de Negociação evoluídos, mas em Parsimony Pressure, Mutation, Crossover e outros parâmetros de GP de nível superior. O teste de fora da amostra é realizado enquanto o treinamento está em andamento com informações estatísticas apresentadas nos testes de Teste de Amostra e Fora do Teste de Amostra. Os registros de execução são apresentados ao usuário para dados de treinamento, validação e fora de amostra. Bem comportado O desempenho fora da amostra pode ser indicativo de que o Sistema de Negociação está evoluindo com características robustas. A deterioração substancial no teste automático de Out of Sample em comparação com o teste In Sample pode implicar que a criação de um Sistema de Negociação robusto está em dúvida ou que o Terminal ou Conjunto de Entrada pode precisar ser alterado. Finalmente, o Conjunto de terminais é cuidadosamente escolhido, de modo a não prejudicar demais a seleção do material genético inicial em relação a qualquer viés ou sentimento de mercado específico.
O TSL não começa a ser executado com um Sistema de Negociação predefinido. Na verdade, apenas o conjunto de entradas e uma seleção de modos ou modos de entrada no mercado, para busca e atribuição automática de entrada, são feitos inicialmente. Um padrão ou comportamento indicador que pode ser pensado como uma situação de alta pode ser usado, descartado ou invertido dentro do GP. Nenhum padrão ou indicador é pré-atribuído a qualquer viés de movimento de mercado específico. Esta é uma saída radical do desenvolvimento do sistema de negociação gerado manualmente.
Um Sistema de Negociação é um conjunto lógico de instruções que dizem ao comerciante quando comprar ou vender um mercado específico. Essas instruções raramente exigem intervenção de um comerciante. Os Sistemas de Negociação podem ser negociados manualmente, observando as instruções de negociação em uma tela do computador, ou podem ser negociados, permitindo que o computador entre em negociações no mercado automaticamente. Ambos os métodos estão em uso generalizado hoje. Existem mais gerentes de dinheiro profissionais que se consideram comerciantes "sistemáticos ou mecânicos" do que aqueles que se consideram "discretos", e o desempenho dos gerentes de dinheiro sistemáticos é geralmente superior ao dos gestores de dinheiro discrecional. Estudos mostraram que as contas de negociação geralmente perdem dinheiro com mais freqüência se o cliente não estiver usando um Sistema de Negociação. O aumento significativo nos sistemas de negociação nos últimos 10 anos é evidente, especialmente nas corretora de commodities, no entanto, as empresas de corretagem de mercado de ações e títulos estão cada vez mais conscientes dos benefícios através do uso de sistemas de negociação e alguns começaram a oferecer sistemas de negociação para seus clientes de varejo.
A maioria dos gestores de fundos mútuos já estão usando algoritmos computacionais sofisticados para orientar suas decisões quanto ao "estoque quente a escolher" ou o que "rotação do setor" é favorável. Computadores e algoritmos tornaram-se mainstream no investimento e esperamos que essa tendência continue a ser mais jovem, os investidores mais experientes em informática continuam a permitir que partes do seu dinheiro sejam gerenciadas pelos sistemas de negociação para reduzir o risco e aumentar os retornos. As enormes perdas experimentadas pelos investidores que participam da compra e detenção de ações e fundos de investimento como o mercado de ações derretido nos últimos anos está promovendo esse movimento para uma abordagem mais disciplinada e lógica para investir no mercado de ações. O investidor médio percebe que ele ou ela atualmente permite que muitos aspectos de suas vidas e a vida de seus entes queridos sejam mantidos ou controlados por computadores, como os automóveis e as aeronaves que usamos para o transporte, o equipamento de diagnóstico médico que usamos para a manutenção da saúde, os controladores de aquecimento e refrigeração que usamos para controle de temperatura, as redes que usamos para informações baseadas na internet, até mesmo os jogos que jogamos para entretenimento. Por que, então, alguns investidores de varejo acreditam que podem "disparar do quadril" em suas decisões sobre "o que" estoque ou fundo mútuo para comprar ou vender e esperar ganhar dinheiro? Finalmente, o investidor médio ficou cauteloso com os conselhos e informações encaminhados por corretores, contadores, diretores corporativos e consultores financeiros sem escrúpulos.
Nos últimos 20 anos, matemáticos e desenvolvedores de software pesquisaram indicadores e padrões em mercados de ações e commodities buscando informações que possam apontar para a direção do mercado. Essas informações podem ser usadas para melhorar o desempenho dos Sistemas de Negociação. Geralmente, este processo de descoberta é realizado através de uma combinação de testes e erros e mais sofisticados "Mineração de Dados". Normalmente, o desenvolvedor levará semanas ou meses de crunching de números para produzir um potencial Sistema de Negociação. Muitas vezes, este sistema de negociação não funcionará bem quando usado no futuro devido ao que é chamado de "ajuste de curva". Ao longo dos anos, tem havido muitos sistemas de negociação (e empresas de desenvolvimento de sistemas de negociação) que vieram e foram, já que seus sistemas falharam na negociação ao vivo. O desenvolvimento de sistemas de negociação que continuam a atuar no futuro é difícil, mas não é impossível de realizar, embora nenhum desenvolvedor ético ou gerente de dinheiro dê uma garantia incondicional de que qualquer Sistema de Negociação ou, por isso, qualquer ação, vínculo ou fundo mútuo, continuará para produzir lucros no futuro para sempre.
O que demorou semanas ou meses para que o desenvolvedor do Trading System produza no passado pode agora ser produzido em minutos através do uso do Trading System Lab. O Trading System Lab é uma plataforma para a geração automática de sistemas de negociação e indicadores de negociação. A TSL faz uso de um mecanismo de programação genética de alta velocidade e produzirá sistemas de negociação a uma taxa de mais de 16 milhões de barras de sistema por segundo com base em 56 entradas. Note-se que apenas alguns insumos serão realmente usados ou necessários, resultando em estruturas de estratégia geralmente simples evoluídas. Com aproximadamente 40.000 a 200.000 sistemas necessários para uma convergência, o tempo de convergência para qualquer conjunto de dados pode ser aproximado. Note-se que não estamos simplesmente executando uma otimização de força bruta de indicadores existentes que procuram parâmetros ótimos a partir dos quais usar em um Sistema de Negociação já estruturado. O Gerador do Sistema de Negociação começa em uma origem de ponto zero, não fazendo suposições sobre o movimento do mercado no futuro e então "evolui" Sistemas de Negociação a uma taxa muito alta combinando informações presentes no mercado e formulando novos filtros, funções, condições e relacionamentos à medida que progride para um sistema de negociação "geneticamente modificado". O resultado é que um excelente sistema de negociação pode ser gerado em poucos minutos em 20-30 anos de dados de mercado diários em praticamente qualquer mercado.
Ao longo dos últimos anos, houve várias abordagens para a otimização do Sistema de Negociação que empregam o Algoritmo Genético menos poderoso. Os Programas Genéticos (GP's) são superiores aos Algoritmos Genéticos (GA's) por vários motivos. Primeiro, os GPs convergem em uma solução a uma taxa exponencial (muito rápido e ficando mais rápido), enquanto os Algoritmos Genéticos convergem em uma taxa linear (muito mais lenta e não está ficando mais rápida). Em segundo lugar, os GPs realmente geram o código da máquina do Sistema de Negociação que combinava o material genético (indicadores, padrões, dados inter-mercado) de maneiras únicas. Essas combinações únicas podem não ser intuitivamente óbvias e não requerem definições iniciais pelo desenvolvedor do sistema. As relações matemáticas únicas criadas podem se tornar novos indicadores ou variantes na Análise Técnica, ainda não desenvolvidas ou descobertas. GA, por outro lado, simplesmente procure soluções ótimas à medida que progridem no intervalo de parâmetros; eles não descobrem novas relações matemáticas e não escrevem seu próprio código de Sistema de Negociação. O código do sistema comercial do GP de vários comprimentos, usando genomas de comprimento variável, modificará o comprimento do Sistema de Negociação através do chamado cruzamento não homólogo e descartará completamente um indicador ou padrão que não contribua para a eficiência do Sistema de Negociação. O uso de GA apenas blocos de instruções de tamanho fixo, fazendo uso de apenas cruzamentos homólogos e não produzem código de código de troca de comprimento variável, nem descartarão um indicador ou padrão ineficiente tão prontamente como um GP. Finalmente, os Programas Genéticos são um avanço recente no domínio da aprendizagem por máquinas, enquanto os Algoritmos Genéticos foram descobertos há 30 anos. Os Programas Genéticos incluem todas as principais funcionalidades dos Algoritmos Genéticos; crossover, reprodução, mutação e fitness, no entanto GPs incluem características muito mais rápidas e robustas, tornando a GP a melhor opção para produzir Trading Systems. O GP empregado no Trading System Generator da TSL é o GP mais rápido atualmente disponível e não está disponível em nenhum outro software de mercado financeiro no mundo.
O Algoritmo de Programação Genética, o Simulador de Negociação e os Motores Fitness utilizados na TSL levaram 8 anos para produzir.
O Trading System Lab é o resultado de anos de trabalho árduo de uma equipe de engenheiros, cientistas, programadores e comerciantes, e acreditamos que representa a tecnologia mais avançada disponível hoje para comercializar os mercados.
SnowCron.
FREE E. Mail Classes.
Usando o Algoritmo Genético para criar Estratégia de Negociação FOREX lucrativa. Algoritmo Genético no Sistema de Redes Neurais do Cortex Feedforward Backpropagation Neural Network Aplicação para cálculos genéticos baseados em Forex trading.
Este exemplo usa conceitos e ideias do artigo anterior, então leia Algoritmo Genético de Rede Neural em Sistemas de Negociação FOREX primeiro, embora não seja obrigatório.
Sobre este texto.
Em primeiro lugar, leia o aviso legal. Este é um exemplo de usar a funcionalidade do algoritmo de algoritmo de algoritmo de redes nervosas Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu devo ser responsável por suas perdas.
O software Cortex Neural Networks possui redes neurais, e a FFBP que discutimos antes é apenas uma maneira de escolher estratégias de negociação forex. É uma boa técnica, poderosa e quando aplicada corretamente, muito promissora. No entanto, tem um problema - para ensinar a Rede Neural, precisamos saber o "resultado desejado".
É bastante fácil fazer quando fazemos a aproximação da função, apenas pegamos o valor "real" de uma função, porque sabemos o que deveria ser.
Quando fazemos a previsão da rede neural, utilizamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural na história, novamente, se prevermos, digamos, uma taxa de câmbio, sabemos (durante a formação) qual é a previsão correta .
No entanto, quando estamos construindo um sistema comercial, não temos idéia de qual é a decisão de negociação correta, mesmo que conheçamos a taxa de câmbio! De fato, temos muitas estratégias de negociação forex que podemos usar a qualquer momento, e precisamos encontrar uma boa - como? O que devemos alimentar como o resultado desejado de nossa Rede Neural?
Se você seguiu nosso artigo anterior, você sabe que nos enganamos para lidar com esse problema. Ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou taxa de câmbio), e então usamos essa previsão para fazer negociação. Então, fora da parte da rede Neural do programa, tomamos uma decisão sobre a qual a Rede Neural é a melhor.
Os algoritmos genéticos podem lidar diretamente com este problema, eles podem resolver o problema afirmado como "encontrar os melhores sinais comerciais".
Neste artigo, vamos usar o software Cortex Neural Networks para criar um programa desse tipo.
Usando o Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversos. Se você quer aprender tudo sobre eles, eu sugiro que você use Wikipedia, já que este artigo é apenas sobre o que o Cortex Neural Networks Software pode fazer.
Com o software Cortex Neural Networks, podemos criar uma Rede Neural que leve alguns dados, digamos, valores de um indicador, e produz algum resultado, digamos, sinais de negociação (comprar, vender, manter.) E parar a perda / tomar níveis de lucro para posições para ser aberto.
É claro que, se multiplicarmos os pesos dessa rede neural aleatoriamente, os resultados das negociações serão terríveis. No entanto, digamos que criamos uma dúzia de tais NNs. Então podemos testar o desempenho de cada um deles e escolher o melhor, o vencedor.
Esta foi a "primeira geração" dos NNs. Para continuar a segunda geração, precisamos permitir que nosso vencedor "procriar", mas para evitar a obtenção de cópias idênticas, vamos adicionar alguns números aleatórios aos pesos das descentinas.
Na segunda geração, temos o nosso vencedor da primeira geração e são cópias imperfeitas (mutadas). Vamos fazer testes novamente. Teremos outro vencedor, que é melhor do que qualquer outra rede neural na geração.
E assim por diante. Nós simplesmente permitimos que os vencedores criem, e eliminem os perdedores, assim como na evolução da vida real, e obteremos nossa Rede Neural de melhor negociação, sem nenhum conhecimento prévio do que o sistema de negociação (algoritmo genético) deveria ser.
Algoritmo Genético da Rede Neural: Exemplo 0.
Este é o primeiro exemplo de algoritmo genético, e muito simples. Nós vamos passar por ele passo a passo, para aprender todos os truques que os exemplos a seguir usarão.
O código tem comentários em linha, então vamos apenas nos concentrar nos momentos-chave.
Primeiro, criamos uma rede neural. É usar pesos aleatórios, e ainda não foi ensinado.
Então, no ciclo, fazemos 14 cópias, usando MUTATION_NN fumction. Esta função faz uma cópia de uma Rede Neural de origem, adicionando valores aleatórios de 0 para (no nosso caso) 0,1 para todos os pesos.
Mantivemos alças para 15 NNs resultantes em uma matriz, podemos fazê-lo, pois o identificador é apenas um número inteiro.
A razão pela qual usamos 15 NNs não tem nada a ver com a negociação: o software Cortex Neural Networks pode traçar até 15 linhas em um gráfico simultaneamente.
Podemos usar abordagens diferentes para o teste. Primeiro, podemos usar o conjunto de aprendizagem, tudo de uma vez. Segundo, podemos testar, digamos, 12.000 resordos (de 100.000) e percorrer o conjunto de aprendizado, do começo ao fim. Isso tornará o know-how diferente, pois buscaremos redes da Neural que sejam lucrativas em qualquer parte de dados, e não apenas em todo o conjunto. A segunda abordagem pode nos dar problemas, se os dados mudarem, do começo ao fim. Em seguida, a rede irá evoluir, obtendo capacidade de trocar no final do conjunto de dados e perdendo a capacidade de trocar no seu início.
Para resolver esse problema, vamos levar aleatoriamente 12.000 fragmentos de registros de dados e alimentá-lo para a Rede Neural.
Abaixo, adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note que 0,1 para mutação tange não é a única escolha, na verdade, até mesmo este parâmetro pode ser otimizado usando algoritmo genético.
Os NNs recém-criados são adicionados após 15 existentes. Desta forma, temos 30 NNs em uma matriz, 15 antigos e 15 novos. Então, vamos fazer o próximo ciclo de testes e matar os perdedores das duas gerações.
Para fazer testes, aplicamos a Rede Neural aos nossos dados, para produzir saídas, e depois chamar a função Test, que usa essas saídas para simular a negociação. Os resultados da negociação são usados para desidir, quais NNs são melhores.
Usamos um intervalo de registros nLearn, de nStart para nStart + nLearn, em que nStart é um ponto aleatório dentro do conjunto de aprendizado.
O código abaixo é um truque. A razão pela qual usamos é ilustrar o fato de que o algoritmo genético pode criar algoritmos genéticos, mas não será necessariamente o melhor e, também, sugerir que podemos melhorar o resultado, se implicarmos algumas limitações à aprendizagem processo.
É possível que nosso sistema de negociação funcione muito bem em operações longas e muito fraco em curto ou vice-versa. Se, digamos, os negócios longos são muito bons, esse algoritmo genético pode ganhar, mesmo com grandes perdas em transações curtas.
Para evitá-lo, atribuímos mais peso aos negócios longos em operações ímpares e curtas em ciclos pares. Este é apenas um exemplo, não há garantia, que irá melhorar alguma coisa. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não precisa fazer isso, ou pode fazer diferente.
Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção e, em seguida, usamos essa posição para adicionar o identificador da Rede Neural, aprendendo e testando os lucros para matrizes não ordenadas. Agora, temos dados para a Rede Neural atual no mesmo índice de matrizes que seu lucro.
A idéia é chegar a uma série de NNs, ordenados por rentabilidade. Como a matriz é classificada por lucro, para remover metade das redes, que são menos lucrativas, precisamos apenas remover NNs de 0 a 14.
As decisões de negociação são baseadas no valor do sinal da Rede Neural, a partir deste ponto de vista o programa é idêntico aos exemplos do artigo anterior.
FOREX Estratégia de Negociação: Discussing example 0.
Em primeiro lugar, vamos dar uma olhada nos gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom, como seria de esperar, a Rede Neural perde dinheiro (imagem evolution_00_gen_0.png copiada após a primeira iteração da pasta "imagens"):
A imagem para lucro no ciclo 15 é melhor, às vezes, o algoritmo genético pode aprender muito rápido:
No entanto, observe a saturação em uma curva de lucro.
É interessante também olhar para a forma como os lucros individuais mudam, tendo em mente, esse número de curva, digamos, 3 nem sempre é para a mesma Rede Neural, pois eles estão nascendo e terminaram o tempo todo:
Além disso, note que o pequeno sistema de negociação automatizado forex é pobre em transações curtas e muito melhor em longos, que pode ou não estar relacionado ao fato de que o dólar estava caindo em comparação com o euro durante esse período. Também pode ter algo a ver com parâmetros do nosso indicador (talvez, precisamos de um período diferente para shorts) ou a escolha de indicadores.
Aqui está a história depois de 92 e 248 ciclos:
Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir por que e como ajudar a situação.
Primeiro de tudo, cada geração não é supostamente melhor que a anterior? A resposta é não, pelo menos não dentro do modelo que usamos. Se pegarmos todo o conjunto de aprendizagem de uma só vez, e usá-lo repetidamente para ensinar nossas NNs, então sim, elas vão melhorar a cada geração. Mas, em vez disso, pegamos fragmentos aleatórios (12.000 registros no tempo) e os usamos.
Duas perguntas: por que o sistema falhou em fragmentos aleatórios de conjunto de aprendizado e por que não usamos conjunto de aprendizado completo? Bem. Para responder a segunda pergunta, eu fiz. NNs realizaram muito - no set de aprendizagem. E eles falharam no conjunto de testes, pelo mesmo motivo que falha quando usamos o aprendizado da FFPB. Para dizer de maneira diferente, nossos NNs se especializaram demais, eles aprenderam a sobreviver no ambiente ao qual eles estão acostumados, mas não fora dele. Isso acontece muito na natureza.
A abordagem que tomamos foi destinada a compensar isso, ao obrigar NNs a realizar bons em qualquer fragmento aleatório do conjunto de dados, de modo que, com sorte, eles também poderiam realizar em um conjunto de testes desconhecido. Em vez disso, eles falharam tanto no teste quanto no conjunto de aprendizado.
Imagine animais vivendo em um deserto. Muito sol, sem neve. Essa é uma metaforização para o mercado, já que nossos dados de NNs desempenham o papel de ambiente. Os animais aprenderam a viver em um deserto.
Imagine animais que vivem num clima frio. Neve e sem sol. Bem, eles se ajustaram.
No entanto, em nosso experimento, colocamos aleatoriamente nossos NNs em um deserto, na neve, na água, nas árvores. apresentando-os com diferentes fragmentos de dados (surgindo aleatoriamente, caindo, planos). Os animais morreram.
Ou, para colocar de forma diferente, selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, foi para o mercado em ascensão. Então, apresentamos, aos vencedores e seus filhos, uma queda dos dados do mercado. NNs funcionaram mal, nós melhoramos os melhores artistas, talvez, uma das crianças mutantes, que perdemos a capacidade de negociar no mercado em expansão, mas conseguiu alguma habilidade para lidar com a queda de um.
Depois viramos a mesa novamente e, novamente, obtivemos o melhor desempenho - mas o melhor entre os de pior desempenho. Nós simplesmente não davamos às nossas NNs nenhuma chance de se tornarem universais.
Existem técnicas que permitem ao algoritmo genético aprender novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, certo? Então, a evolução é capaz de lidar com mudanças repetitivas). Podemos discutir essas técnicas mais tarde, embora este artigo seja mais sobre o uso do software Cortex Neural Networks, do que sobre a construção de um sistema de negociação automatizado forex bem sucedido.
Algoritmo Genético da Rede Neural: Exemplo 1.
Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante o passo anterior tem duas grandes falhas. Primeiro, falhou em negociar com lucro. Está tudo bem, podemos tentar usar sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser rentável, mas com grandes remessas.
É um fato bem conhecido que, na vida real, a evolução pode otimizar mais de um parâmetro simultaneamente. Por exemplo, podemos pegar um animal, que pode correr rápido e ser resistente ao frio. Por que não tentar fazer o mesmo no nosso sistema de negociação automatizado forex?
É quando usamos correções, que não são nada além do conjunto de punições adicionais. Digamos que nosso sistema negocie com drawdown 0.5, enquanto queremos confirmá-lo para 0 - 0.3 interval. Para "dizer" ao sistema que cometeu um erro, diminuímos o lucro (um usado para determinar, qual algoritmo genético ganhou) ao grau, que é proporcional ao tamanho do DD. Então, o algoritmo de evolução cuida do resto.
Existem alguns outros fatores que queremos levar em consideração: talvez queiramos ter um número de operações de compra e venda mais ou menos igual, queremos ter mais operações rentáveis, então de falhas, podemos querer que o gráfico de lucro seja linear e assim por diante.
Em evolution_01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos algum número grande para um valor de correção inicial. Multiplicamos isso para valores pequenos (geralmente, entre 0 e 1), dependendo da "punição" que queremos aplicar. Então, multiplicamos nosso lucro por esta correção. Como resultado, o lucro é corrigido, para refletir quanto o algoritmo genético corresponde aos nossos outros critérios. Então usamos o resultado para encontrar uma Rede Neural de vencedores.
FOREX Estratégia de Negociação: Discutir o exemplo 1.
O exemplo 1 funciona muito melhor do que o exemplo 0. Durante os primeiros 100 ciclos, ele aprendeu muito e os gráficos de lucro parecem reconfortantes. No entanto, como no exemplo 0, os negócios longos são muito mais rentáveis, o que provavelmente significa que há um problema em nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre algumas das condições iniciais contraditórias:
Há alguma dinâmica positiva tanto no conjunto de aprendizado quanto, mais importante, no conjunto de testes.
Quanto ao aprendizado adicional, no ciclo 278 podemos ver, que nosso sistema foi superado. Isso significa que ainda temos progresso no aprendizado definido:
Mas o conjunto de testes mostra fraqueza:
Este é um problema comum com NNs: quando ensinamos isso no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - até o grau, quando perde o desempenho no conjunto de testes.
Para lidar com esse problema, uma solução "tradicional" é usada: continuamos procurando a Rede Neural, que executa o melhor no conjunto de testes, e salve-o, substituindo o melhor possível, cada vez que o novo pico é alcançado. Esta é a mesma abordagem, que usamos no treinamento FFBP, exceto, desta vez, temos que fazê-lo nós mesmos (adicionando código, que procura uma melhor Rede Neural em um conjunto de testes e ligando para SAVE_NN ou exportando pesos da Rede Neural para um Arquivo). Dessa forma, quando você interromper seu treinamento, você terá o melhor desempenho de ON TESTING SET salvo e esperando por você.
Observe também que não é o máximo. o lucro que você busca, mas o desempenho ideal, portanto, considere usar correções ao procurar um melhor desempenho em um conjunto de testes.
Algoritmo Genético para Análise Técnica FOREX: Onde agora?
Depois de ter sua Rede Neural de vencedor, você pode seguir as etapas, descritas no artigo anterior, para exportar pesos da Rede Neural e depois usá-los em sua plataforma de negociação em tempo real, como Meta Trader, Trade Station e assim por diante.
Alternativamente, você pode se concentrar em outras formas de otimizar a Rede Neural, ao contrário do algoritmo FFBP, aqui você pode obter avay usando conjuntos de aprendizagem e teste e mover a aprendizagem seqüencial.
Um sistema de negociação Forex baseado em um algoritmo genético.
Luís Mendes Pedro Godinho Joana Dias Autor de e-mail.
Neste artigo, será descrito um algoritmo genético que visa otimizar um conjunto de regras que constituem um sistema de negociação para o mercado Forex. Cada indivíduo na população representa um conjunto de dez regras comerciais comerciais (cinco para entrar em uma posição e cinco outras para sair). Essas regras têm 31 parâmetros no total, que correspondem aos genes dos indivíduos. A população evoluirá em um determinado ambiente, definido por uma série temporal de um par de moedas específico. A adequação de um determinado indivíduo representa o quão bem ele conseguiu se adaptar ao meio ambiente e é calculado aplicando as regras correspondentes às séries temporais e calculando a relação entre o lucro e a redução máxima (a relação Stirling) . Dois pares de moedas foram usados: EUR / USD e GBP / USD. Dados diferentes foram utilizados para a evolução da população e para testar os melhores indivíduos. Os resultados alcançados pelo sistema são discutidos. Os melhores indivíduos conseguem alcançar resultados muito bons nas séries de treinamento. Na série de testes, as estratégias desenvolvidas mostram alguma dificuldade em obter resultados positivos, se você levar em consideração os custos de transação. Se você ignorar os custos de transação, os resultados são principalmente positivos, mostrando que os melhores indivíduos possuem alguma capacidade de previsão.
Notas.
Agradecimentos.
Gostaríamos de agradecer aos árbitros anônimos, cujos comentários nos ajudaram a melhorar este artigo.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Luís Mendes 1 Pedro Godinho 2 Joana Dias 3 Email autor 1. Faculdade de Economia Universidade de Coimbra Coimbra Portugal 2. Faculdade de Economia e GEMF Universidade de Coimbra Coimbra Portugal 3. Faculdade de Economia e Inesc-Coimbra Universidade de Coimbra Coimbra Portugal.
Sobre este artigo.
Recomendações personalizadas.
Cite o artigo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Acesso ilimitado ao artigo completo Download instantâneo Inclua o imposto de vendas local, se aplicável.
Cite o artigo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.
Ajustando os parâmetros de controle de um algoritmo genético: uma aplicação para design de sistemas de negociação técnica.
Este artigo estuda o problema de como as mudanças no projeto do algoritmo genético (GA) têm efeito sobre os resultados obtidos em aplicações da vida real. Neste estudo, focado na aplicação de um GA para o ajuste das regras técnicas de negociação no contexto dos mercados financeiros, nossa tese tentativa é que o GA é robusto com relação a mudanças de design. A otimização dos sistemas de negociação técnica é uma área adequada para a aplicação da metaheurística GA, já que a complexidade do problema cresce exponencialmente à medida que novas regras técnicas são adicionadas ao sistema e como o tempo de resposta é crucial ao aplicar o sistema em tempo real. dados. Até agora, a maioria dos aplicativos da GA para este assunto evitava a questão da possível "dependência de design" em seus resultados. Os dados que relatamos, com base em nossos experimentos, não nos permitem refutar a hipótese de robustez do AG para projetar a implementação, quando se aplica ao ajuste de sistemas de negociação técnica.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou sua instituição.
Negociação quantitativa.
Investimentos quantitativos e idéias comerciais, pesquisas e análises.
Sexta-feira, 16 de outubro de 2015.
Um software de algoritmo genético de código aberto (publicação de convidado)
Recentemente eu libertei o Genotick - um software de código aberto que pode criar e gerenciar um grupo de sistemas de negociação. No núcleo do Genotick encontra-se uma epifania: se é possível criar qualquer software com apenas um punhado de instruções de montagem, deve ser possível criar qualquer sistema de negociação com um punhado de instruções simples. Essas instruções simples e sem sentido tornam-se extremamente poderosas quando combinadas. As instruções corretas na ordem correta podem criar qualquer tipo de sistema mecânico: seguimento da tendência, retorno médio ou mesmo com base em dados fundamentais.
Criando um Sistema de Negociação no Laboratório de Sistemas de Negociação.
O Trading System Lab gerará automaticamente Sistemas de Negociação em qualquer mercado em poucos minutos, usando um programa de computador muito conhecido, conhecido como AIMGP (Indução Automática de Código de Máquina com Programação Genética). A criação de um sistema de negociação no Trade System Lab é realizada em 3 etapas fáceis. Primeiro, é executado um pré-processador simples que extrai e pré-processa automaticamente os dados necessários do mercado com o qual você deseja trabalhar. A TSL aceita dados CSI, MetaStock, AIQ, TradeStation, dados de Internet gratuitos, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet. Em segundo lugar, o gerador do sistema de negociação (GP) é executado por vários minutos, ou mais, para evoluir um novo sistema de negociação. Você pode usar seus próprios dados, padrões, indicadores, relações de inter-mercado ou dados fundamentais dentro do TSL. Terceiro, o Sistema de Negociação evoluído é formatado para produzir novos sinais do Sistema de Negociação dentro da TradeStation ™ ou muitas outras plataformas de negociação. O TSL escreverá automaticamente Easy Language, Java, Assembler, código C, código C # e WealthLab Script Language. O Trading System pode então ser negociado manualmente, negociado através de um corretor ou negociado automaticamente. Você pode criar o Trading System você mesmo ou podemos fazer isso por você. Então, você ou o seu corretor podem trocar o sistema manualmente ou automaticamente.
O Programa de Genética do Sistema de Negociação do Comércio contém vários recursos que reduzem a possibilidade de montagem da curva ou produzem um Sistema de Negociação que não continua a atuar no futuro. Em primeiro lugar, os Sistemas de Negociação evoluídos têm seu tamanho reduzido ao tamanho mais baixo possível através do que é chamado de Pressão Parsimonia, extraindo do conceito de comprimento mínimo da descrição. Assim, o sistema de negociação resultante é o mais simples possível e, em geral, acredita-se que, quanto mais simples for o Sistema de Negociação, melhor será no futuro. Em segundo lugar, a aleatoriedade é introduzida no processo evolutivo, o que reduz a possibilidade de encontrar soluções que sejam localmente, mas não globalmente otimizadas. A aleatoriedade é introduzida sobre não apenas as combinações do material genético utilizado nos Sistemas de Negociação evoluídos, mas em Parsimony Pressure, Mutation, Crossover e outros parâmetros de GP de nível superior. O teste de fora da amostra é realizado enquanto o treinamento está em andamento com informações estatísticas apresentadas nos testes de Teste de Amostra e Fora do Teste de Amostra. Os registros de execução são apresentados ao usuário para dados de treinamento, validação e fora de amostra. Bem comportado O desempenho fora da amostra pode ser indicativo de que o Sistema de Negociação está evoluindo com características robustas. A deterioração substancial no teste automático de Out of Sample em comparação com o teste In Sample pode implicar que a criação de um Sistema de Negociação robusto está em dúvida ou que o Terminal ou Conjunto de Entrada pode precisar ser alterado. Finalmente, o Conjunto de terminais é cuidadosamente escolhido, de modo a não prejudicar demais a seleção do material genético inicial em relação a qualquer viés ou sentimento de mercado específico.
O TSL não começa a ser executado com um Sistema de Negociação predefinido. Na verdade, apenas o conjunto de entradas e uma seleção de modos ou modos de entrada no mercado, para busca e atribuição automática de entrada, são feitos inicialmente. Um padrão ou comportamento indicador que pode ser pensado como uma situação de alta pode ser usado, descartado ou invertido dentro do GP. Nenhum padrão ou indicador é pré-atribuído a qualquer viés de movimento de mercado específico. Esta é uma saída radical do desenvolvimento do sistema de negociação gerado manualmente.
Um Sistema de Negociação é um conjunto lógico de instruções que dizem ao comerciante quando comprar ou vender um mercado específico. Essas instruções raramente exigem intervenção de um comerciante. Os Sistemas de Negociação podem ser negociados manualmente, observando as instruções de negociação em uma tela do computador, ou podem ser negociados, permitindo que o computador entre em negociações no mercado automaticamente. Ambos os métodos estão em uso generalizado hoje. Existem mais gerentes de dinheiro profissionais que se consideram comerciantes "sistemáticos ou mecânicos" do que aqueles que se consideram "discretos", e o desempenho dos gerentes de dinheiro sistemáticos é geralmente superior ao dos gestores de dinheiro discrecional. Estudos mostraram que as contas de negociação geralmente perdem dinheiro com mais freqüência se o cliente não estiver usando um Sistema de Negociação. O aumento significativo nos sistemas de negociação nos últimos 10 anos é evidente, especialmente nas corretora de commodities, no entanto, as empresas de corretagem de mercado de ações e títulos estão cada vez mais conscientes dos benefícios através do uso de sistemas de negociação e alguns começaram a oferecer sistemas de negociação para seus clientes de varejo.
A maioria dos gestores de fundos mútuos já estão usando algoritmos computacionais sofisticados para orientar suas decisões quanto ao "estoque quente a escolher" ou o que "rotação do setor" é favorável. Computadores e algoritmos tornaram-se mainstream no investimento e esperamos que essa tendência continue a ser mais jovem, os investidores mais experientes em informática continuam a permitir que partes do seu dinheiro sejam gerenciadas pelos sistemas de negociação para reduzir o risco e aumentar os retornos. As enormes perdas experimentadas pelos investidores que participam da compra e detenção de ações e fundos de investimento como o mercado de ações derretido nos últimos anos está promovendo esse movimento para uma abordagem mais disciplinada e lógica para investir no mercado de ações. O investidor médio percebe que ele ou ela atualmente permite que muitos aspectos de suas vidas e a vida de seus entes queridos sejam mantidos ou controlados por computadores, como os automóveis e as aeronaves que usamos para o transporte, o equipamento de diagnóstico médico que usamos para a manutenção da saúde, os controladores de aquecimento e refrigeração que usamos para controle de temperatura, as redes que usamos para informações baseadas na internet, até mesmo os jogos que jogamos para entretenimento. Por que, então, alguns investidores de varejo acreditam que podem "disparar do quadril" em suas decisões sobre "o que" estoque ou fundo mútuo para comprar ou vender e esperar ganhar dinheiro? Finalmente, o investidor médio ficou cauteloso com os conselhos e informações encaminhados por corretores, contadores, diretores corporativos e consultores financeiros sem escrúpulos.
Nos últimos 20 anos, matemáticos e desenvolvedores de software pesquisaram indicadores e padrões em mercados de ações e commodities buscando informações que possam apontar para a direção do mercado. Essas informações podem ser usadas para melhorar o desempenho dos Sistemas de Negociação. Geralmente, este processo de descoberta é realizado através de uma combinação de testes e erros e mais sofisticados "Mineração de Dados". Normalmente, o desenvolvedor levará semanas ou meses de crunching de números para produzir um potencial Sistema de Negociação. Muitas vezes, este sistema de negociação não funcionará bem quando usado no futuro devido ao que é chamado de "ajuste de curva". Ao longo dos anos, tem havido muitos sistemas de negociação (e empresas de desenvolvimento de sistemas de negociação) que vieram e foram, já que seus sistemas falharam na negociação ao vivo. O desenvolvimento de sistemas de negociação que continuam a atuar no futuro é difícil, mas não é impossível de realizar, embora nenhum desenvolvedor ético ou gerente de dinheiro dê uma garantia incondicional de que qualquer Sistema de Negociação ou, por isso, qualquer ação, vínculo ou fundo mútuo, continuará para produzir lucros no futuro para sempre.
O que demorou semanas ou meses para que o desenvolvedor do Trading System produza no passado pode agora ser produzido em minutos através do uso do Trading System Lab. O Trading System Lab é uma plataforma para a geração automática de sistemas de negociação e indicadores de negociação. A TSL faz uso de um mecanismo de programação genética de alta velocidade e produzirá sistemas de negociação a uma taxa de mais de 16 milhões de barras de sistema por segundo com base em 56 entradas. Note-se que apenas alguns insumos serão realmente usados ou necessários, resultando em estruturas de estratégia geralmente simples evoluídas. Com aproximadamente 40.000 a 200.000 sistemas necessários para uma convergência, o tempo de convergência para qualquer conjunto de dados pode ser aproximado. Note-se que não estamos simplesmente executando uma otimização de força bruta de indicadores existentes que procuram parâmetros ótimos a partir dos quais usar em um Sistema de Negociação já estruturado. O Gerador do Sistema de Negociação começa em uma origem de ponto zero, não fazendo suposições sobre o movimento do mercado no futuro e então "evolui" Sistemas de Negociação a uma taxa muito alta combinando informações presentes no mercado e formulando novos filtros, funções, condições e relacionamentos à medida que progride para um sistema de negociação "geneticamente modificado". O resultado é que um excelente sistema de negociação pode ser gerado em poucos minutos em 20-30 anos de dados de mercado diários em praticamente qualquer mercado.
Ao longo dos últimos anos, houve várias abordagens para a otimização do Sistema de Negociação que empregam o Algoritmo Genético menos poderoso. Os Programas Genéticos (GP's) são superiores aos Algoritmos Genéticos (GA's) por vários motivos. Primeiro, os GPs convergem em uma solução a uma taxa exponencial (muito rápido e ficando mais rápido), enquanto os Algoritmos Genéticos convergem em uma taxa linear (muito mais lenta e não está ficando mais rápida). Em segundo lugar, os GPs realmente geram o código da máquina do Sistema de Negociação que combinava o material genético (indicadores, padrões, dados inter-mercado) de maneiras únicas. Essas combinações únicas podem não ser intuitivamente óbvias e não requerem definições iniciais pelo desenvolvedor do sistema. As relações matemáticas únicas criadas podem se tornar novos indicadores ou variantes na Análise Técnica, ainda não desenvolvidas ou descobertas. GA, por outro lado, simplesmente procure soluções ótimas à medida que progridem no intervalo de parâmetros; eles não descobrem novas relações matemáticas e não escrevem seu próprio código de Sistema de Negociação. O código do sistema comercial do GP de vários comprimentos, usando genomas de comprimento variável, modificará o comprimento do Sistema de Negociação através do chamado cruzamento não homólogo e descartará completamente um indicador ou padrão que não contribua para a eficiência do Sistema de Negociação. O uso de GA apenas blocos de instruções de tamanho fixo, fazendo uso de apenas cruzamentos homólogos e não produzem código de código de troca de comprimento variável, nem descartarão um indicador ou padrão ineficiente tão prontamente como um GP. Finalmente, os Programas Genéticos são um avanço recente no domínio da aprendizagem por máquinas, enquanto os Algoritmos Genéticos foram descobertos há 30 anos. Os Programas Genéticos incluem todas as principais funcionalidades dos Algoritmos Genéticos; crossover, reprodução, mutação e fitness, no entanto GPs incluem características muito mais rápidas e robustas, tornando a GP a melhor opção para produzir Trading Systems. O GP empregado no Trading System Generator da TSL é o GP mais rápido atualmente disponível e não está disponível em nenhum outro software de mercado financeiro no mundo.
O Algoritmo de Programação Genética, o Simulador de Negociação e os Motores Fitness utilizados na TSL levaram 8 anos para produzir.
O Trading System Lab é o resultado de anos de trabalho árduo de uma equipe de engenheiros, cientistas, programadores e comerciantes, e acreditamos que representa a tecnologia mais avançada disponível hoje para comercializar os mercados.
SnowCron.
FREE E. Mail Classes.
Usando o Algoritmo Genético para criar Estratégia de Negociação FOREX lucrativa. Algoritmo Genético no Sistema de Redes Neurais do Cortex Feedforward Backpropagation Neural Network Aplicação para cálculos genéticos baseados em Forex trading.
Este exemplo usa conceitos e ideias do artigo anterior, então leia Algoritmo Genético de Rede Neural em Sistemas de Negociação FOREX primeiro, embora não seja obrigatório.
Sobre este texto.
Em primeiro lugar, leia o aviso legal. Este é um exemplo de usar a funcionalidade do algoritmo de algoritmo de algoritmo de redes nervosas Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu devo ser responsável por suas perdas.
O software Cortex Neural Networks possui redes neurais, e a FFBP que discutimos antes é apenas uma maneira de escolher estratégias de negociação forex. É uma boa técnica, poderosa e quando aplicada corretamente, muito promissora. No entanto, tem um problema - para ensinar a Rede Neural, precisamos saber o "resultado desejado".
É bastante fácil fazer quando fazemos a aproximação da função, apenas pegamos o valor "real" de uma função, porque sabemos o que deveria ser.
Quando fazemos a previsão da rede neural, utilizamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural na história, novamente, se prevermos, digamos, uma taxa de câmbio, sabemos (durante a formação) qual é a previsão correta .
No entanto, quando estamos construindo um sistema comercial, não temos idéia de qual é a decisão de negociação correta, mesmo que conheçamos a taxa de câmbio! De fato, temos muitas estratégias de negociação forex que podemos usar a qualquer momento, e precisamos encontrar uma boa - como? O que devemos alimentar como o resultado desejado de nossa Rede Neural?
Se você seguiu nosso artigo anterior, você sabe que nos enganamos para lidar com esse problema. Ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou taxa de câmbio), e então usamos essa previsão para fazer negociação. Então, fora da parte da rede Neural do programa, tomamos uma decisão sobre a qual a Rede Neural é a melhor.
Os algoritmos genéticos podem lidar diretamente com este problema, eles podem resolver o problema afirmado como "encontrar os melhores sinais comerciais".
Neste artigo, vamos usar o software Cortex Neural Networks para criar um programa desse tipo.
Usando o Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversos. Se você quer aprender tudo sobre eles, eu sugiro que você use Wikipedia, já que este artigo é apenas sobre o que o Cortex Neural Networks Software pode fazer.
Com o software Cortex Neural Networks, podemos criar uma Rede Neural que leve alguns dados, digamos, valores de um indicador, e produz algum resultado, digamos, sinais de negociação (comprar, vender, manter.) E parar a perda / tomar níveis de lucro para posições para ser aberto.
É claro que, se multiplicarmos os pesos dessa rede neural aleatoriamente, os resultados das negociações serão terríveis. No entanto, digamos que criamos uma dúzia de tais NNs. Então podemos testar o desempenho de cada um deles e escolher o melhor, o vencedor.
Esta foi a "primeira geração" dos NNs. Para continuar a segunda geração, precisamos permitir que nosso vencedor "procriar", mas para evitar a obtenção de cópias idênticas, vamos adicionar alguns números aleatórios aos pesos das descentinas.
Na segunda geração, temos o nosso vencedor da primeira geração e são cópias imperfeitas (mutadas). Vamos fazer testes novamente. Teremos outro vencedor, que é melhor do que qualquer outra rede neural na geração.
E assim por diante. Nós simplesmente permitimos que os vencedores criem, e eliminem os perdedores, assim como na evolução da vida real, e obteremos nossa Rede Neural de melhor negociação, sem nenhum conhecimento prévio do que o sistema de negociação (algoritmo genético) deveria ser.
Algoritmo Genético da Rede Neural: Exemplo 0.
Este é o primeiro exemplo de algoritmo genético, e muito simples. Nós vamos passar por ele passo a passo, para aprender todos os truques que os exemplos a seguir usarão.
O código tem comentários em linha, então vamos apenas nos concentrar nos momentos-chave.
Primeiro, criamos uma rede neural. É usar pesos aleatórios, e ainda não foi ensinado.
Então, no ciclo, fazemos 14 cópias, usando MUTATION_NN fumction. Esta função faz uma cópia de uma Rede Neural de origem, adicionando valores aleatórios de 0 para (no nosso caso) 0,1 para todos os pesos.
Mantivemos alças para 15 NNs resultantes em uma matriz, podemos fazê-lo, pois o identificador é apenas um número inteiro.
A razão pela qual usamos 15 NNs não tem nada a ver com a negociação: o software Cortex Neural Networks pode traçar até 15 linhas em um gráfico simultaneamente.
Podemos usar abordagens diferentes para o teste. Primeiro, podemos usar o conjunto de aprendizagem, tudo de uma vez. Segundo, podemos testar, digamos, 12.000 resordos (de 100.000) e percorrer o conjunto de aprendizado, do começo ao fim. Isso tornará o know-how diferente, pois buscaremos redes da Neural que sejam lucrativas em qualquer parte de dados, e não apenas em todo o conjunto. A segunda abordagem pode nos dar problemas, se os dados mudarem, do começo ao fim. Em seguida, a rede irá evoluir, obtendo capacidade de trocar no final do conjunto de dados e perdendo a capacidade de trocar no seu início.
Para resolver esse problema, vamos levar aleatoriamente 12.000 fragmentos de registros de dados e alimentá-lo para a Rede Neural.
Abaixo, adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note que 0,1 para mutação tange não é a única escolha, na verdade, até mesmo este parâmetro pode ser otimizado usando algoritmo genético.
Os NNs recém-criados são adicionados após 15 existentes. Desta forma, temos 30 NNs em uma matriz, 15 antigos e 15 novos. Então, vamos fazer o próximo ciclo de testes e matar os perdedores das duas gerações.
Para fazer testes, aplicamos a Rede Neural aos nossos dados, para produzir saídas, e depois chamar a função Test, que usa essas saídas para simular a negociação. Os resultados da negociação são usados para desidir, quais NNs são melhores.
Usamos um intervalo de registros nLearn, de nStart para nStart + nLearn, em que nStart é um ponto aleatório dentro do conjunto de aprendizado.
O código abaixo é um truque. A razão pela qual usamos é ilustrar o fato de que o algoritmo genético pode criar algoritmos genéticos, mas não será necessariamente o melhor e, também, sugerir que podemos melhorar o resultado, se implicarmos algumas limitações à aprendizagem processo.
É possível que nosso sistema de negociação funcione muito bem em operações longas e muito fraco em curto ou vice-versa. Se, digamos, os negócios longos são muito bons, esse algoritmo genético pode ganhar, mesmo com grandes perdas em transações curtas.
Para evitá-lo, atribuímos mais peso aos negócios longos em operações ímpares e curtas em ciclos pares. Este é apenas um exemplo, não há garantia, que irá melhorar alguma coisa. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não precisa fazer isso, ou pode fazer diferente.
Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção e, em seguida, usamos essa posição para adicionar o identificador da Rede Neural, aprendendo e testando os lucros para matrizes não ordenadas. Agora, temos dados para a Rede Neural atual no mesmo índice de matrizes que seu lucro.
A idéia é chegar a uma série de NNs, ordenados por rentabilidade. Como a matriz é classificada por lucro, para remover metade das redes, que são menos lucrativas, precisamos apenas remover NNs de 0 a 14.
As decisões de negociação são baseadas no valor do sinal da Rede Neural, a partir deste ponto de vista o programa é idêntico aos exemplos do artigo anterior.
FOREX Estratégia de Negociação: Discussing example 0.
Em primeiro lugar, vamos dar uma olhada nos gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom, como seria de esperar, a Rede Neural perde dinheiro (imagem evolution_00_gen_0.png copiada após a primeira iteração da pasta "imagens"):
A imagem para lucro no ciclo 15 é melhor, às vezes, o algoritmo genético pode aprender muito rápido:
No entanto, observe a saturação em uma curva de lucro.
É interessante também olhar para a forma como os lucros individuais mudam, tendo em mente, esse número de curva, digamos, 3 nem sempre é para a mesma Rede Neural, pois eles estão nascendo e terminaram o tempo todo:
Além disso, note que o pequeno sistema de negociação automatizado forex é pobre em transações curtas e muito melhor em longos, que pode ou não estar relacionado ao fato de que o dólar estava caindo em comparação com o euro durante esse período. Também pode ter algo a ver com parâmetros do nosso indicador (talvez, precisamos de um período diferente para shorts) ou a escolha de indicadores.
Aqui está a história depois de 92 e 248 ciclos:
Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir por que e como ajudar a situação.
Primeiro de tudo, cada geração não é supostamente melhor que a anterior? A resposta é não, pelo menos não dentro do modelo que usamos. Se pegarmos todo o conjunto de aprendizagem de uma só vez, e usá-lo repetidamente para ensinar nossas NNs, então sim, elas vão melhorar a cada geração. Mas, em vez disso, pegamos fragmentos aleatórios (12.000 registros no tempo) e os usamos.
Duas perguntas: por que o sistema falhou em fragmentos aleatórios de conjunto de aprendizado e por que não usamos conjunto de aprendizado completo? Bem. Para responder a segunda pergunta, eu fiz. NNs realizaram muito - no set de aprendizagem. E eles falharam no conjunto de testes, pelo mesmo motivo que falha quando usamos o aprendizado da FFPB. Para dizer de maneira diferente, nossos NNs se especializaram demais, eles aprenderam a sobreviver no ambiente ao qual eles estão acostumados, mas não fora dele. Isso acontece muito na natureza.
A abordagem que tomamos foi destinada a compensar isso, ao obrigar NNs a realizar bons em qualquer fragmento aleatório do conjunto de dados, de modo que, com sorte, eles também poderiam realizar em um conjunto de testes desconhecido. Em vez disso, eles falharam tanto no teste quanto no conjunto de aprendizado.
Imagine animais vivendo em um deserto. Muito sol, sem neve. Essa é uma metaforização para o mercado, já que nossos dados de NNs desempenham o papel de ambiente. Os animais aprenderam a viver em um deserto.
Imagine animais que vivem num clima frio. Neve e sem sol. Bem, eles se ajustaram.
No entanto, em nosso experimento, colocamos aleatoriamente nossos NNs em um deserto, na neve, na água, nas árvores. apresentando-os com diferentes fragmentos de dados (surgindo aleatoriamente, caindo, planos). Os animais morreram.
Ou, para colocar de forma diferente, selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, foi para o mercado em ascensão. Então, apresentamos, aos vencedores e seus filhos, uma queda dos dados do mercado. NNs funcionaram mal, nós melhoramos os melhores artistas, talvez, uma das crianças mutantes, que perdemos a capacidade de negociar no mercado em expansão, mas conseguiu alguma habilidade para lidar com a queda de um.
Depois viramos a mesa novamente e, novamente, obtivemos o melhor desempenho - mas o melhor entre os de pior desempenho. Nós simplesmente não davamos às nossas NNs nenhuma chance de se tornarem universais.
Existem técnicas que permitem ao algoritmo genético aprender novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, certo? Então, a evolução é capaz de lidar com mudanças repetitivas). Podemos discutir essas técnicas mais tarde, embora este artigo seja mais sobre o uso do software Cortex Neural Networks, do que sobre a construção de um sistema de negociação automatizado forex bem sucedido.
Algoritmo Genético da Rede Neural: Exemplo 1.
Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante o passo anterior tem duas grandes falhas. Primeiro, falhou em negociar com lucro. Está tudo bem, podemos tentar usar sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser rentável, mas com grandes remessas.
É um fato bem conhecido que, na vida real, a evolução pode otimizar mais de um parâmetro simultaneamente. Por exemplo, podemos pegar um animal, que pode correr rápido e ser resistente ao frio. Por que não tentar fazer o mesmo no nosso sistema de negociação automatizado forex?
É quando usamos correções, que não são nada além do conjunto de punições adicionais. Digamos que nosso sistema negocie com drawdown 0.5, enquanto queremos confirmá-lo para 0 - 0.3 interval. Para "dizer" ao sistema que cometeu um erro, diminuímos o lucro (um usado para determinar, qual algoritmo genético ganhou) ao grau, que é proporcional ao tamanho do DD. Então, o algoritmo de evolução cuida do resto.
Existem alguns outros fatores que queremos levar em consideração: talvez queiramos ter um número de operações de compra e venda mais ou menos igual, queremos ter mais operações rentáveis, então de falhas, podemos querer que o gráfico de lucro seja linear e assim por diante.
Em evolution_01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos algum número grande para um valor de correção inicial. Multiplicamos isso para valores pequenos (geralmente, entre 0 e 1), dependendo da "punição" que queremos aplicar. Então, multiplicamos nosso lucro por esta correção. Como resultado, o lucro é corrigido, para refletir quanto o algoritmo genético corresponde aos nossos outros critérios. Então usamos o resultado para encontrar uma Rede Neural de vencedores.
FOREX Estratégia de Negociação: Discutir o exemplo 1.
O exemplo 1 funciona muito melhor do que o exemplo 0. Durante os primeiros 100 ciclos, ele aprendeu muito e os gráficos de lucro parecem reconfortantes. No entanto, como no exemplo 0, os negócios longos são muito mais rentáveis, o que provavelmente significa que há um problema em nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre algumas das condições iniciais contraditórias:
Há alguma dinâmica positiva tanto no conjunto de aprendizado quanto, mais importante, no conjunto de testes.
Quanto ao aprendizado adicional, no ciclo 278 podemos ver, que nosso sistema foi superado. Isso significa que ainda temos progresso no aprendizado definido:
Mas o conjunto de testes mostra fraqueza:
Este é um problema comum com NNs: quando ensinamos isso no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - até o grau, quando perde o desempenho no conjunto de testes.
Para lidar com esse problema, uma solução "tradicional" é usada: continuamos procurando a Rede Neural, que executa o melhor no conjunto de testes, e salve-o, substituindo o melhor possível, cada vez que o novo pico é alcançado. Esta é a mesma abordagem, que usamos no treinamento FFBP, exceto, desta vez, temos que fazê-lo nós mesmos (adicionando código, que procura uma melhor Rede Neural em um conjunto de testes e ligando para SAVE_NN ou exportando pesos da Rede Neural para um Arquivo). Dessa forma, quando você interromper seu treinamento, você terá o melhor desempenho de ON TESTING SET salvo e esperando por você.
Observe também que não é o máximo. o lucro que você busca, mas o desempenho ideal, portanto, considere usar correções ao procurar um melhor desempenho em um conjunto de testes.
Algoritmo Genético para Análise Técnica FOREX: Onde agora?
Depois de ter sua Rede Neural de vencedor, você pode seguir as etapas, descritas no artigo anterior, para exportar pesos da Rede Neural e depois usá-los em sua plataforma de negociação em tempo real, como Meta Trader, Trade Station e assim por diante.
Alternativamente, você pode se concentrar em outras formas de otimizar a Rede Neural, ao contrário do algoritmo FFBP, aqui você pode obter avay usando conjuntos de aprendizagem e teste e mover a aprendizagem seqüencial.
Um sistema de negociação Forex baseado em um algoritmo genético.
Luís Mendes Pedro Godinho Joana Dias Autor de e-mail.
Neste artigo, será descrito um algoritmo genético que visa otimizar um conjunto de regras que constituem um sistema de negociação para o mercado Forex. Cada indivíduo na população representa um conjunto de dez regras comerciais comerciais (cinco para entrar em uma posição e cinco outras para sair). Essas regras têm 31 parâmetros no total, que correspondem aos genes dos indivíduos. A população evoluirá em um determinado ambiente, definido por uma série temporal de um par de moedas específico. A adequação de um determinado indivíduo representa o quão bem ele conseguiu se adaptar ao meio ambiente e é calculado aplicando as regras correspondentes às séries temporais e calculando a relação entre o lucro e a redução máxima (a relação Stirling) . Dois pares de moedas foram usados: EUR / USD e GBP / USD. Dados diferentes foram utilizados para a evolução da população e para testar os melhores indivíduos. Os resultados alcançados pelo sistema são discutidos. Os melhores indivíduos conseguem alcançar resultados muito bons nas séries de treinamento. Na série de testes, as estratégias desenvolvidas mostram alguma dificuldade em obter resultados positivos, se você levar em consideração os custos de transação. Se você ignorar os custos de transação, os resultados são principalmente positivos, mostrando que os melhores indivíduos possuem alguma capacidade de previsão.
Notas.
Agradecimentos.
Gostaríamos de agradecer aos árbitros anônimos, cujos comentários nos ajudaram a melhorar este artigo.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Luís Mendes 1 Pedro Godinho 2 Joana Dias 3 Email autor 1. Faculdade de Economia Universidade de Coimbra Coimbra Portugal 2. Faculdade de Economia e GEMF Universidade de Coimbra Coimbra Portugal 3. Faculdade de Economia e Inesc-Coimbra Universidade de Coimbra Coimbra Portugal.
Sobre este artigo.
Recomendações personalizadas.
Cite o artigo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Acesso ilimitado ao artigo completo Download instantâneo Inclua o imposto de vendas local, se aplicável.
Cite o artigo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.
Ajustando os parâmetros de controle de um algoritmo genético: uma aplicação para design de sistemas de negociação técnica.
Este artigo estuda o problema de como as mudanças no projeto do algoritmo genético (GA) têm efeito sobre os resultados obtidos em aplicações da vida real. Neste estudo, focado na aplicação de um GA para o ajuste das regras técnicas de negociação no contexto dos mercados financeiros, nossa tese tentativa é que o GA é robusto com relação a mudanças de design. A otimização dos sistemas de negociação técnica é uma área adequada para a aplicação da metaheurística GA, já que a complexidade do problema cresce exponencialmente à medida que novas regras técnicas são adicionadas ao sistema e como o tempo de resposta é crucial ao aplicar o sistema em tempo real. dados. Até agora, a maioria dos aplicativos da GA para este assunto evitava a questão da possível "dependência de design" em seus resultados. Os dados que relatamos, com base em nossos experimentos, não nos permitem refutar a hipótese de robustez do AG para projetar a implementação, quando se aplica ao ajuste de sistemas de negociação técnica.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou sua instituição.
Negociação quantitativa.
Investimentos quantitativos e idéias comerciais, pesquisas e análises.
Sexta-feira, 16 de outubro de 2015.
Um software de algoritmo genético de código aberto (publicação de convidado)
Recentemente eu libertei o Genotick - um software de código aberto que pode criar e gerenciar um grupo de sistemas de negociação. No núcleo do Genotick encontra-se uma epifania: se é possível criar qualquer software com apenas um punhado de instruções de montagem, deve ser possível criar qualquer sistema de negociação com um punhado de instruções simples. Essas instruções simples e sem sentido tornam-se extremamente poderosas quando combinadas. As instruções corretas na ordem correta podem criar qualquer tipo de sistema mecânico: seguimento da tendência, retorno médio ou mesmo com base em dados fundamentais.
Комментариев нет:
Отправить комментарий