Friday 21 July 2017

Building Trading Systems The Automatic Way


Trading Article Library Construindo Sistemas de Negociação Usando a Geração Automática de Código por Michael R. Bryant À medida que mais e mais comerciantes se mudaram para negociação automatizada, o interesse em estratégias de negociação sistemática aumentou. Enquanto alguns comerciantes desenvolvem suas próprias estratégias de negociação, a curva de aprendizado íngreme necessária para desenvolver e implementar um sistema de negociação é um impedimento para muitos comerciantes. Uma solução recentemente desenvolvida para esse problema é o uso de algoritmos de computador para gerar automaticamente o código do sistema comercial. O objetivo desta abordagem é automatizar muitas das etapas do processo tradicional de desenvolvimento de sistemas de negociação. O software de geração automática de código para sistemas de negociação de construção geralmente é baseado na programação genética (GP), que pertence a uma classe de técnicas chamadas algoritmos evolutivos. Algoritmos evolutivos e GP em particular foram desenvolvidos por pesquisadores em inteligência artificial baseados nos conceitos biológicos de reprodução e evolução. Um algoritmo de GP evolui uma população de estratégias de negociação de uma população inicial de membros gerados aleatoriamente. Os membros da população competem uns contra os outros com base na sua aptidão física. Os membros do ajuste são selecionados como pais para produzir um novo membro da população, que substitui um membro mais fraco (menos adequado). Dois pais são combinados usando uma técnica chamada crossover, que imita o cruzamento genético na reprodução biológica. Em crossover, parte de um genoma de pais é combinado com parte do genoma dos outros pais para produzir o genoma da criança. Para a geração do sistema de negociação, os genomas podem representar diferentes elementos da estratégia de negociação, incluindo vários indicadores técnicos, como médias móveis, estocásticos e assim por diante diferentes tipos de pedidos de entrada e saída e condições lógicas para entrar e sair do mercado. Outros membros da população são produzidos por mutação, e qual membro da população é selecionado para ser modificado alterando aleatoriamente partes de seu genoma. Normalmente, uma maioria (por exemplo, 90) de novos membros da população são produzidos através de cruzamento, com os membros restantes produzidos por meio de mutação. Sobre sucessivas gerações de reprodução, a aptidão geral da população tende a aumentar. A aptidão é baseada em um conjunto de objetivos de construção que classificam ou pontuação de cada estratégia. Exemplos de objetivos de construção incluem várias medidas de desempenho, como o lucro líquido, redução, porcentagem de vencedores, fator de lucro e assim por diante. Estes podem ser declarados como requisitos mínimos, como um fator de lucro de pelo menos 2.0 ou como objetivos para maximizar, como maximizar o lucro líquido. Se houver múltiplos objetivos de compilação, uma média ponderada pode ser usada para formar a métrica de fitness. O processo é interrompido após algum número de gerações ou quando a aptidão pára de aumentar. A solução é geralmente tomada como o membro mais apto da população resultante, ou toda a população pode ser classificada por meio de aptidão e guardada para posterior revisão. Como a programação genética é um tipo de otimização, o excesso de ajuste é uma preocupação. Isso geralmente é abordado usando testes fora da amostra, nos quais os dados não utilizados para avaliar as estratégias durante a fase de compilação são usados ​​para testá-los posteriormente. Essencialmente, cada estratégia candidata construída durante o processo de construção é uma hipótese que é apoiada ou refutada pela avaliação e ainda é apoiada ou refutada pelos resultados fora da amostra. Existem vários benefícios para construir sistemas de negociação através da geração automática de código. O processo de GP permite a síntese de estratégias com apenas um conjunto de metas de desempenho de alto nível. O algoritmo faz o resto. Isso reduz a necessidade de conhecimento detalhado de indicadores técnicos e princípios de projeto de estratégia. Além disso, o processo de GP é imparcial. Considerando que a maioria dos comerciantes desenvolveu vieses para ou contra indicadores específicos e a lógica de negociação, o GP é guiado apenas pelo que funciona. Além disso, ao incorporar uma semântica de regras de negociação adequada, o processo de GP pode ser projetado para produzir regras de negociação logicamente corretas e código sem erros. Em muitos casos, o processo GP produz resultados que não são únicos, mas não óbvios. Essas gemas escondidas seriam quase impossíveis de encontrar de outra maneira. Por fim, ao automatizar o processo de compilação, o tempo necessário para desenvolver uma estratégia viável pode ser reduzido de semanas ou meses a uma questão de minutos em alguns casos, dependendo do tamanho do arquivo de dados de preço de entrada e outras configurações de compilação. Se você gostaria de ser informado de novos desenvolvimentos, novidades e ofertas especiais do Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado. Prós e contras de sistemas de negociação automatizados Os comerciantes e os investidores podem ativar a entrada precisa. Saída e regras de gerenciamento de dinheiro em sistemas de negociação automatizados que permitem aos computadores executar e monitorar os negócios. Uma das maiores atrações da automação da estratégia é que pode tirar parte da emoção fora da negociação, uma vez que os negócios são automaticamente colocados assim que determinados critérios forem atendidos. Este artigo irá introduzir leitores e explicar algumas das vantagens e desvantagens, bem como as realidades, dos sistemas de negociação automatizados. (Para leitura relacionada, veja The Power Of Program Trades.) O que é um sistema de negociação automatizado Sistemas de negociação automatizados, também denominados sistemas de negociação mecânica, negociação algorítmica. Negociação automatizada ou negociação de sistema, permitem que os comerciantes estabeleçam regras específicas para ambas as entradas de comércio e as saídas que, uma vez programadas, podem ser executadas automaticamente através de um computador. As regras de entrada e saída de comércio podem ser baseadas em condições simples, como um crossover médio móvel. Ou podem ser estratégias complicadas que requerem uma compreensão abrangente da linguagem de programação específica para a plataforma de negociação de usuários, ou a experiência de um programador qualificado. Os sistemas de negociação automatizados geralmente exigem o uso de software que esteja vinculado a um corretor de acesso direto. E quaisquer regras específicas devem estar escritas na linguagem proprietária das plataformas. A plataforma TradeStation, por exemplo, usa a linguagem de programação EasyLanguage, a plataforma NinjaTrader, por outro lado, utiliza a linguagem de programação NinjaScript. A Figura 1 mostra um exemplo de uma estratégia automatizada que desencadeou três negociações durante uma sessão de negociação. (Para leitura relacionada, veja Comércio Global e Mercado Monetário.) Figura 1: Um gráfico de cinco minutos do contrato ES com uma estratégia automatizada aplicada. Algumas plataformas de negociação possuem assistentes de construção de estratégia que permitem aos usuários fazer seleções a partir de uma lista de indicadores técnicos comumente disponíveis para construir um conjunto de regras que podem ser negociadas automaticamente. O usuário poderia estabelecer, por exemplo, que um longo comércio será inserido uma vez que a média móvel de 50 dias cruza acima da média móvel de 200 dias em um gráfico de cinco minutos de um instrumento comercial específico. Os usuários também podem inserir o tipo de ordem (mercado ou limite, por exemplo) e quando o comércio será acionado (por exemplo, no final da barra ou aberto da próxima barra), ou use as entradas padrão das plataformas. Muitos comerciantes, no entanto, optam por programar seus próprios indicadores e estratégias customizados ou trabalham em estreita colaboração com um programador para desenvolver o sistema. Embora isso geralmente requer mais esforço do que usar o assistente de plataformas, ele permite um grau de flexibilidade muito maior e os resultados podem ser mais gratificantes. (Infelizmente, não existe uma estratégia de investimento perfeita que garanta o sucesso. Para mais informações, consulte Como usar os Indicadores Técnicos para Desenvolver Estratégias de Negociação.) Uma vez que as regras foram estabelecidas, o computador pode monitorar os mercados para encontrar oportunidades de compra ou venda com base na negociação Especificações de estratégia. Dependendo das regras específicas, assim que uma negociação é inserida, qualquer pedido de perdas de proteção de paradas. Paradas de trânsito e metas de lucro serão geradas automaticamente. Em mercados em movimento rápido, esta entrada de ordem instantânea pode significar a diferença entre uma pequena perda e uma perda catastrófica no caso de o comércio se mover contra o comerciante. Vantagens de sistemas de negociação automatizados Há uma longa lista de vantagens em ter um computador monitorando os mercados para oportunidades comerciais e executar os negócios, incluindo: Minimizar Emoções. Os sistemas de negociação automatizados minimizam as emoções ao longo do processo de negociação. Ao manter as emoções sob controle, os comerciantes normalmente têm um tempo mais fácil de aderir ao plano. Uma vez que as ordens comerciais são executadas automaticamente uma vez que as regras comerciais foram cumpridas, os comerciantes não poderão hesitar ou questionar o comércio. Além de ajudar os comerciantes que tem medo de puxar o gatilho, o comércio automatizado pode conter aqueles que estão aptos a sobrecarregar a compra e venda em todas as oportunidades percebidas. Capacidade de Backtest. Backtesting aplica as regras de negociação aos dados históricos do mercado para determinar a viabilidade da idéia. Ao projetar um sistema de negociação automatizada, todas as regras precisam ser absolutas, sem espaço para interpretação (o computador não consegue adivinhar exatamente o que fazer). Os comerciantes podem tomar esses conjuntos precisos de regras e testá-los em dados históricos antes de arriscar dinheiro em negociação ao vivo. O backtesting cuidadoso permite que os comerciantes avaliem e aperfeiçoem uma idéia de negociação e determinem a expectativa de sistemas do valor médio que um comerciante pode esperar para ganhar (ou perder) por unidade de risco. (Oferecemos algumas dicas sobre este processo que podem ajudar a refindar suas estratégias de negociação atuais. Para mais informações, consulte Backtesting: Interpreting the Past.) Preserve Discipline. Como as regras comerciais são estabelecidas e a execução comercial é executada automaticamente, a disciplina é preservada mesmo em mercados voláteis. A disciplina é muitas vezes perdida devido a fatores emocionais, como o medo de sofrer uma perda, ou o desejo de obter um pouco mais de lucro de um comércio. O comércio automatizado ajuda a garantir que a disciplina seja mantida porque o plano de negociação será seguido exatamente. Além disso, o erro piloto é minimizado e uma ordem para comprar 100 ações não será inserida incorretamente como uma ordem para vender 1.000 ações. Alcançar Consistência. Um dos maiores desafios na negociação é planejar o comércio e negociar o plano. Mesmo que um plano de negociação tenha o potencial de ser rentável, os comerciantes que ignoram as regras estão alterando qualquer expectativa que o sistema teria tido. Não há como um plano de negociação que ganhe 100 das perdas de tempo são parte do jogo. Mas as perdas podem ser psicologicamente traumatizantes, então um comerciante que tem duas ou três negociações perdidas em uma fila pode decidir ignorar o próximo comércio. Se esse próximo comércio fosse um vencedor, o comerciante já havia destruído qualquer expectativa do sistema. Os sistemas de negociação automatizados permitem que os comerciantes obtenham consistência ao negociar o plano. (É impossível evitar o desastre sem regras de negociação. Para mais informações, veja 10 Passos para Construir um Plano de Negociação de Vencimento). Velocidade de Entrada de Pedido Melhorada. Uma vez que os computadores respondem imediatamente às mudanças nas condições do mercado, os sistemas automatizados são capazes de gerar ordens assim que os critérios comerciais forem atendidos. Entrar ou sair de um comércio alguns segundos antes pode fazer uma grande diferença no resultado dos negócios. Assim que uma posição é inserida, todos os outros pedidos são gerados automaticamente, incluindo perdas protetoras de parada e metas de lucro. Os mercados podem se mover rapidamente, e é desmoralizante ter um comércio atingindo o objetivo de lucro ou superar um nível de parada de perdas antes que os pedidos possam ser inseridos. Um sistema de negociação automatizado evita que isso aconteça. Diversificar a negociação. Os sistemas de negociação automatizados permitem ao usuário trocar várias contas ou várias estratégias ao mesmo tempo. Isso tem o potencial de espalhar o risco em vários instrumentos ao criar um hedge contra posições perdidas. O que seria incrivelmente desafiador para um humano realizar é eficientemente executado por um computador em questão de milissegundos. O computador é capaz de procurar oportunidades de negociação em uma variedade de mercados, gerar ordens e monitorar negócios. Desvantagens e Realidades dos Sistemas Automatizados de Negociação Os sistemas de negociação automatizados possuem muitas vantagens, mas há algumas quedas e realidades a que os comerciantes devem estar cientes. Falhas mecânicas. A teoria por trás do comércio automatizado faz com que pareça simples: configurar o software, programar as regras e assisti-lo comercializar. Na realidade, no entanto, a negociação automatizada é um método sofisticado de negociação, mas não infalível. Dependendo da plataforma de negociação, uma ordem comercial pode residir em um computador e não em um servidor. O que isso significa é que, se uma conexão com a Internet for perdida, um pedido pode não ser enviado ao mercado. Poderia haver também uma discrepância entre os negócios teóricos gerados pela estratégia e o componente da plataforma de entrada de pedidos que os transforma em trades reais. A maioria dos comerciantes deve esperar uma curva de aprendizado ao usar sistemas de negociação automatizados, e geralmente é uma boa idéia começar com pequenos tamanhos comerciais enquanto o processo é refinado. Monitoramento. Embora seja ótimo ligar o computador e sair para o dia, os sistemas de negociação automatizados exigem monitoramento. Isso é devido ao potencial de falhas mecânicas, como problemas de conectividade, perdas de energia ou falhas no computador, e às peculiaridades do sistema. É possível que um sistema de negociação automatizado experimente anomalias que possam resultar em ordens erradas, ordens faltantes ou pedidos duplicados. Se o sistema for monitorado, esses eventos podem ser identificados e resolvidos rapidamente. Sobre otimização. Embora não sejam específicos dos sistemas de negociação automatizados, os comerciantes que empregam técnicas de backtest podem criar sistemas que parecem ótimos no papel e que realizam terrivelmente em um mercado ao vivo. O excesso de otimização refere-se a ajuste de curva excessivo que produz um plano de negociação que não é confiável na negociação ao vivo. É possível, por exemplo, ajustar uma estratégia para alcançar resultados excepcionais nos dados históricos sobre os quais foi testado. Os comerciantes às vezes incorretamente assumem que um plano de negociação deve ter cerca de 100 negócios lucrativos ou nunca deve ter uma redução para ser um plano viável. Como tal, os parâmetros podem ser ajustados para criar um plano quase perfeito que falha completamente assim que é aplicado a um mercado ao vivo. (Esta sobre otimização cria sistemas que ficam bons apenas em papel. Para mais informações, consulte Testes de retorno e avanço: a importância da correlação.) Os comerciantes de automação baseados no servidor têm a opção de executar seus sistemas de negociação automatizados através de uma negociação baseada no servidor Plataforma como Strategy Runner. Essas plataformas freqüentemente oferecem estratégias comerciais para venda, um assistente para que os comerciantes possam projetar seus próprios sistemas ou a capacidade de hospedar sistemas existentes na plataforma baseada no servidor. Por uma taxa, o sistema de negociação automatizado pode pesquisar, executar e monitorar negócios com todas as ordens que residem em seu servidor, resultando em entradas de pedidos potencialmente mais rápidas e confiáveis. Conclusão Embora seja um ppealing para uma variedade de fatores, os sistemas de negociação automatizada não devem ser considerados um substituto para o comércio cuidadosamente executado. Falhas mecânicas podem acontecer e, como tal, esses sistemas requerem monitoramento. As plataformas baseadas em servidor podem fornecer uma solução para comerciantes que desejam minimizar os riscos de falhas mecânicas. (Para leitura relacionada, veja Estratégias de negociação diária para iniciantes.) Sistemas de negociação: Construindo um sistema 13 Até agora, discutimos os componentes básicos dos sistemas de negociação, os critérios que eles devem atender e algumas das muitas decisões empíricas que um sistema O designer deve fazer. Nesta seção, examinaremos o processo de construção de um sistema de negociação, as considerações que precisam ser feitas e alguns pontos-chave a serem lembrados. A construção do sistema em seis etapas 1. Configuração - Para começar a construir um sistema de negociação, você precisará de várias coisas: Dados - Como o designer do sistema deve usar testes extensivos. O histórico de preços passados ​​é essencial para a construção de um sistema comercial. Esses dados podem ser integrados no software de desenvolvimento do sistema de negociação ou como um feed de dados separado. Os dados ao vivo geralmente são fornecidos por uma taxa mensal, enquanto os dados de idade podem ser obtidos gratuitamente. Software - Embora seja possível desenvolver um sistema comercial sem software, é altamente impraticável. Desde o final dos anos 90, o software tornou-se parte integrante da construção de sistemas de negociação. Alguns recursos comuns permitem que o comerciante faça o seguinte: Coloque automaticamente trades - Isso geralmente requer permissão do final do corretor porque uma conexão constante deve estar instalada entre o software e a corretora. As negociações devem ser executadas imediatamente e a preços exatos para garantir a conformidade. Para que seu software faça negócios para você, tudo o que você precisa fazer é inserir o número da conta e a senha, e tudo o mais é feito automaticamente. Por favor, note que usar este recurso é estritamente opcional. Código de um sistema de negociação - Este recurso de software implementa uma linguagem de programação proprietária que permite que você crie regras com facilidade. Por exemplo, o MetaTrader usa o MQL (MetaQuotes Language). Este é um exemplo de seu código para vender se a margem livre for inferior a 5.000: se for FreeMargin lt 5000, então saia Frequentemente, basta ler o manual e a experimentação deve permitir-lhe retomar os conceitos básicos do idioma que o seu software usa. Backtest sua estratégia - O desenvolvimento do sistema sem backtesting é como jogar tênis sem raquete. O software de desenvolvimento de sistemas geralmente contém um aplicativo de backtesting simples que permite definir uma fonte de dados, informações de conta de entrada e backtest por qualquer período de tempo com o clique de um mouse. Aqui está um exemplo do MetaTrader: Depois que o teste de retorno é executado, é gerado um relatório que descreve as especificidades dos resultados. Este relatório geralmente inclui lucro, número de negociações mal sucedidas, dias consecutivos baixos, número de negociações e muitas outras coisas que podem ser úteis ao tentar determinar como solucionar problemas ou melhorar o sistema. Finalmente, o software geralmente cria um gráfico que mostra o crescimento do investimento ao longo do período de tempo testado. 2. Design - O design é o conceito por trás do seu sistema, a maneira como os parâmetros são usados ​​para gerar lucros ou prejuízos. Você implementa essas regras e parâmetros, programando-os. Às vezes, esta programação pode ser feita automaticamente através de uma interface de usuário gráfica. Isso permite que você crie regras sem aprender uma linguagem de programação. Aqui é um exemplo de um sistema de cross-over médio móvel: Se o SMA (20) CrossOver EMA (13), então, insira Se SMA (20) CrossUnder EMA (13), saia Regras como essas que são colocadas no código permitem que o software automaticamente Gerar entrada e saídas nos pontos quando as regras são aplicáveis. Aqui está o aspecto da interface de design no MetaTrader: o sistema é criado simplesmente digitando as regras na janela e salvando-as. Referências para as diferentes funções disponíveis (por exemplo, osciladores e tal) podem ser encontradas clicando no ícone do livro. A maioria dos softwares terá uma referência similar disponível no próprio programa ou em seu site. Depois de criar as regras desejadas e codificar o sistema, você simplesmente salva o arquivo. Então, você pode usá-lo selecionando-o na tela principal. 3. Tomada de decisão - Há muitas decisões a serem tomadas neste ponto: Em que mercado eu quero negociar em 13 Quais os períodos de tempo que devo usar 13 Quais séries de preços devo usar 13 Que subconjunto de ações devo usar para testes Manter em Tenha em mente que os sistemas de negociação devem ser consistentemente lucrativos em muitos mercados. Ao personalizar o período de tempo e a série de preços demais, você pode manchar os resultados e produzir resultados não característicos.4. Prática - Backtesting e papel comercial são essenciais para o desenvolvimento bem sucedido de um sistema comercial: Execute vários backtests em diferentes períodos de tempo e certifique-se de que os resultados sejam consistentes e satisfatórios. Papel comercial o sistema (use dinheiro imaginário, mas registre os negócios e os resultados), e novamente, procure uma rentabilidade consistente. Verifique cuidadosamente se há erros no programa, ou trocas não intencionais. Estes podem ser um resultado de programação defeituosa ou falha em prever certas circunstâncias que tenham repercussões indesejadas. 5. Repetir - Repetição é necessária. Continue trabalhando no sistema até que você possa obter lucro consistentemente na maioria dos mercados e condições. Sempre há eventos imprevistos que ocorrem assim que um sistema é atualizado. Aqui estão alguns fatores que muitas vezes causam resultados negativos: Custos de transação - Certifique-se de que está usando a comissão real. E alguns extras para explicar preenchimentos imprecisos (diferença entre os preços de lance e de venda). Em outras palavras, evite o deslizamento (para analisar o que é e como ocorre, veja a seção anterior deste tutorial.) Vigilância - Não ignore a perda de negociações, mantenha um olho em todas as negociações. Otimização - Não sobre otimize o sistema. Em outras palavras, não adapte o sistema a um ambiente de mercado muito específico, tente ser rentável em um ambiente tão amplo quanto possível. Risco - Nunca ignore ou se esqueça do risco. É muito importante ter maneiras de limitar as perdas (também conhecidas como "stop-loss") e formas de garantir lucros (tirar lucros). 6. Comércio - Experimente, mas espere resultados não desejados. Certifique-se de usar operações não automatizadas até estar confiante no desempenho e consistência dos sistemas. Demora muito tempo para desenvolver um sistema de negociação bem-sucedido, e antes de você aperfeiçoá-lo, você pode ter que suportar algumas perdas de negociação ao vivo para detectar falhas: os testes de volta não podem representar perfeitamente as condições do mercado ao vivo e a negociação de papel pode ser imprecisa. Se o seu sistema perde dinheiro, volte para o quadro de desenho e veja onde ele deu errado (veja o passo 5). Conclusão Estas seis etapas fornecem uma visão geral de todo o processo de construção de um sistema comercial. Na próxima seção, construiremos esse conhecimento e analisaremos mais detalhadamente a solução de problemas e a modificação. Sistemas de negociação: solução de problemas e otimização

No comments:

Post a Comment