Saturday 7 April 2018

Sistema de negociação de algoritmos genéticos


Sistema de comércio de algoritmos genéticos
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 (indicação automática do 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 de fazer quando fazemos a aproximação da função, apenas tomamos 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! Na verdade, temos muitas estratégias de negociação forex que podemos usar em qualquer ponto do tempo, 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 esse programa.
Usando o Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversos. Se você quer aprender tudo sobre eles, sugiro que você use a Wikipedia, pois 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, se semearmos os pesos desta Rede Neural ao acaso, os resultados comerciais 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 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 diferentes abordagens para o teste. Primeiro, podemos usar o conjunto de aprendizagem, tudo de uma vez. Em segundo lugar, podemos testar, digamos, 12000 resords (de 100000), e caminhar através do conjunto de aprendizagem, 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 a mudança de dados, desde o início até o 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-se que 0,1 para mutação tange não é a única escolha, como fato de fato, mesmo este parâmetro pode ser otimizado usando o 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 perdedores, de ambas as 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 a nStart + nLearn, onde 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 comercial funcione muito bem em negócios longos, e muito pobre 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 trocas í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 fazê-lo, ou pode fazê-lo de forma diferente.
Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção, então usamos essa posição para adicionar identificador de rede Neural, aprendendo e testando lucros para arrays não classificados. 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, desde este 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 com 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á o histórico após 92 e 248 ciclos:
Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir o porquê, e como ajudar a situação.
Em primeiro lugar, cada geração não deve ser melhor do que a anterior? A resposta é não, pelo menos não dentro do modelo que usamos. Se tomarmos TODAS as aprendizagens definidas de uma vez, e usamos repetidamente para ensinar nossos NNs, então sim, eles melhorarão em cada geração. Mas, em vez disso, tomamos fragmentos aleatórios (12000 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 apresentaram um grande desempenho - no aprendizado definido. 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. Este é um mercado de metafor para rizing, pois os nossos dados NNs desempenham o papel de meio ambiente. Os animais aprenderam a viver em um deserto.
Imagine animais, que vivem em 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-lhes diferentes fragmentos de dados (aumentando aleatoriamente, caindo, plano). Os animais morreram.
Ou, de modo diferente, selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, era para o aumento do mercado. 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.
Em seguida, voltamos a mesa novamente e, novamente, conseguimos o melhor desempenho - mas melhor entre os mais pobres. Nós simplesmente não damos a nossos NNs chances 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, não conseguiu negociar com lucro. Está tudo bem, podemos tentar usar o sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais grave: 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 obter 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 as correções, que são apenas o conjunto de punições adicionais. Digamos, nosso sistema é negociado com drawdown 0.5, enquanto queremos confirmá-lo para 0 a 0.3 intervalo. 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 ser 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 o 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 tranquilizadores. 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:
Existem algumas dinâmicas positivas, tanto no conjunto de aprendizado como, 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). Desta forma, quando você parar seu treinamento, você terá o melhor desempenho ON TESTING SET salvo e esperando por você.
Observe também que não é o máximo. lucro que você está procurando, mas ótimo desempenho, então considere usar correções, ao procurar o 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 utilizados: EUR / USD e GBP / USD. Foram utilizados dados diferentes 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 os á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.
Compartilhe o artigo.
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.
Compartilhe o artigo.
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.

Design do Sistema de Negociação Baseado em Algoritmos Genéticos.
Richard Tymerski E-mail autor Ethan Ott Garrison Greenwood.
Nós investigamos o design de sistemas de negociação usando um algoritmo genético (GA). Os indicadores técnicos são usados ​​para definir regras de entrada e saída. A escolha dos indicadores e seus parâmetros associados são otimizados pelo GA que opera apenas em valores inteiros. O tempo de espera e as regras de saída do objetivo de lucro também são avaliadas. Verificou-se que uma função de fitness baseada na probabilidade vencedora, juntamente com uma meta de lucro e outra baseada na razão de Sharpe, são úteis para maximizar a porcentagem de negócios vencedores, bem como o lucro total. São desenvolvidas estratégias que são altamente competitivas para comprar e manter.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Richard Tymerski 1 Email autor Ethan Ott 1 Garrison Greenwood 1 1. Departamento de Elétrica e amp; Engenharia Informática Portland State University Portland EUA.
Sobre este artigo.
Recomendações personalizadas.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe papel.
Download instantâneo legível em todos os dispositivos Possuí-lo para sempre Imposto de venda local incluído, se aplicável.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe papel.
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.

O R Trader.
Usando R e ferramentas relacionadas em Finanças Quantitativas.
Usando Algoritmos Genéticos em Negociação Quantitativa.
A questão que sempre deve ser feita ao usar indicadores técnicos é o que seria um critério objetivo para selecionar os parâmetros dos indicadores (por exemplo, por que usar um RSI de 14 dias em vez de 15 ou 20 dias?). Os algoritmos genéticos (GA) são ferramentas adequadas para responder a essa pergunta. Nesta publicação, eu mostro como configurar o problema em R. Antes de prosseguir o lembrete habitual: O que eu apresento nesta publicação é apenas um exemplo de brinquedo e não um convite para investir. Também não é uma estratégia concluída, mas uma idéia de pesquisa que precisa ser pesquisada, desenvolvida e adaptada às necessidades individuais.
O que são algoritmos genéticos?
A melhor descrição do GA que encontrei vem da Cybernatic Trading, um livro de Murray A. Ruggiero. Algoritmos genéticos foram inventados por John Holland em meados de 1970 para resolver problemas difíceis de otimização. Este método usa a seleção natural, a sobrevivência do mais forte # 8221 ;. O processo geral segue os passos abaixo:
Codifique o problema nos cromossomos Usando a codificação, desenvolva uma função de aptidão para uso na avaliação do valor de cada cromossomo na resolução de um determinado problema. Inicialize uma população de cromossomos. Avalie cada cromossomo na população. Crie novos cromossomos acoplando dois cromossomos. Isso é feito por muting e recombinação de dois pais para formar dois filhos (os pais são selecionados aleatoriamente, mas tendenciosos por sua aptidão) Avalie o novo cromossomo Exclua um membro da população que seja menos adequado do que o novo cromossomo e insira o novo cromossomo na população . Se o critério de parada for atingido (número máximo de gerações, o critério de aptidão é bom o suficiente e # 8230;), então, retorne o melhor cromossomo, alternativamente, vá para o passo 4.
A partir de uma perspectiva comercial, a GA é muito útil porque são boas em lidar com problemas altamente não-lineares. No entanto, eles exibem algumas características desagradáveis ​​que merecem destaque:
Sobreposição: Este é o principal problema e é para o analista configurar o problema de forma a minimizar esse risco. Tempo de computação: se o problema não for definido corretamente, pode ser extremamente longo para alcançar uma solução decente e a complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros.
Existem vários pacotes R que lidam com GA, eu escolhi usar o mais comum: rgenoud.
Os preços de fechamento diários para a maioria dos ETFs líquidos de finanças do Yahoo voltam a janeiro de 2000. O período de amostragem vai de janeiro de 2000 a dezembro de 2018. O período fora da amostra começa em janeiro de 2018.
A lógica é a seguinte: a função de aptidão é otimizada durante o período de amostra para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas, antes disso, os indicadores técnicos devem ser selecionados.
O mercado de ações exibe duas características principais que são familiares para qualquer pessoa com alguma experiência comercial. Momento a longo prazo e reversão de curto prazo. Essas características podem ser traduzidas em termos de indicadores técnicos por: médias móveis cruzadas e RSI. Isso representa um conjunto de 4 parâmetros: períodos de retorno para médias móveis a longo e curto prazo, período de retorno para RSI e RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função de fitness. Podemos querer usar algo como: retorno máximo ou taxa Sharpe ou redução média mínima. No que se segue, escolhi maximizar a proporção de Sharpe.
A implementação do R é um conjunto de 3 funções:
fitnessFunction: define a função de fitness (por exemplo, taxa máxima de Sharpe) para ser usado no comércio de motores GA: estatísticas de negociação para os períodos de entrada e saída de amostra para fins de comparação genoud: o mecanismo GA do pacote rgenoud.
A função genoud é bastante complexa, mas eu não vou explicar o que cada parâmetro significa que eu quero manter esta publicação curta (e a documentação é realmente boa).
Na tabela abaixo, apresento para cada instrumento os parâmetros ótimos (período de retorno de RSI, limite de RSI, Média de Mudança de Curto Prazo e Média de Mudança de Longo Prazo), juntamente com as estatísticas de negociação dentro e fora da amostra.
Antes de comentar os resultados acima, quero explicar alguns pontos importantes. Para combinar a lógica definida acima, limitei os parâmetros para garantir que o período de look-back para a média móvel a longo prazo seja sempre mais longo que a média móvel mais curta. Eu também obriguei o otimizador a escolher apenas as soluções com mais de 50 trades no período de amostra (por exemplo, significância estatística).
Em geral, os resultados fora da amostra estão longe de serem impressionantes. Os retornos são baixos, mesmo que o número de negócios seja pequeno para tornar o resultado realmente significativo. No entanto, existe uma perda significativa de eficiência entre o período de entrada e saída do Japão (EWJ), o que muito provavelmente significa uma sobreposição.
Esta publicação destina-se a fornecer ao leitor as ferramentas para usar adequadamente o GA em uma estrutura de negociação quantitativa. Mais uma vez, é apenas um exemplo que precisa ser aperfeiçoado. Algumas possíveis melhorias a serem exploradas seriam:
Função de fitness: maximizar a relação Sharpe é muito simplista. A & # 8220; smarter & # 8221; A função certamente melhoraria o padrão de estatísticas comerciais de amostra: tentamos capturar um padrão muito direto. Uma pesquisa de padrão mais detalhada é definitivamente necessária. Otimização: há muitas maneiras de melhorar a forma como a otimização é conduzida. Isso melhoraria a velocidade de computação e a racionalidade dos resultados.
O código usado nesta publicação está disponível em um repositório Gist.
Como de costume, todos os comentários são bem-vindos.
15 Comentários.
O problema com o uso de tais abordagens: os cromossomos podem mudar as regras darwinianas de seus futuros, enquanto os bancos que bloqueiam as economias (com alguma regularidade) mudam as regras para se beneficiarem. Taleb é principalmente certo, em que as mudanças de política (por exemplo, empréstimos mentirosos) conduzem os dados, e não o contrário.
Obrigado pelo PosDoyou tem um exemplo de uma função mais esperta para tentar?
Obrigado por alcançar. A escolha da função de fitness é realmente importante para você e depende do que você tentar alcançar. Pode ser um retorno mínimo, a estabilidade do retorno, minimizar a redução, a correlação mínima com outras estratégias, etc & # 8230 ;. Não penso nelas as regras específicas a seguir. No entanto, algumas funções podem ser tendenciosas. Por exemplo, se você tentar minimizar a redução, provavelmente você acabará sem comércio (max DD = 0) se você não for restringir um número mínimo de negócios.
Espero que isto ajude.
Robert, ótimo comentário! As políticas direcionarão para sempre os dados, assim como os dados direcionarão políticas. É um mundo vice-versa na indústria financeira, e muito mais para comerciantes, investidores e banqueiros.
Como você procuraria selecionar regras comerciais e não otimizar parâmetros comerciais?
Como no artigo de Allen (Usando algoritmos genéticos para encontrar regras comerciais comerciais)
Obrigado por esticar e desculpar pela resposta tardia.
Eu apenas uso o senso comum na seleção de parâmetros e, acima de tudo, tendem a usar tanto quanto possível o mesmo conjunto de parâmetros em todos os instrumentos negociados.
Eu sou um leitor chinês e realmente aprecio o artigo "Usando Algoritmos Genéticos em Negociação Quantitativa".
Posso traduzir este artigo para o chinês e publicá-lo no meu blog? (Eu informo o link e permaneço seu nome nele.) Eu realmente espero que este artigo possa ajudar mais pessoas.
Obrigado por alcançar.
Enquanto você menciona claramente a fonte (eu) e coloque um link para o artigo original no artigo traduzido, não tenho nenhum problema com a publicação traduzida para o chinês.
Muito obrigado por publicar isso! Para o PosBuySignal, por que RSI é avaliado como sendo menor ou igual a 1 & # 8211; um número? Wouldn & # 8217; t 1 & # 8211; xx [2] sempre resulta em um número negativo? Isn & # 8217; t o RSI sempre entre 0-100?
Desculpas, o código foi interrompido.
Acabei de fornecer-me uma fonte valiosa para mim. Usei o Algoritmo escrito por você e obedeci os seguintes resultados.
NOTA: HIT DE LIMITE DE GERAÇÃO MÁXIMA DURA.
Solution Fitness Value: 5.033179e + 00.
Parâmetros na Solução:
X [1]: 3.100000e + 01.
X [2]: 6.200000e + 01.
X [3]: 3.200000e + 01.
X [4]: ​​7.600000e + 01.
Solução Encontrado Geração 38.
Número de Geração Execução 50.
Dom 24 de janeiro 12:57:50 2018.
Tempo de execução total: 0 horas 0 minutos e 25 segundos.
1: Em genoud (fitnessFunction, nvars = 4, max = TRUE, pop. size = 30,:
& # 8216; output. path & # 8217; não pode mais ser alterado. Por favor use & # 8216; sink & # 8217 ;. A opção só é fornecida para a compatibilidade com versões anteriores da API.
2: Em genoud (fitnessFunction, nvars = 4, max = TRUE, pop. size = 30,:
Parado porque o limite de geração máxima dura foi atingido.
Você poderia explicar o que podemos interpretar na solução e meu objetivo é prever o valor futuro e como isso pode ser interpretado a partir deste caso.
Obrigado por alcançar. Eu não tenho certeza se eu entendo sua pergunta, mas eu tentarei.
Sua solução ideal é:
que corresponde a um valor de função de fitness de: 5.03.
Outro ponto importante para notar é que você alcançou o número máximo de iterações. Você pode facilmente relaxar essa suposição caso deseje explorar diferentes soluções.
Além disso, eu não consigo ver qual é exatamente o seu problema? Mais detalhes sobre sua função de fitness e o que você está tentando alcançar podem ajudar.
Meu objetivo é prever o valor futuro que é como se eu entreguei até 27 de janeiro de 2018, eu deveria ter uma previsão da próxima data para o dia 28. Podemos fazer isso com a metodologia que você usou.
Por favor, coloque seu ID de email para lakshmitharunponnam @ gmail, isso seria uma grande ajuda para mim.
Sim você pode. Você só precisa ajustar a freqüência de seus dados. Meu exemplo usou dados semanais, mas você pode usar exatamente a mesma metodologia com dados diários. Obviamente, as variáveis ​​a usar provavelmente terão que ser ajustadas também.
Obrigado pela maravilhosa postagem. Fiquei tão animado para passar pelos seus códigos. Eu sou novato. Você pode me informar como posso interpretar as leituras, a saber,
para o & # 8220; SPY & # 8221; Valor predito aberto, alto, baixo e fechado.

No comments:

Post a Comment