Friday 27 October 2017

Automated Forex Trading Algoritmos Exemplos


Noções básicas de negociação algorítmica: conceitos e exemplos Um algoritmo é um conjunto específico de instruções claramente definidas destinadas a realizar uma tarefa ou processo. A negociação algorítmica (negociação automatizada, negociação em caixa preta ou simplesmente negociação de algo) é o processo de utilização de computadores programados para seguir um conjunto definido de instruções para colocar um negócio a fim de gerar lucros a uma velocidade e frequência que é impossível para um Comerciante humano. Os conjuntos de regras definidos baseiam-se em tempo, preço, quantidade ou qualquer modelo matemático. Além de oportunidades de lucro para o comerciante, algo-trading torna os mercados mais líquidos e torna a negociação mais sistemática, excluindo impactos humanos emocionais sobre as atividades de negociação. Suponha que um comerciante segue estes critérios comerciais simples: Compre 50 ações de uma ação quando sua média móvel de 50 dias ultrapassa a média móvel de 200 dias Vender ações da ação quando sua média móvel de 50 dias fica abaixo da média móvel de 200 dias Usando este conjunto de duas instruções simples, é fácil escrever um programa de computador que irá monitorar automaticamente o preço das ações (e os indicadores de média móvel) e colocar as ordens de compra e venda quando as condições definidas forem atendidas. O comerciante já não precisa de manter um relógio para preços e gráficos vivos, ou põr nas ordens manualmente. O sistema de negociação algorítmica automaticamente faz isso para ele, identificando corretamente a oportunidade de negociação. Algo-trading oferece os seguintes benefícios: Trades executados nos melhores preços possíveis Instant e exata colocação da ordem de comércio (assim altas chances de execução nos níveis desejados) Trades Temporizado corretamente e instantaneamente, para evitar mudanças significativas de preços Custos de transação reduzidos (veja o exemplo de insuficiência de implementação abaixo) Verificações automáticas simultâneas em várias condições de mercado Redução do risco de erros manuais na colocação das operações Backtest o algoritmo, com base em dados históricos e em tempo real reduzidos Reduzido A possibilidade de erros por comerciantes humanos com base em fatores emocionais e psicológicos A maior parte do atual dia algo-negociação é de alta freqüência de negociação (HFT), que tenta capitalizar sobre a colocação de um grande número de ordens em velocidades muito rápidas em vários mercados e múltiplas decisões Parâmetros, com base em instruções pré-programadas. Algo-trading é usado em muitas formas de negociação e atividades de investimento, incluindo: Investidores de médio a longo prazo ou empresas de compra de lado (fundos de pensão , Fundos mútuos, companhias de seguros) que compram em ações em grandes quantidades, mas não querem influenciar os preços das ações com investimentos discretos de grande volume. Os comerciantes de curto prazo e os participantes do lado da venda (fabricantes de mercado, especuladores e arbitradores) beneficiam-se da execução automatizada do comércio além, de algo-negociar ajudas em criar liquidez suficiente para vendedores no mercado. Os comerciantes sistemáticos (seguidores de tendências, comerciantes de pares, fundos de hedge, etc.) acham muito mais eficiente programar suas regras de negociação e deixar o programa trocar automaticamente. A negociação algorítmica proporciona uma abordagem mais sistemática ao comércio ativo do que métodos baseados em intuição ou instinto de comerciantes humanos. Estratégias Algorítmicas de Negociação Qualquer estratégia para negociação algorítmica requer uma oportunidade identificada que seja rentável em termos de ganhos melhorados ou redução de custos. As estratégias de negociação comuns usadas em algo-trading são as seguintes: As estratégias de negociação algorítmicas mais comuns seguem as tendências em médias móveis. Canal breakouts. Movimentos de nível de preços e indicadores técnicos relacionados. Estas são as estratégias mais fáceis e mais simples de implementar através de negociação algorítmica, porque essas estratégias não envolvem fazer previsões ou previsões de preços. Os negócios são iniciados com base na ocorrência de tendências desejáveis. Que são fáceis e simples de implementar através de algoritmos sem entrar na complexidade da análise preditiva. O exemplo acima mencionado de média móvel de 50 e 200 dias é uma tendência popular seguindo a estratégia. Comprar uma ação cotada dual a um preço mais baixo em um mercado e vendê-lo simultaneamente a um preço mais elevado em um outro mercado oferece o diferencial do preço como o lucro sem risco Ou arbitragem. A mesma operação pode ser replicada para ações versus instrumentos de futuros, já que existem diferenciais de preços de tempos em tempos. Implementar um algoritmo para identificar tais diferenciais de preços e colocar as ordens permite oportunidades rentáveis ​​de forma eficiente. Os fundos de índice definiram períodos de reequilíbrio para trazer as suas participações a par com os respectivos índices de referência. Isso cria oportunidades lucrativas para os comerciantes algorítmicos, que capitalizar sobre os negócios esperados que oferecem 20-80 pontos-base de lucros, dependendo do número de ações no fundo de índice, pouco antes do rebalanceamento do fundo índice. Tais negociações são iniciadas através de sistemas de negociação algorítmica para execução atempada e melhores preços. Um monte de modelos matemáticos comprovados, como a estratégia de negociação delta neutro, que permitem negociação na combinação de opções e sua segurança subjacente. Onde os negócios são colocados para compensar deltas positivos e negativos de modo que o delta da carteira seja mantido em zero. A estratégia de reversão média baseia-se na idéia de que os preços altos e baixos de um ativo são um fenômeno temporário que revertem para seu valor médio periodicamente. Identificar e definir uma faixa de preço e algoritmo de implementação com base em que permite que os comércios sejam colocados automaticamente quando o preço do ativo entrar e sair do seu intervalo definido. Volume ponderada estratégia de preço médio quebra uma grande ordem e libera dinamicamente determinados pedaços menores da ordem para o mercado usando os perfis de volume histórico específico do estoque. O objetivo é executar a ordem próxima ao Preço Médio Ponderado pelo Volume (VWAP), beneficiando assim o preço médio. A estratégia de preço médio ponderado pelo tempo rompe uma grande ordem e libera blocos menores determinados dinamicamente da ordem para o mercado usando intervalos de tempo uniformemente divididos entre uma hora de início e uma de fim. O objetivo é executar a ordem perto do preço médio entre o início eo fim, minimizando assim o impacto no mercado. Até que a ordem de negociação seja totalmente preenchida, este algoritmo continua enviando ordens parciais, de acordo com a proporção de participação definida e de acordo com o volume negociado nos mercados. A estratégia de passos relacionados envia ordens a uma percentagem definida pelo utilizador dos volumes de mercado e aumenta ou diminui esta taxa de participação quando o preço da acção atinge níveis definidos pelo utilizador. A estratégia de déficit de implementação visa minimizar o custo de execução de uma ordem, trocando o mercado em tempo real, economizando assim o custo da ordem e beneficiando do custo de oportunidade da execução atrasada. A estratégia vai aumentar a taxa de participação alvo quando o preço das ações se move favoravelmente e diminuí-lo quando o preço das ações se move adversamente. Existem algumas classes especiais de algoritmos que tentam identificar acontecimentos no outro lado. Esses algoritmos de sniffing, usados, por exemplo, por um fabricante de mercado de sell side têm a inteligência interna para identificar a existência de quaisquer algoritmos no lado de compra de uma grande ordem. Essa detecção por meio de algoritmos ajudará o criador de mercado a identificar grandes oportunidades de pedidos e permitir que ele se beneficie ao preencher os pedidos a um preço mais alto. Isso às vezes é identificado como front-running de alta tecnologia. Requisitos técnicos para negociação algorítmica Implementar o algoritmo usando um programa de computador é a última parte, bateu com backtesting. (Para mais sobre negociação de alta freqüência e práticas fraudulentas, consulte: Se você comprar ações on-line, você está envolvido em HFTs. O desafio é transformar a estratégia identificada em um processo informatizado integrado que tenha acesso a uma conta comercial para a colocação de encomendas. São necessários os seguintes: Conhecimento de programação de computadores para programar a estratégia de negociação necessária, programadores contratados ou software de negociação pré-fabricado Conectividade de rede e acesso a plataformas de negociação para colocar as ordens Acesso a feeds de dados de mercado que serão monitorados pelo algoritmo para oportunidades de colocar Ordens A capacidade ea infra-estrutura para backtest o sistema uma vez construído, antes de ir viver em mercados reais Dados históricos disponíveis para backtesting, dependendo da complexidade das regras implementadas no algoritmo Aqui está um exemplo abrangente: Royal Dutch Shell (RDS) está listado em Amsterdam Bolsa de Valores (AEX) e Bolsa de Valores de Londres (LSE). Permite construir um algoritmo para identificar oportunidades de arbitragem. Aqui estão algumas observações interessantes: AEX negocia em Euros, enquanto LSE negocia em libras esterlinas Devido à diferença de hora de uma hora, AEX abre uma hora mais cedo do que LSE, seguido por ambas as trocas que negociam simultaneamente por próximas horas e então negociando somente em LSE durante A última hora à medida que a AEX fecha Podemos explorar a possibilidade de negociação de arbitragem sobre as ações da Royal Dutch Shell listadas nesses dois mercados em duas moedas diferentes Um programa de computador que pode ler os preços atuais do mercado Alimentações de preços tanto da LSE quanto da AEX A forex rate feed for Taxa de câmbio GBP-EUR Ordem de capacidade de colocação que pode encaminhar a ordem para a troca correta Capacidade de back-testing em feeds de preços históricos O programa de computador deve executar o seguinte: Leia o feed de preços de entrada de ações RDS de ambas as câmaras Usando as taxas de câmbio disponíveis . Converter o preço de uma moeda para outra Se houver uma discrepância de preço suficientemente grande (descontando os custos de corretagem) levando a uma oportunidade lucrativa, então coloque a ordem de compra em câmbio de menor preço e venda na ordem de câmbio mais alta Se as ordens forem executadas como Desejado, o lucro de arbitragem seguirá Simples e Fácil No entanto, a prática de negociação algorítmica não é tão simples de manter e executar. Lembre-se, se você pode colocar um comércio algo-gerado, assim que os outros participantes do mercado. Conseqüentemente, os preços flutuam em milissegundos e até em microssegundos. No exemplo acima, o que acontece se o seu comércio comprar é executado, mas vender o comércio doesnt como os preços de venda mudar no momento em que sua ordem atinge o mercado Você vai acabar sentado com uma posição aberta. Tornando sua estratégia de arbitragem inútil. Há riscos e desafios adicionais: por exemplo, riscos de falha de sistema, erros de conectividade de rede, intervalos de tempo entre ordens de negociação e execução e, o mais importante de tudo, algoritmos imperfeitos. Quanto mais complexo for um algoritmo, o backtesting mais rigoroso é necessário antes de ser colocado em ação. A análise quantitativa do desempenho de um algoritmo desempenha um papel importante e deve ser examinada criticamente. Sua emocionante para ir para a automação auxiliado por computadores com uma noção de fazer dinheiro sem esforço. Mas um deve certificar-se que o sistema é testado completamente e os limites requeridos são ajustados. Os comerciantes analíticos devem considerar a aprendizagem de programação e sistemas de construção por conta própria, para ter certeza de implementar as estratégias certas de forma infalível. Uso cauteloso e testes minuciosos de algo-trading pode criar oportunidades rentáveis. Stratégies for Forex Algorithmic Trading Como resultado da recente controvérsia, o mercado cambial tem sido sob escrutínio aumentado. Quatro grandes bancos foram considerados culpados de conspirar para manipular as taxas de câmbio, o que prometeu aos comerciantes receitas substanciais com risco relativamente baixo. Em particular, os maiores bancos mundiais concordaram em manipular o preço do dólar dos EUA e do euro de 2007 a 2013. O mercado de câmbio é notavelmente desregulado apesar de lidar com 5 trilhões de dólares de transações por dia. Como resultado, os reguladores têm instado a adoção de negociação algorítmica. Um sistema que utiliza modelos matemáticos em uma plataforma eletrônica para executar negócios no mercado financeiro. Devido ao alto volume de transações diárias, negociação algorítmica forex cria maior transparência, eficiência e elimina viés humano. Uma série de diferentes estratégias podem ser perseguidos por comerciantes ou empresas no mercado forex. Por exemplo, a cobertura automática refere-se à utilização de algoritmos para cobrir o risco da carteira ou para compensar posições de forma eficiente. Além da auto-cobertura, estratégias algorítmicas incluem negociação estatística, execução algorítmica, acesso direto ao mercado e negociação de alta freqüência, tudo isso pode ser aplicado a transações de forex. Auto Hedging Ao investir, hedging é uma maneira simples de proteger seus ativos de perdas significativas, reduzindo o montante que você pode perder se ocorrer algo inesperado. Na negociação algorítmica, hedging pode ser automatizado, a fim de reduzir a exposição de um comerciante a risco. Estas ordens de cobertura geradas automaticamente seguem modelos específicos para gerir e monitorizar o nível de risco de uma carteira. Dentro do mercado forex, os principais métodos de cobertura de negócios são através de contratos à vista e opções de moeda. Os contratos à vista são a compra ou venda de uma moeda estrangeira com entrega imediata. O mercado spot fprex cresceu significativamente desde o início dos anos 2000 devido ao influxo de plataformas algorítmicas. Em particular, a rápida proliferação da informação, tal como reflectida nos preços de mercado, permite que surjam oportunidades de arbitragem. As oportunidades de arbitragem ocorrem quando os preços da moeda ficam desalinhados. Arbitragem triangular. Como é conhecido no mercado forex, é o processo de conversão de uma moeda de volta para si mesmo através de várias moedas diferentes. Os comerciantes algorítmicos e de alta freqüência só podem identificar essas oportunidades por meio de programas automatizados. Como um derivado. As opções do forex operam-se em uma maneira similar como uma opção em outros tipos de seguranças. As opções em moeda estrangeira dão ao comprador o direito de comprar ou vender o par de moedas a uma determinada taxa de câmbio em algum momento no futuro. Programas de computador têm opções binárias automatizadas como uma forma alternativa de hedge de negócios em moeda estrangeira. As opções binárias são um tipo de opção onde os retornos tomam um de dois resultados: ou o comércio se instala em zero ou a um preço de exercício pré-determinado. Análise estatística No sector financeiro, a análise estatística continua a ser uma ferramenta significativa na medição dos movimentos de preços de uma garantia ao longo do tempo. No mercado forex, indicadores técnicos são usados ​​para identificar padrões que podem ajudar a prever movimentos futuros de preços. O princípio de que a história se repete é fundamental para a análise técnica. Uma vez que os mercados de FX operam 24 horas por dia, a quantidade robusta de informações aumenta, assim, a significância estatística das previsões. Devido à crescente sofisticação dos programas de computador, os algoritmos foram gerados de acordo com indicadores técnicos, incluindo a convergência média de convergência (MACD) eo índice de força relativa (RSI). Os programas algorítmicos sugerem momentos específicos em que as moedas devem ser compradas ou vendidas. Execução Algorítmica A negociação algorítmica requer uma estratégia executável que os gestores de fundos possam usar para comprar ou vender grandes quantidades de ativos. Os sistemas de negociação seguem um conjunto pré-especificado de regras e são programados para executar uma ordem sob certos preços, riscos e horizontes de investimento. No mercado forex, o acesso direto ao mercado permite que os traders buy-side executem ordens de forex diretamente para o mercado. O acesso direto ao mercado ocorre através de plataformas eletrônicas, o que muitas vezes reduz custos e erros de negociação. Normalmente, a negociação no mercado é restrita a corretores e criadores de mercado, no entanto, o acesso direto ao mercado fornece às empresas compradoras o acesso à infra-estrutura de venda, conferindo aos clientes maior controle sobre os negócios. Devido à natureza da negociação algorítmica e os mercados de FX, a execução da ordem é extremamente rápida, permitindo que os comerciantes aproveitem as oportunidades comerciais de curta duração. Negociação de alta freqüência Como o subconjunto mais comum de negociação algorítmica, negociação de alta freqüência tornou-se cada vez mais popular no mercado forex. Baseado em algoritmos complexos, a negociação de alta freqüência é a execução de um grande número de transações em velocidades muito rápidas. Como o mercado financeiro continua a evoluir, velocidades de execução mais rápidas permitem que os comerciantes para tirar proveito de oportunidades rentáveis ​​no mercado cambial, um número de estratégias de negociação de alta freqüência são projetados para reconhecer rentável arbitragem e situações de liquidez. Fornecido ordens são executadas rapidamente, os comerciantes podem alavancar arbitragem para bloquear em lucros sem risco. Devido à velocidade de negociação de alta freqüência, arbitragem também pode ser feito através de preços spot e futuros dos mesmos pares de moedas. Os defensores da alta freqüência de negociação no mercado de câmbio destacar o seu papel na criação de alto grau de liquidez e transparência em comércios e preços. A liquidez tende a ser contínua e concentrada, uma vez que existe um número limitado de produtos em comparação com as acções. No mercado forex, as estratégias de liquidez visam detectar desequilíbrios de ordem e diferenças de preços entre um determinado par de moedas. Um desequilíbrio de ordem ocorre quando há um número excessivo de ordens de compra ou venda de um ativo ou moeda específica. Neste caso, os comerciantes de alta freqüência agem como provedores de liquidez, ganhando o spread por arbitraging a diferença entre o preço de compra e venda. A linha de fundo Muitos estão pedindo maior regulamentação e transparência no mercado cambial à luz dos recentes escândalos. A crescente adoção de sistemas de negociação algorítmica forex pode efetivamente aumentar a transparência no mercado forex. Além da transparência, é importante que o mercado cambial permaneça líquido com baixa volatilidade de preços. As estratégias de negociação algorítmicas, tais como cobertura automática, análise estatística, execução algorítmica, acesso direto ao mercado e negociação de alta freqüência, podem expor inconsistências de preços, que representam oportunidades lucrativas para os comerciantes. Neodyne Algoritmo Genético em FOREX Trading Systems Usando Genetic Algorithm para criar rentável FOREX Trading Estratégia. Algoritmo Genético em Cortex Redes Neurais Software Feedforward Backpropagation Neural Network Aplicação para computações genéticas baseado Forex trading. Este exemplo usa conceitos e idéias do artigo anterior, por isso leia Neural Network Genetic Algorithm em FOREX Trading Systems em primeiro lugar, embora não seja obrigatório. Sobre este texto Em primeiro lugar, leia o aviso de isenção de responsabilidade. Este é um exemplo de usar a funcionalidade de algoritmo genético de Software de Redes Neurais de Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu deveria ser responsável por suas perdas. Cortex Neural Networks Software tem redes neurais nele, e FFBP discutimos antes é apenas uma maneira de escolher uma estratégia de negociação forex. É uma boa técnica, poderosa e quando aplicado corretamente, muito promicing. No entanto, ele tem um problema - para ensinar a Rede Neural. Precisamos saber a saída desejada. É bastante fácil de fazer quando fazemos aproximação de função, apenas tomamos o valor real de uma função, porque sabemos o que deve ser. Quando fazemos previsão de redes neurais. Nós usamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural sobre a história, novamente, se nós prevemos, digamos, uma taxa de câmbio, sabemos (durante o treinamento) qual é a previsão correta. No entanto, quando estamos construindo um sistema de negociação, não temos idéia do que a decisão de negociação correta é, mesmo se nós conhecemos a taxa de câmbio Como a matéria de fato, temos muitas estratégias de negociação forex que podemos usar em qualquer ponto do tempo, e Precisamos encontrar um bom - como O que devemos alimentar como a saída desejada de nossa rede Neural Se você seguiu o nosso artigo anterior, você sabe, que temos traído para lidar com esse problema. Nós ensinamos a Rede Neural para fazer previsão de taxa de câmbio (ou taxa de câmbio baseado) e, em seguida, usou essa previsão para fazer negociação. Então, fora da parte de Rede Neural do programa, nós tomamos uma decisão sobre qual Rede Neural é a melhor. Algoritmos genéticos podem lidar com este problema diretamente, eles podem resolver o problema declarado como encontrar os melhores sinais comerciais. Neste artigo vamos usar o Cortex Neural Networks Software para criar tal programa. Usando Algoritmo Genético Algoritmos Genéticos são muito bem desenvolvidos, e muito diversificada. Se você quiser aprender tudo sobre eles, sugiro que você use a Wikipedia, como este artigo é apenas sobre o que Cortex Neural Networks Software pode fazer. Tendo Cortex Neural Networks Software. Nós podemos criar uma rede neural que toma alguma entrada, digamos, os valores de um indicador, e produz alguma saída, digamos, sinais de negociação (comprar, vender, segurar.) E parar a perda ter níveis de lucro para posições a serem abertas. Claro, se nós semente desta Rede Neural s pesos ao acaso, os resultados comerciais serão terríveis. No entanto, vamos dizer 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 de NNs. Para continuar na segunda geração, precisamos permitir que nosso vencedor procreate, mas para evitar a obtenção de cópias idênticas, vamos adicionar algum ruído aleatório para seus pesos descententes. Na segunda geração, temos nosso vencedor de primeira geração e suas cópias imperfeitas (mutadas). Vamos fazer o teste novamente. Teremos outro vencedor, que é melhor do que qualquer outra rede neural na geração. E assim por diante. Simplesmente permitimos que os vencedores se reproduzam e eliminem os perdedores, assim como na evolução da vida real, e obteremos nossa Rede Neural de melhor negociação. Sem qualquer conhecimento prévio sobre o que o sistema de negociação (algoritmo genético) deve ser semelhante. Rede Neural Algoritmo Genético: Exemplo 0 Este é o primeiro exemplo de algoritmo genético. E um muito simples. Vamos caminhar por ela passo a passo, para aprender todos os truques que os exemplos a seguir usarão. O código tem comentários inline, por isso permite apenas concentrar-se em momentos-chave. Primeiro, criamos uma rede neural. Ele está usando pesos aleatórios, e ainda não foi ensinado. Então, no ciclo, fazemos 14 cópias dele, usando MUTATIONNN fumtion. Esta função faz uma cópia de uma Rede Neural de origem. Adicionando valores aleatórios de 0 a (em nosso caso) 0,1 para todos os pesos. Nós mantemos alças para resultar em 15 NNs em uma matriz, podemos fazê-lo, como identificador é apenas um número inteiro. A razão pela qual usamos 15 NNs não tem nada a ver com negociação: Cortex Neural Networks Software pode plotar até 15 linhas em um gráfico simultaneamente. Podemos usar diferentes abordagens para o teste. Primeiro, podemos usar o conjunto de aprendizado, tudo de uma só vez. Em segundo lugar, podemos testar, digamos, 12000 restrições (de 100000), e percorrer o conjunto de aprendizado, do começo ao fim. Isso tornará os aprendizes diferentes, pois iremos procurar redes neurais que sejam lucrativas em qualquer dado dado, não apenas no conjunto. A segunda abordagem pode nos dar problemas, se os dados mudam, do começo ao fim. Em seguida, a rede vai evoluir, obtendo a capacidade de comércio no final do conjunto de dados, e perder a capacidade de comércio no seu início. Para resolver esse problema, vamos pegar aleatórios 12000 registros fragmentos de dados, e alimentá-lo para a Rede Neural. É simplesmente um ciclo infinito, já que 100000 ciclos nunca serão alcançados à nossa velocidade. 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, como a matéria de fato, 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 velhos e 15 novos. Então vamos fazer o próximo ciclo de testes, e matar perdedores, de ambas as gerações. Para fazer o teste, aplicamos a Rede Neural aos nossos dados, para produzir saídas e, em seguida, chamamos a função Teste, que usa essas saídas para simular a negociação. Resultados de negociação são usados ​​para deside, que NNs são melhores. Usamos um intervalo de registros nLearn, de nStart para nStart nLearn, onde nStart é um ponto aleatório dentro do conjunto de aprendizado. O código abaixo é um truque. A razão pela qual o usamos é para ilustrar o fato de que o algoritmo genético pode criar algoritmos genéticos. Mas não necessariamente será o melhor, e também, sugerir, que podemos melhorar o resultado, se implicarmos algumas limitações para o processo de aprendizagem. É possível, que o nosso sistema de comércio funciona muito bem em longos comércios, e muito pobre em curto, ou vice-versa. Se, digamos, longos comércios são MUITO bons, este algoritmo genético pode ganhar, mesmo com grandes perdas em negócios curtos. Para evitá-lo, atribuímos mais peso aos negócios longos em negócios curtos e curtos em ciclos pares. Este é apenas um exemplo, não há garantia, que ele vai melhorar algo. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não tem que fazê-lo, ou pode torná-lo de forma diferente. Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção e, em seguida, usamos essa posição para adicionar identificador de rede neural, aprendendo e testando lucros para matrizes não ordenadas. Agora temos dados para a Rede Neural atual no mesmo índice de array que seu lucro. A idéia é chegar a matriz de NNs, classificados por rentabilidade. Como matriz é classifica por lucro, para remover 12 de redes, que são menos rentáveis, só precisamos remover NNs 0 a 14 As decisões de negociação são baseadas no valor de sinal de rede neural, a partir deste ponto de vista o programa é idêntico a exemplos de Artigo anterior. Estratégia de negociação FOREX: Discutir o exemplo 0 Primeiro de tudo, vamos dar uma olhada em gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom em tudo, como seria de esperar, a Rede Neural perde dinheiro (imagem evolution00gen0.png copiada após a primeira iteração da pasta de imagens): A imagem para lucro no ciclo 15 é melhor, às vezes , Algoritmo genético pode aprender muito rápido: No entanto, observe a saturação em uma curva de lucro. É interessante também observar a forma como os lucros individuais mudam, tendo em mente que o número da curva, digamos, 3 nem sempre é para a mesma Rede Neural. Como eles estão a nascer e terminou o tempo todo: Note também que o pequeno sistema de comércio automatizado forex é pobre em negócios curtos e muito melhor em longas, o que pode ou não estar relacionado com o fato de que o dólar estava caindo em comparação com Euros durante esse período. Também pode ter algo a ver com parâmetros do nosso indicador (talvez, precisamos período diferente para shorts) ou a escolha de indicadores. Aqui está a história após 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, não é cada geração suposto ser melhor do que o previuos A resposta é não, pelo menos não dentro do modelo que usamos. Se tomarmos ENTIRE aprendizagem conjunto de uma vez, e usado repetidamente para ensinar NNs, então sim, eles vão melhorar em cada geração. Mas em vez disso, pegamos fragmentos aleatórios (12000 registros no tempo), e os usamos. Duas perguntas: por que o sistema falhou em fragmentos aleatórios do conjunto de aprendizagem, e por que havent usamos todo o conjunto de aprendizagem bem. Para responder à segunda pergunta, eu fiz. NNs realizado muito - no conjunto de aprendizagem. E falharam no teste ajustado, pela mesma razão falha quando nós usamos o aprendizado de FFPB. Dito de outra forma, nossos NNs ficaram sobre-especializados, aprenderam a sobreviver no ambiente que estão acostumados, mas não fora dela. Isso acontece muito na natureza. A abordagem que nós tomamos em vez disso destinava-se a compensar isso, forçando NNs para executar bom em qualquer fragmento aleatório do conjunto de dados, de modo que, esperamos, eles também poderiam executar em um conjunto de testes desconhecidos. Em vez disso, eles falharam nos testes e no conjunto de aprendizado. Imagine animais, vivendo em um deserto. Muito sol, sem neve. Este é um metafor para rizing mercado, como para NNs nossos dados desempenham o papel do ambiente. Os animais aprenderam a viver num deserto. Imagine animais, que vivem em um clima frio. Neve e sem sol. Bem, eles se ajustaram. No entanto, em nosso experimento, colocamos aleatoriamente nossas NNs em um deserto, na neve, na água, nas árvores. Apresentando-os com diferentes fragmentos de dados (aleatoriamente aumentando, caindo, flat.). Animais morreram. Ou, para colocá-lo de forma diferente, nós selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, foi para o mercado em alta. Em seguida, apresentamos, para os vencedores e seus filhos, uma queda nos dados dos mercados. NNs executado mal, que levou melhor de artistas pobres, talvez, uma das crianças mutantes, que perdeu a capacidade de comércio no mercado em ascensão, mas tem alguma capacidade de lidar com a queda de um. Então nós giramos a tabela outra vez, e outra vez, nós começamos o mais melhor performer - mas melhor entre executores pobres. Nós simplesmente não damos NNs nossas chances de se tornar universal. Existem técnicas que permitem que o algoritmo genético aprenda novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, assim a evolução é capaz de lidar com as mudanças repetidas). Podemos discutir essas técnicas mais tarde, embora este artigo é mais sobre o uso de Cortex Neural Networks Software. Do que sobre a construção de um sistema de comércio automatizado forex bem sucedido. Algoritmo Genético de Rede Neural: Exemplo 1 Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante a etapa anterior tem duas falhas importantes. Primeiro, ele não negociou com lucro. É ok, podemos tentar usar o sistema parcialmente treinado (foi rentável no início). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, ele pode aprender a ser rentável, mas com grandes abaixamentos. É 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. Isso é quando usamos as correções, que não são nada, mas o conjunto de punições adicionais. Dizer, nosso sistema negocia com drawdown 0.5, enquanto nós queremos confirmá-lo para 0 - 0.3 intervalo. Para dizer ao sistema que cometeu um erro, diminuímos seu lucro (um usado para determinar qual algoritmo genético venceu) ao grau, que é proporcional ao tamanho de DD. Então, o algoritmo de evolução cuida do resto. Há poucos fatores mais, que queremos levar em consideração: podemos querer ter mais ou menos igual número de operações de compra e venda, queremos ter mais de operações lucrativas, depois de falhas, podemos querer que o gráfico de lucro Ser linear e assim por diante. Em evolution01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos um grande número para um valor de correção inicial. Multiplicamo-lo a um pequeno (geralmente, entre 0 e 1) valores, dependendo da punição que queremos aplicar. Então nós multiplicamos nosso lucro a 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 vencedora. Estratégia de negociação FOREX: Discutir o exemplo 1 O exemplo 1 funciona muito melhor do que o exemplo 0. Durante os primeiros 100 ciclos, 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 condições iniciais contraditórias: Há alguma dinâmica positiva tanto no conjunto de aprendizagem e, mais importante, no conjunto de testes. Quanto ao aprendizado, no ciclo 278 podemos ver que o nosso sistema se sobreenturou. Isso significa que ainda temos progresso no conjunto de aprendizado: Mas o conjunto de testes mostra fraqueza: este é um problema comum com NNs: quando ensinamos no aprendizado, ele aprende a lidar com ele, e às vezes, ele aprende muito bem - para o Grau, quando ele perde desempenho no conjunto de testes. Para lidar com esse problema, uma solução tradicional é usada: nós continuamos procurando a Rede Neural. Que executa melhor no conjunto de testes e salvá-lo, sobrescrevendo o anterior melhor, cada vez que o novo pico é atingido. Esta é a mesma abordagem, nós 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 chamando SAVENN, ou exportando pesos de rede neural para um Arquivo). Desta forma, quando você parar o seu treinamento, você terá o melhor desempenho ON TESTING SET salvo e esperando por você. Note também, que não é o max. Lucro que você está procurando, mas o desempenho ideal, então considere usar correções, ao procurar um melhor desempenho em um conjunto de testes. Algoritmo Genético para FOREX Análise Técnica: Onde agora Depois que você tem o vencedor Rede Neural. Você pode seguir os passos, descritos no artigo anterior, para exportar pesos dessa 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 de usar conjuntos de aprendizagem e teste, e mover a aprendizagem sequencial. Download Cortex Order Cortex Ver lista de preços A visibilidade é muito importante para este site. Se você gosta, por favor, ligue a este URL

No comments:

Post a Comment