Wednesday 7 March 2018

How to design automated trading system


Codificação de Sistemas de Negociação Sistemas de negociação são simplesmente conjuntos de regras que os negociadores usam para determinar suas entradas e saídas de uma posição. O desenvolvimento e o uso de sistemas de negociação podem ajudar os traders a obter retornos consistentes enquanto limitam o risco. Em uma situação ideal, os investidores devem se sentir como robôs, executando operações de forma sistemática e sem emoção. Então, talvez você tenha se perguntado: O que impedir um robô de negociar meu sistema? A resposta: Nada Este tutorial apresentará as ferramentas e técnicas que você pode usar para criar seu próprio sistema de negociação automatizado. Como são criados os sistemas de negociação automatizados Os sistemas de negociação automatizados são criados convertendo-se as regras de seus sistemas de negociação em códigos que o seu computador possa entender. Seu computador, em seguida, executa essas regras através de seu software de negociação, que procura por negociações que cumprem as suas regras. Finalmente, os negócios são automaticamente colocados com o seu corretor. Este tutorial se concentrará na segunda e na terceira partes deste processo, onde suas regras são convertidas em um código que seu software de negociação pode entender e usar. O que o software comercial suporta sistemas de negociação automatizados Existem muitos programas de negociação que suportam sistemas de negociação automatizados. Alguns irão gerar e colocar automaticamente negociações com seu corretor. Outros encontrarão automaticamente negociações que atendem aos seus critérios, mas exigem que você faça os pedidos manualmente com seu corretor. Além disso, os programas de negociação totalmente automáticos muitas vezes exigem que você use corretoras específicas que suportem tais recursos, você também pode ter que preencher um formulário de autorização adicional. Vantagens e Desvantagens Os sistemas de negociação automatizados têm vários benefícios, mas também têm suas desvantagens. Afinal, se alguém tivesse um sistema de negociação que automaticamente ganhasse dinheiro o tempo todo, ele ou ela teria, literalmente, uma máquina de fazer dinheiro. Vantagens: Um sistema automatizado tira a emoção e o trabalho da negociação, permitindo que você se concentre em melhorar sua estratégia e regras de gerenciamento de dinheiro. 13 Uma vez que um sistema lucrativo é desenvolvido, ele não requer nenhum trabalho de sua parte até que ele quebre, ou as condições do mercado exigem uma mudança. Desvantagens: Se o sistema não for devidamente codificado e testado, grandes perdas podem ocorrer muito rapidamente. 13 Às vezes é impossível colocar certas regras no código, o que dificulta o desenvolvimento de um sistema de negociação automatizado. Neste tutorial, você aprenderá como planejar e projetar um sistema de negociação automatizado, como converter esse design em código que seu computador entenderá, como testar seu plano para garantir o desempenho ideal e, finalmente, como colocar seu sistema em uso. Trading Systems Coding: System DesignOs sistemas de negociação automatizados minimizam as emoções, permitem uma entrada de pedidos mais rápida, levam a uma maior consistência e solucionam os problemas de erro do piloto. Os operadores de sistemas dividem seu tempo entre negociação, desenvolvimento, backtesting, otimização e forward testing, para criar sistemas de negociação viáveis ​​e de alta probabilidade. O software automatizado de negociação forex examina o mercado de negociações favoráveis ​​com base em sua entrada. Saiba mais sobre esta valiosa ferramenta forex. Combinando uma boa análise com uma implementação eficaz, você pode melhorar drasticamente seus lucros nesse mercado. Aprenda a adicionar estrutura aos seus métodos de negociação com estes seis passos importantes. A maioria dos corretores fornecerá registros comerciais, mas também é importante manter o controle por conta própria. O software tornou o dia de negociação rápido e automático - mais uma razão para ser tão meticuloso quanto possível ao escolher o caminho certo para as suas necessidades. É impossível evitar um desastre sem regras comerciais - certifique-se de que você sabe como criá-las para si mesmo. Esses passos farão de você um trader mais disciplinado, mais inteligente e, por fim, mais rico. Perguntas frequentes A depreciação pode ser usada como uma despesa dedutível de impostos para reduzir os custos tributários, impulsionando o fluxo de caixa Saiba como Warren Buffett se tornou tão bem sucedido através de sua participação em várias escolas de prestígio e suas experiências do mundo real. O Instituto CFA permite a um indivíduo uma quantidade ilimitada de tentativas em cada exame. Embora você possa tentar o exame. Saiba sobre os salários médios dos analistas do mercado de ações nos EUA e os diferentes fatores que afetam os salários e os níveis gerais. Perguntas frequentes A depreciação pode ser usada como uma despesa dedutível de impostos para reduzir os custos tributários, impulsionando o fluxo de caixa Saiba como Warren Buffett se tornou tão bem sucedido através de sua participação em várias escolas de prestígio e suas experiências do mundo real. O Instituto CFA permite a um indivíduo uma quantidade ilimitada de tentativas em cada exame. Embora você possa tentar o exame. Saiba sobre os salários médios dos analistas do mercado de ações nos EUA e os diferentes fatores que afetam os salários e os níveis gerais. Codificação de Sistemas Comerciais: Projeto do Sistema O primeiro passo ao codificar qualquer aplicativo é a fase de projeto. Seja codificando um aplicativo de software ou um sistema de negociação, o planejamento e o planejamento cuidadosos o ajudarão a terminar em um período de tempo mais curto com menos erros. Nós estaremos usando um processo simples de três etapas para projetar nosso sistema de negociação. Passo 1: Crie suas regras de sistema de negociação O primeiro passo ao projetar um sistema de negociação é simplesmente chegar com as regras pelas quais seu sistema irá operar. Deve haver quatro regras básicas para cada sistema de negociação: Comprar - Identifique quando você quer comprar uma posição. 13 Sell - Identifique quando você quer vender uma posição. 13 Stop - Identifique quando você quer reduzir suas perdas. 13 Target - Identifique quando você quer reservar um ganho. Então, por exemplo: Buy - Quando a média móvel de 30 dias (MA) ultrapassa a MA 13 de 60 dias Sell - Quando o MA de 30 dias cruza abaixo do MA 13 Stop de 60 dias - Perda máxima de 10 unidades 13 Target - Meta de 10 unidades Este sistema de exemplo comprará e venderá com base nas médias móveis de 30 e 60 dias e contabilizará automaticamente os ganhos após um lucro de 10 unidades ou venderá com prejuízo após um movimento de 10 unidades na direção oposta. Etapa 2: Identificar os componentes de cada regra Agora que temos nossas regras, precisamos identificar os componentes envolvidos em cada regra. Cada componente deve conter dois elementos: O indicador ou estudo usado 13 As configurações para o indicador ou estudo Esses componentes devem ser construídos digitando-se o nome abreviado do estudo, seguido pelas configurações entre parênteses. Essas configurações entre parênteses são referidas como parâmetros do indicador ou estudo. Ocasionalmente, um estudo pode ter vários parâmetros, em cujo caso você simplesmente os separa com vírgulas. Vamos dar uma olhada em alguns exemplos: MA (25) - média móvel de 25 dias 13 RSI (25) - índice de força relativa de 25 dias 13 MACD (Close (0), 5,5) - Conjunto de divergência de convergência média móvel baseado no fechamento de hoje, com cinco dias de duração rápida e cinco dias de duração lenta Se você não tiver certeza de quantos parâmetros um determinado componente requer, você pode simplesmente consultar a documentação de seus programas comerciais, que lista esses componentes junto com os valores que precisam ser preenchidos. Por exemplo, podemos ver que o Tradecision nos diz que precisamos de três parâmetros com MACD: Assim, para o exemplo mencionado na etapa um, nós usaríamos: MA (30) - Significado média móvel de 30 dias 13 MA (60) - Significado média móvel de 60 dias Etapa 3: Adicionando Ação Agora vamos adicionar ações às nossas regras. Cada ação segue o seguinte formato básico: IF Condição WHILE Condição THEN Ação Normalmente, a condição consistirá dos componentes e parâmetros criados acima, enquanto a ação consistirá em comprar ou vender. As condições também podem consistir em inglês simples se nenhum componente estiver presente. Observe que o componente while é opcional. Aqui estão alguns exemplos para ajudar a ilustrar este ponto: SE MA (30) Cruza Acima MA (60) ENTÃO Compre 13 SE MA (30) Cruza Abaixo MA (60) ENQUANTO Volume (20.000) ENTÃO Vende 13 SE EMA (25) Is Maior que MA (5) ENTÃO Vender 13 SE RSI (20) É Igual a 50 ENTÃO Comprar Então, para o exemplo que estamos usando, qua simplesmente listar: SE MA (30) Cruza Acima MA (60) ENTÃO Compre 13 SE MA ( 30) Cruzes Abaixo MA (60) ENTÃO Vender 13 SE nossa negociação tiver 10 unidades de lucro ENTÃO Vender 13 SE nossa negociação tiver 10 unidades de perda ENTÃO Vender O que vem a seguir A seguir, analise bem essas regras para converter em um código que seu computador pode compreender codificação de sistemas de negociação: a arquitetura de sistema de negociação de StageAlgorithmic de codificação Anteriormente neste blog eu escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmica inteligente, bem como os requisitos funcionais e não funcionais de um sistema de negociação algorítmica de produção. Desde então, projetei uma arquitetura de sistema que, acredito, poderia satisfazer esses requisitos arquitetônicos. Neste post, descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e o padrão de descrição da arquitetura de engenharia de software. De acordo com este padrão, uma descrição de arquitetura deve: Contém várias visões de arquitetura padronizadas (por exemplo, em UML) e Manter rastreabilidade entre decisões de design e requisitos de arquitetura Definição de arquitetura de software Ainda não há consenso sobre o que é uma arquitetura de sistemas. No contexto deste artigo, ele é definido como a infraestrutura na qual os componentes do aplicativo que satisfazem os requisitos funcionais podem ser especificados, implementados e executados. Requisitos funcionais são as funções esperadas do sistema e seus componentes. Requisitos não funcionais são medidas através das quais a qualidade do sistema pode ser medida. Um sistema que satisfaz plenamente seus requisitos funcionais ainda pode falhar em atender às expectativas se os requisitos não funcionais forem deixados insatisfeitos. Para ilustrar esse conceito, considere o seguinte cenário: um sistema de negociação algorítmica que você acabou de comprar / construir faz excelentes decisões de negociação, mas é completamente inoperável com os sistemas de contabilidade e gerenciamento de risco da organização. Este sistema atende às suas expectativas Arquitetura conceitual Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no mais alto nível de granularidade. Nesse nível, o sistema de negociação algorítmica segue uma arquitetura orientada a eventos (EDA) dividida em quatro camadas e dois aspectos arquitetônicos. Para cada camada e referência, arquiteturas e padrões de referência são usados. Padrões arquitetônicos são estruturas genéricas comprovadas para atingir requisitos específicos. Aspectos arquitetônicos são preocupações transversais que abrangem vários componentes. Arquitetura orientada a eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos do mercado em tempo real, eventos ou tendências complexas e eventos de negociação, por ex. enviando um pedido. Este diagrama ilustra a arquitetura conceitual do sistema de comércio algorítmico Arquiteturas de referência Para usar uma analogia, uma arquitetura de referência é semelhante às plantas de uma parede com suporte de carga. Essa impressão em azul pode ser reutilizada para vários projetos de construção, independentemente do prédio que está sendo construído, uma vez que satisfaz um conjunto de requisitos comuns. Da mesma forma, uma arquitetura de referência define um modelo contendo estruturas e mecanismos genéricos que podem ser usados ​​para construir uma arquitetura de software concreta que atenda a requisitos específicos. A arquitetura para o sistema de comércio algorítmico usa uma arquitetura baseada em espaço (SBA) e um controlador de visão de modelo (MVC) como referência. Boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carga de extração (ETL) e um data warehouse (DW) também são usados. Model view controller - um padrão que separa a representação da informação da interação do usuário com ela. Arquitetura baseada no espaço - especifica uma infraestrutura onde unidades de processamento fracamente acopladas interagem entre si por meio de uma memória associativa compartilhada chamada espaço (mostrada abaixo). Visão Estrutural A visão estrutural de uma arquitetura mostra os componentes e subcomponentes do sistema de negociação algorítmica. Também mostra como esses componentes são implantados na infraestrutura física. Os diagramas UML usados ​​nessa exibição incluem diagramas de componentes e diagramas de implementação. Abaixo está a galeria dos diagramas de implantação do sistema de comércio algorítmico geral e as unidades de processamento na arquitetura de referência SBA, bem como diagramas de componentes relacionados para cada uma das camadas. Táticas Arquitetônicas De acordo com o instituto de engenharia de software, uma tática arquitetônica é um meio de satisfazer um requisito de qualidade, manipulando algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetônico. Um exemplo simples usado na arquitetura do sistema de negociação algorítmica é manipular um armazenamento de dados operacional (ODS) com um componente contínuo de consulta. Esse componente analisaria continuamente o ODS para identificar e extrair eventos complexos. As seguintes táticas são usadas na arquitetura: O padrão de disruptor nas filas de eventos e pedidos Memória compartilhada para as filas de eventos e pedidos Linguagem de consulta contínua (CQL) no ODS Filtragem de dados com o padrão de design de filtro nos dados recebidos Algoritmos de prevenção de congestionamento em todos conexões de entrada e saída AQM (Active queue management) e notificação explícita de congestionamento Recursos de computação de commodities com capacidade de atualização (escalável) Redundância ativa para todos os pontos únicos de falha Estrutura de indexação e otimização otimizada no ODS Agende scripts regulares de backup e limpeza de dados para ODS Históricos de transação em todos os bancos de dados Checksums para todos os pedidos para detectar falhas Anotar eventos com registros de data e hora para ignorar eventos obsoletos Regras de validação de pedidos, por exemplo Quantidades máximas de negociação Componentes de negociador automatizado usam um banco de dados em memória para análise Autenticação de dois estágios para interfaces de usuário conectando-se aos ATs Criptografia em interfaces de usuário e conexões ao padrão de projeto ATs Observer para MVC gerenciar visualizações A lista acima é apenas alguns decisões que identifiquei durante o projeto da arquitetura. Não é uma lista completa de táticas. À medida que o sistema está sendo desenvolvido, táticas adicionais devem ser empregadas em vários níveis de granularidade para atender aos requisitos funcionais e não funcionais. Abaixo, há três diagramas descrevendo o padrão de design do disruptor, o padrão de design do filtro e o componente de consulta contínua. Visão Comportamental Essa visão de uma arquitetura mostra como os componentes e camadas devem interagir uns com os outros. Isso é útil ao criar cenários para testar projetos de arquitetura e para entender o sistema de ponta a ponta. Esta visão consiste em diagramas de seqüência e diagramas de atividades. Os diagramas de atividades que mostram o processo interno dos sistemas de negociação algorítmica e como os comerciantes devem interagir com o sistema de negociação algorítmica são mostrados abaixo. Tecnologias e estruturas A etapa final no projeto de uma arquitetura de software é identificar possíveis tecnologias e estruturas que possam ser usadas para realizar a arquitetura. Como princípio geral, é melhor aproveitar as tecnologias existentes, desde que satisfaçam adequadamente os requisitos funcionais e não funcionais. Uma estrutura é uma arquitetura de referência realizada, por ex. O JBoss é um framework que realiza a arquitetura de referência do JEE. As seguintes tecnologias e estruturas são interessantes e devem ser consideradas ao implementar um sistema de comércio algorítmico: CUDA - A NVidia possui vários produtos que suportam modelagem de finanças computacionais de alto desempenho. É possível obter até 50x melhorias de desempenho na execução de simulações de Monte Carlo na GPU em vez da CPU. Apache River - River é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura para construir aplicativos baseados no padrão SBA Apache Hadoop - no caso em que o registro generalizado é um requisito, o uso do Hadoop oferece uma solução interessante para o problema de big data. O Hadoop pode ser implementado em um ambiente em cluster que suporta tecnologias CUDA. AlgoTrader - uma plataforma de negociação algorítmica de código aberto. O AlgoTrader poderia ser implantado no lugar dos componentes do negociador automatizado. FIX Engine - um aplicativo independente que suporta os protocolos Financial Information Exchange (FIX), incluindo FIX, FAST e FIXatdl. Embora não seja uma tecnologia ou uma estrutura, os componentes devem ser construídos com uma interface de programação de aplicativo (API) para melhorar a interoperabilidade do sistema e de seus componentes. Conclusão A arquitetura proposta foi projetada para satisfazer requisitos muito genéricos identificados para sistemas de negociação algorítmica. Em geral, os sistemas de negociação algorítmica são complicados por três fatores que variam de acordo com cada implementação: Dependências de sistemas externos de empresas e de câmbio Desafiando requisitos não funcionais e Evitando restrições arquiteturais A arquitetura de software proposta precisaria, portanto, ser adaptada caso a caso para satisfazer requisitos organizacionais e regulatórios específicos, bem como superar restrições regionais. A arquitetura do sistema de comércio algorítmico deve ser vista apenas como um ponto de referência para indivíduos e organizações que desejam projetar seus próprios sistemas de negociação algorítmica. Para uma cópia completa e fontes utilizadas, faça o download de uma cópia do meu relatório. Obrigado.

No comments:

Post a Comment