среда, 6 июня 2018 г.

Software de negociação de escritores do sistema


Codificação de Sistemas de Negociação.
Por Justin Kuepper.
Como os sistemas de negociação automatizados são criados?
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.
Vantagens e desvantagens.
Um sistema automatizado tira a emoção e o trabalho ocupado da negociação, o que permite que você se concentre em melhorar suas regras de estratégia e gerenciamento de dinheiro. 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. À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.

Os prós e contras de sistemas de negociação automatizados.
Investidores e investidores podem transformar regras precisas de entrada, saída e gerenciamento de dinheiro em sistemas de negociação automatizados que permitem que os computadores executem e monitorem os negócios. Uma das maiores atrações da automação estratégica é que ela pode tirar um pouco da emoção do comércio, já que as negociações são feitas automaticamente quando certos critérios são atendidos. Este artigo irá apresentar aos leitores e explicar algumas das vantagens e desvantagens, bem como as realidades, dos sistemas de negociação automatizados. (Para leitura relacionada, consulte O poder das operações do programa.)
O que é um sistema de negociação automatizado?
[Sistemas de negociação automatizados podem usar diversos indicadores técnicos para definir pontos de entrada e saída. O Curso de Análise Técnica da Investopedia fornece uma visão geral detalhada desses indicadores técnicos e padrões gráficos que os traders podem usar ao criar sistemas de negociação automatizados.]
Algumas plataformas de negociação têm "wizards" de construção de estratégias que permitem aos usuários fazerem seleções de uma lista de indicadores técnicos comumente disponíveis para construir um conjunto de regras que podem ser automaticamente negociadas. O usuário pode estabelecer, por exemplo, que uma negociação longa será registrada quando a média móvel de 50 dias ultrapassar a média móvel de 200 dias em um gráfico de cinco minutos de um determinado instrumento de negociação. Os usuários também podem inserir o tipo de pedido (mercado ou limite, por exemplo) e quando a negociação será acionada (por exemplo, no fechamento da barra ou abertura da próxima barra) ou usar as entradas padrão da plataforma. Muitos comerciantes, no entanto, optam por programar seus próprios indicadores e estratégias personalizados, ou trabalhar em estreita colaboração com um programador para desenvolver o sistema. Embora isso normalmente exija mais esforço do que usar o assistente da plataforma, ele permite um grau muito maior de flexibilidade e os resultados podem ser mais recompensadores. (Infelizmente, não existe uma estratégia de investimento perfeita que garanta o sucesso. Para mais, consulte Uso de indicadores técnicos para desenvolver estratégias comerciais.)
Uma vez que as regras tenham sido estabelecidas, o computador pode monitorar os mercados para encontrar oportunidades de compra ou venda com base nas especificações da estratégia de negociação. Dependendo das regras específicas, assim que uma transação for efetuada, quaisquer ordens para perdas de parada de proteção, paradas finais e metas de lucro serão automaticamente geradas. Em mercados de rápido movimento, essa entrada instantânea de pedidos pode significar a diferença entre uma pequena perda e uma perda catastrófica no caso de a negociação se mover contra o comerciante.
Vantagens dos Sistemas de Negociação Automatizada.
Há uma longa lista de vantagens em ter um computador monitorando os mercados para oportunidades de negociação e executando as negociações, incluindo:
Minimize Emoções. Sistemas automatizados de negociação minimizam as emoções durante todo o processo de negociação. Ao manter as emoções sob controle, os operadores normalmente têm mais facilidade em aderir ao plano. Uma vez que as ordens de negociação são executadas automaticamente uma vez cumpridas as regras de negociação, os comerciantes não poderão hesitar ou questionar o negócio. Além de ajudar os operadores que têm medo de "puxar o gatilho", a negociação automatizada pode refrear aqueles que estão aptos a fazer overtrade - comprar e vender em todas as oportunidades percebidas.
Capacidade de backtest. O backtesting aplica regras de negociação a dados históricos do mercado para determinar a viabilidade da ideia. Ao projetar um sistema para negociação automatizada, todas as regras precisam ser absolutas, sem espaço para interpretação (o computador não pode fazer suposições - deve ser dito exatamente o que fazer). Os comerciantes podem tomar esses conjuntos de regras e testá-los em dados históricos antes de arriscar dinheiro em negociações ao vivo. Um backtesting cuidadoso permite que os traders avaliem e ajustem uma ideia de negociação e determinem a expectativa do sistema - a quantia média que um trader pode esperar ganhar (ou perder) por unidade de risco. (Oferecemos algumas dicas sobre esse processo que podem ajudar a refazer suas estratégias de negociação atuais. Para mais, consulte Backtesting: Interpreting the Past.)
Preserve a disciplina. Como as regras comerciais são estabelecidas e a execução comercial é realizada automaticamente, a disciplina é preservada mesmo em mercados voláteis. Frequentemente, a disciplina é perdida devido a fatores emocionais, como o medo de sofrer uma perda ou o desejo de lucrar um pouco mais com o comércio. A negociação automatizada ajuda a garantir que a disciplina seja mantida porque o plano de negociação será seguido exatamente. Além disso, o erro do piloto é minimizado e uma ordem para comprar 100 ações não será inserida incorretamente como uma ordem para vender 1.000 ações.
Conseguir 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 lucrativo, os operadores que ignoram as regras estão alterando qualquer expectativa que o sistema teria. Não existe um plano de negociação que ganhe 100% do tempo - as perdas fazem parte do jogo. Mas as perdas podem ser psicologicamente traumatizantes, de modo que um operador que tenha dois ou três negócios perdedores seguidos pode decidir pular a próxima negociação. Se esta próxima negociação tiver sido um vencedor, o trader já destruiu qualquer expectativa que o sistema tivesse. Os sistemas de negociação automatizados permitem que os negociadores alcancem consistência negociando o plano. (É impossível evitar um desastre sem regras de negociação. Para mais, veja 10 passos para construir um plano de negociação vencedor).
Velocidade de entrada de pedido aprimorada. Como os computadores respondem imediatamente às mudanças nas condições de mercado, os sistemas automatizados são capazes de gerar pedidos assim que os critérios de negociação são atendidos. Entrar ou sair de uma negociação alguns segundos antes pode fazer uma grande diferença no resultado da negociação. Assim que uma posição é inserida, todos os outros pedidos são gerados automaticamente, incluindo perdas de parada de proteção e metas de lucro. Os mercados podem se mover rapidamente, e é desmoralizante ter uma negociação atingindo a meta de lucro ou ultrapassar um nível de stop loss - antes que os pedidos possam ser inseridos. Um sistema de negociação automatizado impede que isso aconteça.
Desvantagens e Realidades dos Sistemas de Negociação Automatizada.
Os sistemas de negociação automatizados possuem muitas vantagens, mas existem algumas quedas e realidades às quais os investidores devem estar cientes.
Falhas mecânicas. A teoria por trás da negociação automatizada faz com que pareça simples: configurar o software, programar as regras e assisti-lo ao comércio. Na realidade, porém, a negociação automatizada é um método sofisticado de negociação, mas não infalível. Dependendo da plataforma de negociação, uma ordem de negociação 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. Também pode haver 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 transações reais. A maioria dos traders deve esperar uma curva de aprendizado ao usar sistemas de negociação automatizados, e geralmente é uma boa ideia começar com pequenos tamanhos de negociação enquanto o processo é refinado.
Monitorização Embora seja ótimo ligar o computador e sair para o dia, os sistemas de negociação automatizados exigem monitoramento. Isso ocorre devido ao potencial de falhas mecânicas, como problemas de conectividade, perdas de energia ou falhas no computador, além de peculiaridades do sistema. É possível que um sistema de negociação automatizado enfrente anomalias que possam resultar em pedidos incorretos, pedidos ausentes ou pedidos duplicados. Se o sistema for monitorado, esses eventos podem ser identificados e resolvidos rapidamente.
Os comerciantes têm a opção de executar seus sistemas de negociação automatizados através de uma plataforma de negociação baseada em servidor, como o Strategy Runner. Essas plataformas frequentemente oferecem estratégias comerciais para venda, um assistente para que os operadores possam projetar seus próprios sistemas ou a capacidade de hospedar sistemas existentes na plataforma baseada em servidor. Por uma taxa, o sistema de negociação automatizado pode procurar, executar e monitorar negociações - com todos os pedidos residindo em seu servidor, resultando em entradas de pedidos potencialmente mais rápidas e confiáveis.
Embora apelando para uma variedade de fatores, os sistemas de negociação automatizados não devem ser considerados substitutos para negociações executadas com cautela. Falhas mecânicas podem acontecer e, como tal, esses sistemas exigem monitoramento. As plataformas baseadas em servidor podem fornecer uma solução para os comerciantes que desejam minimizar os riscos de falhas mecânicas. (Para leitura relacionada, consulte Estratégias de negociação diurna para iniciantes.)

Melhor Linguagem de Programação para Sistemas de Negociação Algorítmica?
Melhor Linguagem de Programação para Sistemas de Negociação Algorítmica?
Uma das perguntas mais freqüentes que recebo no mailbag do QS é "Qual é a melhor linguagem de programação para negociação algorítmica?". A resposta curta é que não há "melhor" linguagem. Parâmetros de estratégia, desempenho, modularidade, desenvolvimento, resiliência e custo devem ser considerados. Este artigo descreverá os componentes necessários de uma arquitetura de sistema de comércio algorítmico e como as decisões relativas à implementação afetam a escolha da linguagem.
Primeiramente, os principais componentes de um sistema de negociação algorítmica serão considerados, como as ferramentas de pesquisa, o otimizador de portfólio, o gerenciador de risco e o mecanismo de execução. Posteriormente, diferentes estratégias de negociação serão examinadas e como elas afetam o design do sistema. Em particular, a frequência de negociação e o volume de negociação provável serão ambos discutidos.
Uma vez que a estratégia de negociação tenha sido selecionada, é necessário arquitetar todo o sistema. Isso inclui a escolha de hardware, o sistema operacional e a resiliência do sistema contra eventos raros e potencialmente catastróficos. Enquanto a arquitetura está sendo considerada, a devida atenção deve ser dada ao desempenho - tanto para as ferramentas de pesquisa quanto para o ambiente de execução ao vivo.
Qual é o sistema de negociação tentando fazer?
Antes de decidir sobre a "melhor" linguagem com a qual escrever um sistema de negociação automatizado, é necessário definir os requisitos. O sistema será puramente baseado em execução? O sistema exigirá um módulo de gerenciamento de risco ou de construção de portfólio? O sistema exigirá um backtester de alto desempenho? Para a maioria das estratégias, o sistema de negociação pode ser dividido em duas categorias: Pesquisa e geração de sinais.
A pesquisa está preocupada com a avaliação de um desempenho da estratégia em relação aos dados históricos. O processo de avaliação de uma estratégia de negociação sobre dados de mercado anteriores é conhecido como backtesting. O tamanho dos dados e a complexidade algorítmica terão um grande impacto na intensidade computacional do backtester. A velocidade e a simultaneidade da CPU costumam ser os fatores limitantes na otimização da velocidade de execução da pesquisa.
A geração de sinais preocupa-se em gerar um conjunto de sinais de negociação de um algoritmo e enviar esses pedidos ao mercado, geralmente por meio de uma corretora. Para determinadas estratégias, é necessário um alto nível de desempenho. Problemas de E / S, como largura de banda de rede e latência, são muitas vezes o fator limitante na otimização de sistemas de execução. Assim, a escolha de idiomas para cada componente de todo o seu sistema pode ser bem diferente.
Tipo, Frequência e Volume de Estratégia.
O tipo de estratégia algorítmica empregada terá um impacto substancial no design do sistema. Será necessário considerar os mercados que estão sendo negociados, a conectividade com fornecedores de dados externos, a frequência e o volume da estratégia, o tradeoff entre facilidade de desenvolvimento e otimização de desempenho, bem como qualquer hardware personalizado, incluindo customização co-localizada servidores, GPUs ou FPGAs que possam ser necessários.
As escolhas tecnológicas para uma estratégia de ações norte-americanas de baixa frequência serão muito diferentes daquelas de uma negociação de estratégia de arbitragem estatística de alta frequência no mercado de futuros. Antes da escolha da linguagem, muitos fornecedores de dados devem ser avaliados quanto à estratégia em questão.
Será necessário considerar a conectividade com o fornecedor, a estrutura de quaisquer APIs, a pontualidade dos dados, os requisitos de armazenamento e a resiliência em face de um fornecedor ficar off-line. Também é aconselhável ter acesso rápido a vários fornecedores! Vários instrumentos têm suas próprias peculiaridades de armazenamento, exemplos dos quais incluem vários símbolos de ticker para ações e datas de vencimento para futuros (para não mencionar quaisquer dados OTC específicos). Isso precisa ser levado em conta no design da plataforma.
A frequência da estratégia é provavelmente um dos maiores impulsionadores de como a pilha de tecnologia será definida. Estratégias que empregam dados com mais freqüência do que minuciosamente ou em segundo lugar exigem consideração significativa com relação ao desempenho.
Uma estratégia que excede as segundas barras (isto é, dados de ticks) leva a um design orientado pelo desempenho como o requisito primário. Para estratégias de alta frequência, uma quantidade substancial de dados de mercado precisará ser armazenada e avaliada. Softwares como HDF5 ou kdb + são comumente usados ​​para essas funções.
Para processar os volumes extensos de dados necessários para aplicativos HFT, um backtester e um sistema de execução extensivamente otimizados devem ser usados. C / C ++ (possivelmente com algum montador) é provável que seja o candidato a idioma mais forte. Estratégias de frequência ultra-alta quase certamente exigirão hardware customizado, como FPGAs, co-location de troca e ajuste de interface de rede / kernal.
Sistemas de pesquisa.
Os sistemas de pesquisa geralmente envolvem uma mistura de desenvolvimento interativo e scripts automatizados. O primeiro ocorre com frequência dentro de um IDE, como o Visual Studio, o MatLab ou o R Studio. Este último envolve extensos cálculos numéricos sobre numerosos parâmetros e pontos de dados. Isso leva a uma escolha de idioma que fornece um ambiente simples para testar o código, mas também fornece desempenho suficiente para avaliar estratégias em várias dimensões de parâmetro.
IDEs típicos neste espaço incluem o Microsoft Visual C ++ / C #, que contém extensos utilitários de depuração, recursos de conclusão de código (via "Intellisense") e visões gerais simples da pilha inteira do projeto (via banco de dados ORM, LINQ); MatLab, que é projetado para extensa álgebra linear numérica e operações vetorizadas, mas de uma forma de console interativo; R Studio, que envolve o console de linguagem estatística R em um IDE completo; Eclipse IDE para Linux Java e C ++; e IDEs semi-proprietários como o Enthought Canopy for Python, que incluem bibliotecas de análise de dados como NumPy, SciPy, scikit-learn e pandas em um único ambiente interativo (console).
Para backtesting numérico, todos os idiomas acima são adequados, embora não seja necessário utilizar uma GUI / IDE, pois o código será executado "em segundo plano". A consideração principal neste estágio é a velocidade de execução. Uma linguagem compilada (como C ++) é geralmente útil se as dimensões do parâmetro de backtesting forem grandes. Lembre-se que é necessário ter cuidado com esses sistemas, se for esse o caso!
Linguagens interpretadas, como Python, geralmente usam bibliotecas de alto desempenho como o NumPy / pandas para a etapa de backtesting, a fim de manter um grau razoável de competitividade com equivalentes compilados. Em última análise, a linguagem escolhida para o backtesting será determinada por necessidades algorítmicas específicas, bem como o leque de bibliotecas disponíveis na linguagem (mais sobre isso abaixo). No entanto, a linguagem usada para os ambientes de backtester e de pesquisa pode ser completamente independente daquelas usadas nos componentes de construção de portfólio, gerenciamento de risco e execução, como será visto.
Construção de Carteira e Gestão de Risco.
Os componentes de gerenciamento de risco e de construção de portfólio são frequentemente ignorados pelos traders algorítmicos de varejo. Isso é quase sempre um erro. Essas ferramentas fornecem o mecanismo pelo qual o capital será preservado. Eles não apenas tentam aliviar o número de apostas "arriscadas", mas também minimizam a rotatividade dos negócios, reduzindo os custos de transação.
Versões sofisticadas desses componentes podem ter um efeito significativo na qualidade e consistência da lucratividade. É fácil criar uma estratégia estável, pois o mecanismo de construção de portfólio e o gerenciador de risco podem ser facilmente modificados para lidar com vários sistemas. Assim, eles devem ser considerados componentes essenciais no início do projeto de um sistema de negociação algorítmica.
O trabalho do sistema de construção de portfólio é pegar um conjunto de negócios desejados e produzir o conjunto de negociações reais que minimizam o churn, manter exposições a vários fatores (como setores, classes de ativos, volatilidade, etc.) e otimizar a alocação de capital para vários estratégias em um portfólio.
A construção de portfólio geralmente se reduz a um problema de álgebra linear (como uma fatoração de matriz) e, portanto, o desempenho é altamente dependente da eficácia da implementação da álgebra linear numérica disponível. Bibliotecas comuns incluem uBLAS, LAPACK e NAG para C ++. O MatLab também possui operações de matriz amplamente otimizadas. O Python utiliza o NumPy / SciPy para tais cálculos. Um portfólio freqüentemente reequilibrado exigirá uma biblioteca matricial compilada (e bem otimizada!) Para realizar este passo, de modo a não afunilar o sistema de negociação.
O gerenciamento de riscos é outra parte extremamente importante de um sistema de negociação algorítmica. O risco pode vir de várias formas: aumento da volatilidade (embora isso possa ser visto como desejável para certas estratégias!), Aumento de correlações entre classes de ativos, inadimplência de terceiros, interrupções de servidor, eventos "black swan" e erros não detectados no código de negociação. para nomear alguns.
Os componentes de gerenciamento de risco tentam antecipar os efeitos da volatilidade excessiva e correlação entre as classes de ativos e seus efeitos subseqüentes sobre o capital comercial. Muitas vezes, isso reduz a um conjunto de cálculos estatísticos, como os "testes de estresse" de Monte Carlo. Isso é muito semelhante às necessidades computacionais de um mecanismo de precificação de derivativos e, como tal, será vinculado à CPU. Estas simulações são altamente paralelizáveis ​​(veja abaixo) e, até certo ponto, é possível "lançar hardware no problema".
Sistemas de Execução.
O trabalho do sistema de execução é receber sinais de negociação filtrados dos componentes de construção de carteira e gestão de risco e enviá-los para uma corretora ou outros meios de acesso ao mercado. Para a maioria das estratégias de negociação algorítmica de varejo, isso envolve uma conexão API ou FIX para uma corretora como a Interactive Brokers. As principais considerações ao decidir sobre uma linguagem incluem a qualidade da API, a disponibilidade do wrapper de idioma para uma API, a frequência de execução e o escorregamento previsto.
A "qualidade" da API refere-se a quão bem documentada ela é, que tipo de desempenho ela fornece, se precisa de software independente para ser acessado ou se um gateway pode ser estabelecido de maneira sem cabeça (ou seja, sem GUI). No caso dos Interactive Brokers, a ferramenta Trader WorkStation precisa estar em execução em um ambiente GUI para acessar sua API. Certa vez, tive que instalar uma edição Ubuntu Desktop em um servidor de nuvem da Amazon para acessar remotamente o Interactive Brokers, puramente por esse motivo!
A maioria das APIs fornecerá uma interface C ++ e / ou Java. Geralmente, cabe à comunidade desenvolver wrappers específicos de linguagem para C #, Python, R, Excel e MatLab. Observe que, com cada plug-in adicional utilizado (especialmente os wrappers de APIs), há escopo para os bugs se infiltrarem no sistema. Sempre teste plugins desse tipo e garanta que eles sejam ativamente mantidos. Um indicador que vale a pena é ver quantas novas atualizações foram feitas em uma base de código nos últimos meses.
Freqüência de execução é da maior importância no algoritmo de execução. Observe que centenas de pedidos podem ser enviados a cada minuto e, como tal, o desempenho é crítico. A derrapagem será incorrida através de um sistema de execução com péssimo desempenho e isso terá um impacto dramático na lucratividade.
As linguagens com tipagem estática (veja abaixo) como C ++ / Java são geralmente ótimas para execução, mas há um compromisso em tempo de desenvolvimento, teste e facilidade de manutenção. Linguagens dinamicamente tipificadas, como Python e Perl, são geralmente "rápidas o suficiente". Certifique-se sempre de que os componentes são projetados de maneira modular (veja abaixo) para que possam ser "trocados" conforme o sistema é dimensionado.
Planejamento arquitetônico e processo de desenvolvimento.
Os componentes de um sistema de negociação, seus requisitos de frequência e volume foram discutidos acima, mas a infra-estrutura do sistema ainda não foi coberta. Aqueles que atuam como comerciantes de varejo ou que trabalham em um pequeno fundo provavelmente estarão "usando muitos chapéus". Será necessário cobrir o modelo alfa, os parâmetros de gerenciamento de risco e execução, e também a implementação final do sistema. Antes de aprofundar em linguagens específicas, o design de uma arquitetura de sistema ideal será discutido.
Separação de preocupações.
Uma das decisões mais importantes que devem ser tomadas no início é como "separar as preocupações" de um sistema de negociação. No desenvolvimento de software, isso significa essencialmente dividir os diferentes aspectos do sistema de negociação em componentes modulares separados.
Ao expor as interfaces em cada um dos componentes, é fácil trocar partes do sistema por outras versões que auxiliem o desempenho, a confiabilidade ou a manutenção, sem modificar nenhum código de dependência externo. Essa é a "melhor prática" para esses sistemas. Para estratégias em freqüências mais baixas, tais práticas são recomendadas. Para negociação de ultra alta frequência, o livro de regras pode ter que ser ignorado em detrimento do ajuste do sistema para um desempenho ainda maior. Um sistema mais fortemente acoplado pode ser desejável.
Criar um mapa de componentes de um sistema de negociação algorítmica vale um artigo em si. No entanto, uma abordagem ideal é garantir que haja componentes separados para as entradas de dados de mercado históricas e em tempo real, armazenamento de dados, API de acesso a dados, backtester, parâmetros estratégicos, construção de portfólio, gerenciamento de risco e sistemas automatizados de execução.
Por exemplo, se o armazenamento de dados em uso estiver atualmente com baixo desempenho, mesmo em níveis significativos de otimização, ele poderá ser substituído com reescritas mínimas para a API de acesso a dados ou acesso a dados. Tanto quanto o backtester e componentes subseqüentes estão em causa, não há diferença.
Outro benefício dos componentes separados é que ele permite que uma variedade de linguagens de programação seja usada no sistema geral. Não há necessidade de se restringir a um único idioma se o método de comunicação dos componentes for independente de idioma. Este será o caso se eles estiverem se comunicando via TCP / IP, Zero ou algum outro protocolo independente de linguagem.
Como um exemplo concreto, considere o caso de um sistema de backtesting sendo escrito em C ++ para desempenho "processamento de números", enquanto o gerenciador de portfólio e sistemas de execução são escritos em Python usando SciPy e IBPy.
Considerações de desempenho.
O desempenho é uma consideração significativa para a maioria das estratégias de negociação. Para estratégias de maior frequência, é o fator mais importante. "Desempenho" abrange uma ampla gama de problemas, como velocidade de execução algorítmica, latência de rede, largura de banda, E / S de dados, simultaneidade / paralelismo e dimensionamento. Cada uma dessas áreas é coberta individualmente por grandes livros didáticos, portanto, este artigo apenas arranhará a superfície de cada tópico. A arquitetura e a escolha de idiomas serão agora discutidas em termos de seus efeitos no desempenho.
A sabedoria predominante, como afirma Donald Knuth, um dos pais da Ciência da Computação, é que "a otimização prematura é a raiz de todo o mal". Isso é quase sempre o caso - exceto quando se constrói um algoritmo de negociação de alta frequência! Para aqueles que estão interessados ​​em estratégias de baixa frequência, uma abordagem comum é construir um sistema da maneira mais simples possível e apenas otimizar à medida que os gargalos começam a aparecer.
As ferramentas de criação de perfil são usadas para determinar onde os gargalos surgem. Os perfis podem ser feitos para todos os fatores listados acima, seja em um ambiente MS Windows ou Linux. Existem muitas ferramentas de sistema operacional e idioma disponíveis para isso, bem como utilitários de terceiros. A escolha da língua será agora discutida no contexto do desempenho.
C ++, Java, Python, R e MatLab contêm bibliotecas de alto desempenho (como parte de seus padrões ou externamente) para estrutura de dados básica e trabalho algorítmico. O C ++ é fornecido com a Biblioteca de Modelos Padrão, enquanto o Python contém o NumPy / SciPy. Tarefas matemáticas comuns são encontradas nessas bibliotecas e raramente é benéfico escrever uma nova implementação.
Uma exceção é se a arquitetura de hardware altamente personalizada for necessária e um algoritmo estiver fazendo uso extensivo de extensões proprietárias (como caches personalizados). No entanto, muitas vezes a "reinvenção da roda" desperdiça tempo que poderia ser mais bem gasto desenvolvendo e otimizando outras partes da infraestrutura de negociação. O tempo de desenvolvimento é extremamente precioso, especialmente no contexto de desenvolvedores únicos.
A latência é frequentemente uma questão do sistema de execução, pois as ferramentas de pesquisa geralmente estão situadas na mesma máquina. Para o primeiro, a latência pode ocorrer em vários pontos ao longo do caminho de execução. Os bancos de dados devem ser consultados (latência de disco / rede), os sinais devem ser gerados (operacional, latência do sistema de mensagens kernal), sinais de negociação enviados (latência da NIC) e pedidos processados ​​(latência interna do sistema de troca).
Para operações de frequência mais alta, é necessário tornar-se intimamente familiarizado com a otimização do kernal, bem como com a otimização da transmissão da rede. Esta é uma área profunda e está significativamente além do escopo do artigo, mas se um algoritmo UHFT for desejado, esteja ciente da profundidade do conhecimento necessário!
O cache é muito útil no kit de ferramentas de um desenvolvedor de comércio quantitativo. O armazenamento em cache se refere ao conceito de armazenamento de dados acessados ​​com freqüência de uma maneira que permite acesso de melhor desempenho, em detrimento do possível staleness dos dados. Um caso de uso comum ocorre no desenvolvimento da Web ao obter dados de um banco de dados relacional baseado em disco e colocá-lo na memória. Quaisquer solicitações subsequentes para os dados não precisam "atingir o banco de dados" e, portanto, os ganhos de desempenho podem ser significativos.
Para situações de negociação, o armazenamento em cache pode ser extremamente benéfico. Por exemplo, o estado atual de um portfólio de estratégias pode ser armazenado em um cache até que seja reequilibrado, de modo que a lista não precise ser regenerada em cada loop do algoritmo de negociação. Essa regeneração provavelmente será uma operação alta de CPU ou E / S de disco.
No entanto, o armazenamento em cache não é isento de seus próprios problemas. A regeneração dos dados em cache de uma só vez, devido à natureza volátil do armazenamento em cache, pode colocar uma demanda significativa na infraestrutura. Outro problema é o empilhamento de cães, em que múltiplas gerações de uma nova cópia de cache são realizadas sob uma carga extremamente alta, o que leva a uma falha em cascata.
Alocação de memória dinâmica é uma operação cara na execução de software. Assim, é imperativo que os aplicativos de negociação de desempenho mais alto conheçam bem como a memória está sendo alocada e desalocada durante o fluxo do programa. Novos padrões de linguagem, como Java, C # e Python, executam a coleta automática de lixo, que se refere à desalocação da memória alocada dinamicamente quando os objetos saem do escopo.
A coleta de lixo é extremamente útil durante o desenvolvimento, pois reduz os erros e ajuda na legibilidade. No entanto, muitas vezes é sub-ótimo para certas estratégias de negociação de alta frequência. A coleta de lixo personalizada é geralmente desejada para esses casos. Em Java, por exemplo, ajustando o coletor de lixo e a configuração de heap, é possível obter alto desempenho para estratégias de HFT.
O C ++ não fornece um coletor de lixo nativo e, portanto, é necessário manipular toda alocação / desalocação de memória como parte da implementação de um objeto. Embora potencialmente propenso a erros (potencialmente levando a ponteiros pendentes), é extremamente útil ter um controle refinado de como os objetos aparecem no heap para determinados aplicativos. Ao escolher um idioma, certifique-se de estudar como o coletor de lixo funciona e se ele pode ser modificado para otimizar um determinado caso de uso.
Muitas operações em sistemas de negociação algorítmica são passíveis de paralelização. Isto refere-se ao conceito de realizar múltiplas operações programáticas ao mesmo tempo, isto é, em "paralelo". Os chamados algoritmos "embarassingly parallel" incluem etapas que podem ser calculadas de forma totalmente independente de outras etapas. Certas operações estatísticas, como as simulações de Monte Carlo, são um bom exemplo de algoritmos embarassingly paralelos, pois cada sorteio aleatório e subseqüente operação de caminho podem ser computados sem o conhecimento de outros caminhos.
Outros algoritmos são apenas parcialmente paralelizáveis. Simulações de dinâmica de fluidos são um exemplo, onde o domínio de computação pode ser subdividido, mas, em última instância, esses domínios devem se comunicar entre si e, assim, as operações são parcialmente sequenciais. Os algoritmos paralelizáveis ​​estão sujeitos à Lei de Amdahl, que fornece um limite superior teórico para o aumento de desempenho de um algoritmo paralelizado quando sujeito a processos separados por $ N $ (por exemplo, em um núcleo ou encadeamento da CPU).
A paralelização tornou-se cada vez mais importante como um meio de otimização, uma vez que as velocidades de clock do processador estagnaram, pois os processadores mais recentes contêm muitos núcleos com os quais executar cálculos paralelos. O aumento do hardware gráfico do consumidor (predominantemente para videogames) levou ao desenvolvimento de Unidades de Processamento Gráfico (Graphical Processing Units - GPUs), que contêm centenas de "núcleos" para operações altamente concorrentes. Essas GPUs agora são muito acessíveis. Estruturas de alto nível, como o CUDA da Nvidia, levaram à adoção generalizada na academia e nas finanças.
Esse hardware GPU geralmente é adequado apenas para o aspecto de pesquisa de finanças quantitativas, enquanto outros hardwares mais especializados (incluindo Field-Programmable Gate Arrays - FPGAs) são usados ​​para (U) HFT. Atualmente, os idiomas mais modernos suportam um grau de simultaneidade / multithreading. Assim, é fácil otimizar um backtester, já que todos os cálculos são geralmente independentes dos demais.
O dimensionamento em engenharia de software e operações refere-se à capacidade do sistema de manipular cargas crescentes consistentemente na forma de solicitações maiores, maior uso do processador e mais alocação de memória. No comércio algorítmico, uma estratégia é capaz de escalonar se puder aceitar maiores quantidades de capital e ainda produzir retornos consistentes. A pilha de tecnologia de negociação é dimensionada se puder suportar maiores volumes de negócios e maior latência, sem gargalos.
Embora os sistemas devam ser projetados para escalar, muitas vezes é difícil prever antecipadamente onde ocorrerá um gargalo. Registro, testes, criação de perfil e monitoramento rigorosos ajudarão muito a permitir que um sistema seja dimensionado. Os próprios idiomas são geralmente descritos como "não escaláveis". Isso geralmente é resultado de desinformação, e não de fatos concretos. É a pilha total de tecnologia que deve ser verificada para escalabilidade, não para o idioma. É claro que certas linguagens têm um desempenho maior do que outras em casos de uso específicos, mas uma linguagem nunca é "melhor" que outra em todos os sentidos.
Um meio de gerenciar a escala é separar as preocupações, como dito acima. De modo a introduzir ainda a capacidade de lidar com "picos" no sistema (isto é, volatilidade súbita que desencadeia uma série de operações), é útil criar uma "arquitectura de fila de mensagens". Isso significa simplesmente colocar um sistema de fila de mensagens entre os componentes para que os pedidos sejam "empilhados" se um determinado componente não puder processar muitas solicitações.
Em vez de solicitações serem perdidas, elas são simplesmente mantidas em uma pilha até que a mensagem seja manipulada. Isso é particularmente útil para enviar negociações para um mecanismo de execução. Se o motor estiver sofrendo sob latência pesada, ele fará o backup dos negócios. Uma fila entre o gerador de sinais de negociação e a API de execução aliviará essa questão às custas do escorregamento comercial em potencial. Um corretor de fila de mensagens de código aberto bem respeitado é o Rabbit.
Hardware e Sistemas Operacionais.
O hardware que executa sua estratégia pode ter um impacto significativo na lucratividade de seu algoritmo. Este não é um problema restrito a operadores de alta frequência. Uma má escolha em hardware e sistema operacional pode levar a uma falha da máquina ou reinicializar no momento mais inoportuno. Assim, é necessário considerar onde seu aplicativo irá residir. A escolha é geralmente entre uma máquina desktop pessoal, um servidor remoto, um provedor "nuvem" ou um servidor co-localizado em troca.
As máquinas desktop são simples de instalar e administrar, especialmente com sistemas operacionais mais novos e amigáveis ​​ao usuário, como o Windows 7/8, o Mac OSX e o Ubuntu. Sistemas de desktop possuem algumas desvantagens significativas, no entanto. O principal é que as versões dos sistemas operacionais projetados para máquinas de mesa provavelmente exigirão reinicializações / patches (e geralmente no pior dos casos!). Eles também usam mais recursos computacionais pela necessidade de uma interface gráfica de usuário (GUI).
Utilizar hardware em um ambiente doméstico (ou escritório local) pode levar a problemas de conectividade à Internet e de tempo de atividade. O principal benefício de um sistema de desktop é que a potência computacional significativa pode ser adquirida pela fração do custo de um servidor dedicado remoto (ou sistema baseado em nuvem) de velocidade comparável.
Um servidor dedicado ou uma máquina baseada em nuvem, embora frequentemente mais cara do que uma opção de desktop, permite uma infraestrutura de redundância mais significativa, como backups automáticos de dados, a capacidade de garantir mais tempo de atividade e monitoramento remoto. Eles são mais difíceis de administrar, pois exigem a capacidade de usar os recursos de login remoto do sistema operacional.
No Windows, isso geralmente é feito através do protocolo RDP (Remote Desktop Protocol) da GUI. Em sistemas baseados em Unix, a linha de comando Secure SHell (SSH) é usada. A infra-estrutura de servidor baseada em Unix é quase sempre baseada em linha de comando, o que imediatamente torna as ferramentas de programação baseadas em GUI (como MatLab ou Excel) inutilizáveis.
Um servidor co-localizado, como a frase é usada no mercado de capitais, é simplesmente um servidor dedicado que reside dentro de uma troca a fim de reduzir a latência do algoritmo de negociação. Isso é absolutamente necessário para certas estratégias de negociação de alta frequência, que dependem de baixa latência para gerar alfa.
O aspecto final da escolha de hardware e a escolha da linguagem de programação é a independência de plataforma. Existe a necessidade de o código ser executado em vários sistemas operacionais diferentes? O código foi projetado para ser executado em um tipo específico de arquitetura de processador, como o Intel x86 / x64 ou será possível executar em processadores RISC, como os fabricados pela ARM? Essas questões serão altamente dependentes da frequência e do tipo de estratégia que está sendo implementada.
Resiliência e Teste.
Uma das melhores maneiras de perder muito dinheiro em negociações algorítmicas é criar um sistema sem resiliência. Isso se refere à durabilidade do sistema quando sujeito a eventos raros, como falências de corretagem, volatilidade excessiva súbita, tempo de inatividade em toda a região para um provedor de servidor em nuvem ou a exclusão acidental de um banco de dados comercial inteiro. Anos de lucros podem ser eliminados em segundos com uma arquitetura mal projetada. É absolutamente essencial considerar problemas como depuração, teste, registro, backups, alta disponibilidade e monitoramento como componentes principais de seu sistema.
É provável que, em qualquer aplicação de negociação quantitativa personalizada razoavelmente complicada, pelo menos 50% do tempo de desenvolvimento seja gasto em depuração, teste e manutenção.
Quase todas as linguagens de programação vêm com um depurador associado ou possuem alternativas de terceiros bem respeitadas. Em essência, um depurador permite a execução de um programa com a inserção de pontos de interrupção arbitrários no caminho do código, que interrompem temporariamente a execução para investigar o estado do sistema. O principal benefício da depuração é que é possível investigar o comportamento do código antes de um ponto de falha conhecido.
A depuração é um componente essencial na caixa de ferramentas para analisar erros de programação. No entanto, eles são mais amplamente usados ​​em linguagens compiladas, como C ++ ou Java, já que linguagens interpretadas, como Python, são mais fáceis de depurar devido a menos instruções LOC e menos detalhadas. Apesar dessa tendência, o Python vem com o pdb, que é uma ferramenta sofisticada de depuração. O Microsoft Visual C ++ IDE possui extensos utilitários de depuração de GUI, enquanto para o programador Linux C ++ de linha de comando, existe o depurador gdb.
Testes em desenvolvimento de software referem-se ao processo de aplicar parâmetros e resultados conhecidos a funções, métodos e objetos específicos dentro de uma base de código, para simular comportamento e avaliar múltiplos caminhos de código, ajudando a garantir que um sistema se comporta como deveria. Um paradigma mais recente é conhecido como Test Driven Development (TDD), em que o código de teste é desenvolvido em relação a uma interface especificada sem implementação. Antes da conclusão da base de código real, todos os testes falharão. Como o código é escrito para "preencher os espaços em branco", os testes acabarão por passar, ponto em que o desenvolvimento deve cessar.
O TDD requer um design de especificação inicial extenso, bem como um grau saudável de disciplina, a fim de realizar com sucesso. Em C ++, o Boost fornece uma estrutura de teste de unidade. Em Java, a biblioteca JUnit existe para cumprir o mesmo propósito. O Python também possui o módulo unittest como parte da biblioteca padrão. Muitas outras linguagens possuem estruturas de teste de unidade e muitas vezes há várias opções.
Em um ambiente de produção, o registro sofisticado é absolutamente essencial. O registro refere-se ao processo de saída de mensagens, com vários graus de gravidade, em relação ao comportamento de execução de um sistema para um arquivo simples ou banco de dados. Os logs são uma "primeira linha de ataque" ao procurar um comportamento inesperado do tempo de execução do programa. Infelizmente, as deficiências de um sistema de extração de madeira tendem a ser descobertas após o fato! Assim como os backups discutidos abaixo, um sistema de registro deve ser considerado antes de um sistema ser projetado.
Tanto o Microsoft Windows quanto o Linux vêm com um amplo recurso de registro do sistema, e as linguagens de programação tendem a ser fornecidas com bibliotecas de registro padrão que cobrem a maioria dos casos de uso. É sempre aconselhável centralizar as informações de registro para analisá-las em uma data posterior, pois elas podem levar a idéias sobre como melhorar o desempenho ou a redução de erros, o que quase certamente terá um impacto positivo em seus retornos de negociação.
Embora o registro de um sistema forneça informações sobre o que aconteceu no passado, o monitoramento de um aplicativo fornecerá informações sobre o que está acontecendo no momento. Todos os aspectos do sistema devem ser considerados para monitoramento. Métricas no nível do sistema, como uso do disco, memória disponível, largura de banda da rede e uso da CPU, fornecem informações básicas sobre carga.
Métricas de negociação, tais como preços / volume anormais, levantamentos repentinos rápidos e exposição de contas para diferentes setores / mercados também devem ser continuamente monitorados. Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method (email, SMS, automated phone call) depending upon the severity of the metric.
System monitoring is often the domain of the system administrator or operations manager. However, as a sole trading developer, these metrics must be established as part of the larger design. Many solutions for monitoring exist: proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case.
Backups and high availability should be prime concerns of a trading system. Consider the following two questions: 1) If an entire production database of market data and trading history was deleted (without backups) how would the research and execution algorithm be affected? 2) If the trading system suffers an outage for an extended period (with open positions) how would account equity and ongoing profitability be affected? The answers to both of these questions are often sobering!
It is imperative to put in place a system for backing up data and also for testing the restoration of such data. Many individuals do not test a restore strategy. If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment?
Similarly, high availability needs to be "baked in from the start". Redundant infrastructure (even at additional expense) must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems. I won't delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system.
Choosing a Language.
Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system. The next stage is to discuss how programming languages are generally categorised.
Type Systems.
When choosing a language for a trading stack it is necessary to consider the type system . The languages which are of interest for algorithmic trading are either statically - or dynamically-typed . A statically-typed language performs checks of the types (e. g. integers, floats, custom classes etc) during the compilation process. Such languages include C++ and Java. A dynamically-typed language performs the majority of its type-checking at runtime. Such languages include Python, Perl and JavaScript.
For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors. However, type-checking doesn't catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations. 'Dynamic' languages (i. e. those that are dynamically-typed) can often lead to run-time errors that would otherwise be caught with a compilation-time type-check. For this reason, the concept of TDD (see above) and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone.
Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type (and thus memory requirements) are known at compile-time. In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit. Libraries for dynamic languages, such as NumPy/SciPy alleviate this issue due to enforcing a type within arrays.
Open Source or Proprietary?
One of the biggest choices available to an algorithmic trading developer is whether to use proprietary (commercial) or open source technologies. Existem vantagens e desvantagens para ambas as abordagens. It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing/maintenance costs.
The Microsoft. NET stack (including Visual C++, Visual C#) and MathWorks' MatLab are two of the larger proprietary choices for developing custom algorithmic trading software. Both tools have had significant "battle testing" in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds.
Microsoft and MathWorks both provide extensive high quality documentation for their products. Further, the communities surrounding each tool are very large with active web forums for both. The. NET software allows cohesive integration with multiple languages such as C++, C# and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ. MatLab also has many plugins/libraries (some free, some commercial) for nearly any quantitative research domain.
There are also drawbacks. With either piece of software the costs are not insignificant for a lone trader (although Microsoft does provide entry-level version of Visual Studio for free). Microsoft tools "play well" with each other, but integrate less well with external code. Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned.
MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading. The main issue with proprietary products is the lack of availability of the source code. This means that if ultra performance is truly required, both of these tools will be far less attractive.
Open source tools have been industry grade for sometime. Much of the alternative asset space makes extensive use of open-source Linux, MySQL/PostgreSQL, Python, R, C++ and Java in high-performance production roles. However, they are far from restricted to this domain. Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats.
The main benefit of using interpreted languages is the speed of development time. Python and R require far fewer lines of code (LOC) to achieve similar functionality, principally due to the extensive libraries. Further, they often allow interactive console based development, rapidly reducing the iterative development process.
Given that time as a developer is extremely valuable, and execution speed often less so (unless in the HFT space), it is worth giving extensive consideration to an open source technology stack. Python and R possess significant development communities and are extremely well supported, due to their popularity. Documentation is excellent and bugs (at least for core libraries) remain scarce.
Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces. A typical Linux server (such as Ubuntu) will often be fully command-line oriented. In addition, Python and R can be slow for certain execution tasks. There are mechanisms for integrating with C++ in order to improve execution speeds, but it requires some experience in multi-language programming.
While proprietary software is not immune from dependency/versioning issues it is far less common to have to deal with incorrect library versions in such environments. Open source operating systems such as Linux can be trickier to administer.
I will venture my personal opinion here and state that I build all of my trading tools with open source technologies. In particular I use: Ubuntu, MySQL, Python, C++ and R. The maturity, community size, ability to "dig deep" if problems occur and lower total cost ownership (TCO) far outweigh the simplicity of proprietary GUIs and easier installations. Having said that, Microsoft Visual Studio (especially for C++) is a fantastic Integrated Development Environment (IDE) which I would also highly recommend.
Batteries Included?
The header of this section refers to the "out of the box" capabilities of the language - what libraries does it contain and how good are they? This is where mature languages have an advantage over newer variants. C++, Java and Python all now possess extensive libraries for network programming, HTTP, operating system interaction, GUIs, regular expressions (regex), iteration and basic algorithms.
C++ is famed for its Standard Template Library (STL) which contains a wealth of high performance data structures and algorithms "for free". Python is known for being able to communicate with nearly any other type of system/protocol (especially the web), mostly through its own standard library. R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code (which can be found in portfolio optimisation and derivatives pricing, for instance).
Outside of the standard libraries, C++ makes use of the Boost library, which fills in the "missing parts" of the standard library. In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C++11 spec, including native support for lambda expressions and concurrency.
Python has the high performance NumPy/SciPy/Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research. Further, high-performance plugins exist for access to the main relational databases, such as MySQL++ (MySQL/C++), JDBC (Java/MatLab), MySQLdb (MySQL/Python) and psychopg2 (PostgreSQL/Python). Python can even communicate with R via the RPy plugin!
An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API. Most APIs natively support C++ and Java, but some also support C# and Python, either directly or with community-provided wrapper code to the C++ APIs. In particular, Interactive Brokers can be connected to via the IBPy plugin. If high-performance is required, brokerages will support the FIX protocol.
Conclusão.
As is now evident, the choice of programming language(s) for an algorithmic trading system is not straightforward and requires deep thought. The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries.
The benefit of a separated architecture is that it allows languages to be "plugged in" for different aspects of a trading stack, as and when requirements change. A trading system is an evolving tool and it is likely that any language choices will evolve along with it.
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Successful Algorithmic Trading.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.

Software Automatizado de Negociação: Os 4 principais (confiáveis) sistemas de negociação automática.
Todos nós gostamos de ganhar dinheiro extra, o que pode ser um benefício incrível para você e sua família. Negociar ações, opções e ações através dos Sistemas Automatizados de Negociação (ATS) pode ser uma ótima maneira de aumentar sua renda, e embora nem sempre seja fácil negociar, muitas vezes pode oferecer um bom fluxo de caixa.
Se você quiser usar o melhor serviço de investimento automatizado, Inscreva-se no TradeSpoon. É o melhor serviço de investimento que usei.
Uma explicação simples sobre o que a negociação automatizada de ações, opções ou futuros envolve seria a de que é um programa de computador capaz de criar pedidos. Em seguida, ele os envia automaticamente para um mercado ou centro de troca.
Você pode definir suas especificações e regras e permitir que o programa monitore o mercado para encontrar oportunidades de comprar e vender de acordo com essas especificações. Isso permite negociações que costumam ser rápidas, mas lucrativas e até mesmo agradáveis ​​de participar. Esses sistemas podem até ser usados ​​para negociações automatizadas de ações, pois geralmente são flexíveis em termos de seus usos.
O que procurar.
Quando você vai comprar ou se inscrever para o software, há algumas coisas que você deve procurar e tentar garantir que estejam presentes antes de se comprometer com qualquer coisa. O melhor ATS geralmente não exige que você faça o download para que você possa usá-lo, muitas vezes você será capaz de obtê-lo a partir do seu navegador.
Você pode até configurar robôs binários (um dos quais eu vou revisar aqui) que são compatíveis com um número de corretores para execução rápida. Além disso, eles são perfeitos para especialistas e iniciantes. Você também deve ter controle total sobre o que faz no software e nas negociações que decide fazer. Sempre verifique os comentários e pesquise completamente a empresa antes de continuar a negociar com eles.
Em uma nota final em relação ao que você deve procurar da ATS, muitas vezes os melhores são gratuitos, têm uma copiadora eficiente, e também têm altas taxas de ganho - então você sabe que eles provavelmente gerarão lucro para você . Aqui estão alguns comentários para algumas das empresas de software de negociação automatizadas mais confiáveis ​​no mercado, bem como um dos robôs binários que é atualmente popular.
Lembre-se sempre de pesquisar cuidadosamente uma empresa antes de se comprometer com ela, pois o mercado se abriu para alguns golpistas.
Melhor Tabela de Revisão de Software Automatizado.
Então, se você está procurando o melhor software de negociação automatizado, essas avaliações irão colocá-lo no caminho para aprender tudo o que você precisa saber para encontrar o melhor.
Software Automatizado da TradeSpoon.
Menos risco para o seu dinheiro Pode ser usado em todo o mundo Você tem a oportunidade de testar uma excelente gama de fontes.
Pode ser difícil configurar inicialmente.
Variável de preço (grátis para estudantes universitários)
Esta opção é amigável e fácil de usar, embora o preço é bastante variável, ainda tem todos os recursos necessários, com menos risco de perder dinheiro.
Etna Automatic Trading Software.
Confiável e bem conhecido como ganhou prêmios Muitos feeds de dados e alertas de texto Você é capaz de visualizar gráficos em tempo real Ampla gama de recursos adicionais disponíveis Multi-idioma.
Tem que ser instalado e baixado para usar, o sistema em si não é muito fácil de usar devido à sua fixação em clientes corporativos.
Prova gratuita - com um bônus de £ 25 - os preços são mensais variáveis.
É rápido e amigável ao encontrar o caminho de volta. Ele também ganhou um prêmio que lhe dá a confiança em seu serviço.
Software de Negociação Automatizada eSignal.
premiado serviço plataforma de negociação on-line inclui ferramentas úteis ferramenta de análise técnica ferramentas de desenho detalhado bom software e incrivelmente confiável.
custa muito dinheiro a cada mês não é totalmente automatizado.
Este premiado serviço tem uma ótima plataforma de negociação on-line que inclui muitas ferramentas úteis. although it is not fully automated there is detailed drawing tools and analysis tools to give you the best results.
Software Automatizado de Robô Opcional.
not just software but a binary robot too can use with minimal experience or effort three available systems customer care is fab great for new or experimental traders free so minimal risk.
só foi lançado este ano, portanto, não há muito feedback que tenha apenas um tipo de ativos, pares de moedas.
Este software tem muito potencial tanto como um ATS quanto um robô binário. Embora arriscar inscrever-se não seja para todos, o processo é pelo menos gratuito, portanto, há um risco mínimo.
TradeSpoon Automated Trading Software.
Esta é uma das plataformas de software de negociação mais conhecidas por aí. Tem uma ótima interface e oferece muitos recursos que você precisa, bem como suporte para traders em todo o mundo. Está bem ciente de que cada comerciante tem necessidades diferentes e oferece aos usuários a oportunidade de testar idéias antes de se aventurar no mercado aberto.
Desta forma, há menos risco em relação ao seu dinheiro. Ele permite que você crie alguma confiança e preveja melhor quais transações farão dinheiro.
É um ótimo sistema de estoque automatizado e funciona muito bem como um sistema automatizado de futuros e também funciona com o Forex.
Ele fornece uma excelente variedade de fontes ativas e índices de mercado em tempo real. Além disso, é incrivelmente amigável e fácil de usar - tornando o processo e a navegação geral muito mais fáceis para você. Ele tem um teste de 90 dias para você testá-lo e ver se você gosta de usar o ATS.
Um dos grandes recursos do TradeSpoon é que ele pode ser usado em qualquer lugar do mundo, desde que você tenha uma conexão com a Internet. Além disso, porque eles estão lá para ajudá-lo como um comerciante com precisão de dados, você ainda é capaz de fazer lucros, mesmo que a internet fique lenta ou atrasada. Além disso, você tem a oportunidade de testar estratégias em todos os tipos de mercado antes de entrar neles seriamente.
Os preços deste software são muito competitivos, o que ajuda você a gerenciar seus custos também. No geral, é um ótimo software e tem avaliações positivas em sua maioria, tanto de usuários quanto de críticos.
Etna Automatic Trading Software.
Há mais de dez anos, a Etna opera em escala internacional. Eles são pioneiros na criação de software de negociação personalizado para uma variedade de ativos, especialmente Forex e opções binárias. A principal indicação da confiabilidade e sucesso do Etna é o fato de que eles ganharam vários prêmios por seus excelentes softwares e serviços, incluindo o Best Broker for Automated da Barron’s Magazine.
Sua plataforma de negociação facilita estratégias de alto desempenho e também permite que você faça uso de sua plataforma para negociação algorítmica. Ele tem uma interface incrivelmente fácil de usar, para que você não fique confuso enquanto encontra seu caminho.
O ATS também oferece conectividade excelente para vários locais de execução, integração com uma variedade de feeds de dados de mercado e alertas de status via e-mail e SMS.
A Etna também é conhecida pela excelência em softwares personalizados para negociação de opções. Isso significa que, após o login, você poderá visualizar gráficos em tempo real para opções Forex ou binárias. Além disso, há uma ampla gama de recursos adicionais disponíveis para o trader. Algumas delas incluem coisas como uma lista de observação personalizável, notificações, alertas, um histórico e gráficos intraday, além de dados de mercado em tempo real e streaming.
Um sistema de negociação de ações também foi adicionado ao seu banco de dados, permitindo que você negocie ações e fundos mútuos. The website incorporates real-time streaming of quotes and news, as well as a multi-language user interface for international use.
As únicas desvantagens possíveis para este software fantástico são que ele precisa ser instalado e baixado para uso, e o próprio sistema não é muito fácil de usar devido à sua fixação em clientes corporativos. No entanto, devido à sua confiabilidade e reputação, é improvável que o download desse ATS represente algum risco.
Software de Negociação Automatizada eSignal.
Como o Etna, este é um ATS premiado e é tido em alta conta. Ele é preenchido com tecnologia personalizada para atender seus clientes, e a plataforma de negociação on-line oferece várias ferramentas úteis. Isso inclui ferramentas de gráficos, cotações de ações em fluxo contínuo e acesso a corretores.
Ao longo dos anos, e até recentemente, eles aprimoraram maciçamente sua funcionalidade. O software pode ser usado para criar propagação personalizada e pares usando suas sofisticadas ferramentas automatizadas de cálculo melhores e mais detalhadas. Além disso, o software inclui centenas de indicadores de análise técnica que podem ser usados ​​em todo o mundo. Além disso, existem ferramentas de desenho detalhadas para a criação de estratégias simples ou complexas que podem ser salvas e revisitadas.
É um bom software e incrivelmente confiável, mas tem algumas desvantagens que os outros não têm. Por um lado, custa um pouco de dinheiro para usar - US $ 295 por mês para ser preciso. Se você está apenas começando e novo no campo, então este não é o sistema para você. Além disso, não é totalmente automatizado e requer ferramentas para uso, tornando-o mais complexo. É definitivamente um software para aqueles que são muito mais experientes.
Opção Robot Automated Trading Software.
Este software interessante não é apenas um ATS, mas também um robô binário. Projetado por traders experientes, você pode tirar o máximo proveito da negociação de opções automatizadas com o mínimo esforço ou experiência. O software também é baseado na web, portanto não há necessidade de baixá-lo para começar. Apesar de só ser lançado este ano; está crescendo em popularidade em todo o mundo.
Ele tem uma ampla gama de recursos, incluindo negociação automatizada de ações, e tem muito a oferecer em termos de corretores. Ele criou uma parceria com um grande número de corretores líderes para construir um relacionamento forte e confiável com você. Antes de começar, você será solicitado a escolher um corretor, mas é fácil investigá-lo com antecedência.
Eles possuem três sistemas de negociação para traders com diferentes níveis de experiência. Além disso, o atendimento ao cliente é absolutamente soberbo. O software em si é gratuito e não há falsas promessas.
Em vez disso, ele se concentra em como você pode utilizar melhor o software. Ele também oferece muitas informações sobre como ele funciona e como você pode personalizá-lo, por isso é mais fácil para você entender isso.
No entanto, existem algumas desvantagens para este novo software inovador. A primeira é, naturalmente, que o software não possui atualmente um histórico. É mais um risco do que o outro ATS listado aqui, pois só foi lançado este ano e, portanto, ainda não tem uma base firme no mundo.
Currently, it also only has one type of asset, which are currency pairs. No entanto, foi relatado que eles estão trabalhando em coisas como commodities, índices e ações. Isso é ótimo para quem gosta de trocar vários tipos de moeda.
Somente novas contas são permitidas também. Então, depois de se inscrever e escolher o seu corretor, você deve criar uma conta totalmente nova. No entanto, é ótimo para comerciantes novos ou experimentais. Talvez a única desvantagem realmente preocupante seja o fato de que não há informações sobre os desenvolvedores em nenhum lugar do site, nem mesmo seus nomes. Isso realmente pode levantar suspeitas entre algumas pessoas.
Este software tem muito potencial tanto como um ATS quanto um robô binário. Embora a inscrição não seja para todos, o processo é pelo menos gratuito, portanto, há um risco mínimo. No entanto, é certamente um para assistir com o passar do tempo e constrói uma reputação mais forte para si. Quando tiver um número maior de comentários e, talvez, quando estiver disponível fora da Europa, talvez valha a pena dar uma olhada se você não quiser arriscar agora.
Concluir.
O software de negociação automatizado pode ser um ótimo investimento, além de ser muito divertido. Eles podem ajudá-lo a ganhar uma pequena renda extra a cada mês (e para alguns muito mais do que isso). Definitivamente há riscos quando você começa a negociar, como há com todos os investimentos dessa natureza, mas há certos riscos que você pode tentar evitar.
Lembre-se sempre de pesquisar uma empresa com muita atenção primeiro e nunca tenha medo de chamá-la para fazer perguntas. Com um grande número de fraudes on-line (especialmente Brit Method e Aussie Method), você deve sempre ser cauteloso ao inscrever-se em sites de ATS - especialmente se eles parecerem bons demais para ser verdade.
The automated trading software mentioned here is generally reliable and trustworthy, and certainly worth looking into if you are wishing to start trading.
Muitas dessas empresas já existem há algum tempo, e estabeleceram uma base de clientes e acumularam algumas revisões fantásticas on-line. Espero que você encontre o ATS perfeito para você aqui, e lembre-se sempre de que não há nada de errado em ligá-los e conversar antes de se inscrever.
Editor's Note.
Even with all that automation, you will need some human insight. Sugerimos que você assine as atualizações dos comerciantes mais bem-sucedidos da empresa. John Thomas, do Diário de um Mad Hedge Fund Trader, é um desses recursos e oferece alertas comerciais sobre as ações que ele realmente compra. Assine aqui.

History of TradeStation and EasyLanguage.
The history of TradeStation and EasyLanguage is the story of the american dream. Brothers William and Rafael Cruz came to the United States together from Cuba. They trained to become award-winning classical violinists together. Classical music was not in their future though as it seems divine forces had another plan – the music of the markets. When Bill (William) was 16, a phone call changed his destiny. A futures broker tried to cold-call his father but Bill took the call. That is how Bill learned about futures trading. Since he was only 16, he would have to wait for two more years to trade, however the trading bug bit him. During these two years he read books about trading and tried to learn as much as he could before his 18th birthday when he could start trading. When he turned 18, both he and Ralph (Rafael) pooled $2400 into a futures account and traded pork bellies.
The cover page for System Writer.
They started well but ultimately lost all the money in a month or so. They still believed in trading and knew there must be a better way. They went to the library, got pork bellies data and made hand charts. They then used these hand charts to test ideas. They added arrows – up for buy and down for sell – to these hand drawn charts in order to test their ideas. Drawing the charts took a lot of time so they came up with the idea of using plastic sheets over the chart and using erasable markers. This way they did not have to redraw the charts and they could test many ideas. Still doing hand charting and analysis is very time consuming and they figured that computers might be able to help automate that process. This all happened around 1979. While in college, Bill met Kip Irvine, a music major who had a minor in computers. Since in those days, it was hard to get your musical compositions played, he then cut a deal with Kip to play his compositions for him if he programmed his trading ideas. The systems were hardcoded and coding them took quite a bit of time. The problem was that Bill had more ideas than Kip had time. This meant that Bill who had never coded in his life, had to find a way he could do this himself. He thought that if he could develop an easy way to express trading ideas he could develop his systems himself. This was the seed of the development of EasyLanguage. Bill and Ralph decided to start a company and began hiring talented people to program the software. The original development team included Kip Irvine, Sam Tennis, Peter Parandjuk and Liren Ji in engineering. Ruben Triana and Darla Tuttle were in product management. They developed the early stages of System Writer, which originated from Bill and Ralph’s need to develop and backtest their own trading ideas.
A page from the old System Writer manual.
These ideas primarily involved trading pork bellies and other markets. They also briefly tried to market trading systems but their real passion was developing this backtesting software. They released System Writer one week before Black Monday in 1987. The paradigm which System Writer used was written to process one bar at a time and variables were assigned past values based on previous bars with bar 0 being the current bar. This was an outgrowth of the fact that Bill originally hand charted everything so he thought in terms of bars and adding to his analysis one day at a time. In addition, System Writer allowed you to write your own functions. This was an incredible advancement! Now a trader with little programming knowledge could extend the product himself and develop his own trading ideas.
History of TradeStation, Omega Research Founded.
This new startup company called Omega Research (eventually renamed TradeStation), had a bright future but started out roughly. People were not aware of backtesting and many traders did not yet realize their need for the product. The reason behind it was backtesting at least told you what did not work. Past performance was no guarantee of future results; yet if a system did not backtest well, it would not work in the future. Once someone figured out the value of backtesting their only option was System Writer.
They then worked on System Writer Plus which was released in 1989. Bruce Babcock of CTCR fame helped spread the word about backtesting in the formative years of the company. This happened after Bill flew out and showed him System Writer. Despite the fact that selling an idea to Bruce was not easy, he became one of System Writer’s biggest fans, and wrote in his glowing review of it in Futures Magazine in 1989: “System Writer is the system trading software equivalent of putting a man on the moon.”
The original definition of EasyLanguage.
The big new features in System Writer Plus were enhancements to both charts and EasyLanguage. The feature of adding charts was not just for viewing prices, but they also allowed you to improve your system. Since System Writer put trading signals on the charts, you could view indicators and signals. This would allow a system designer to try and find ways to improve the system using the chart visuals. In addition, System Writer Plus used the Turbo Pascal (Borland) compiler under the hood, so the Easy Language code could be compiled and thus execute very fast. All of the Easy Language constructs were translated into Turbo Pascal. Another improvement was the concept of the signal. A signal was a given entry or exit rule. System Writer and System Writer Plus allowed you to combine multiple signals and optimize them over various parameters to develop your systems. The aspect that made this significant was that signals were reusable components.
Definition for Spindle Bottom/Top.
During these early years Bill and Ralph traveled almost every weekend to spread the word about backtesting and System Writer. Also instrumental in spreading the gospel of system trading and backtesting was Charlie Wright, a famous trader and fund manager who gave many seminars with Bill and Ralph.
In 1991, Omega Research Launched TradeStation. TradeStation added intra-day analysis and also added a real-time aspect. This was a first as it finally allowed small traders to trade in real time. The importance of TradeStation to day-trading was akin to the importance of electricity to power the light bulb. It was the tool which brought day-trading to small-time traders, who were often just trading out of their home. During this time, traders would get intra-day data from satellite feeds. In the early 1990’s, Omega Research saved historical data that was available thought satellite feeds on TradeStation. Bill also had another vision at this time. He began saving tick by tick data when disk space was still very expensive as they envisioned that day-trading would become the most popular type of trading in the future. Day-trading successfully meant people would require the data he saved to do backtesting of intra-day strategies not only in various timeframes (e. g. 5 minute data), but also tick by tick data. In a way, Bill saw the future of real time and High Frequency Trading (HFT) in the same way that another Bill around this time saw that everyone would own a computer someday.
PercentR (%R) Oscillator Entry.
The next major breakthrough was in 1993 – a time when institutional vendors sold Forex and international data. Reuters approached them to buy out the company. Bill and Ralph were having so much fun with it, they refused saying that it was not for sale. Bill and Ralph told them they could license it and they said no. A few years later Dow Jones Telerate approached them and offered to buy them out. Once again Bill and Ralph would not sell and said no. A year later they were back and they licensed TradeStation. Dow Jones Telerate launched TradeStation as a premium service to institutional clients in 1996 which gave traders access to both Forex and international data for the first time.
In 1996 Sal Sredni joined the company as Vice President of Operations (eventually promoted to CEO when Bill and Ralph retired from the company in 2007). In 1997, Omega Research went public and renamed the company TradeStation. In 1999, TradeStation launched the online version, which proved to be a big step ahead as TradeStation was delivering data over the internet instead of requiring a satellite dish. Remember that back in the 1990’s, Bill was saving intra-day data. This was the reason. He foresaw this day and spent the money years before people even needed it to make sure he had the data when the time was right. Hence, in many ways, he is the Bill Gates of Intra-day trading.
Prior to 2001 when a system generated a trade you saw an alert. This changed when TradeStation added real time execution in TradeStation 6.0 and brought traders off the floor. In some ways this marked the end of pit trading and the birth of all electronic markets. Also in 2001, they launched TradeStation Securities. TradeStation 6.0 for institutional and active trader whose features such as custom strategy design and testing, automated trading and direct-access execution of stock trades, were made for the first time available over the internet in real time. In 2003, TradeStation 7.0 was released and offered execution of futures trades. Later that year they added forex analytics and execution. TradeStation 8.0 added options execution and in 2005, they become a self clearing firm for options.
In 2006, TradeStation Europe Limited was approved as an introducing broker by the UK Financial Services Authority (FSA). In 2007, the fundamental data was included in the historical database for strategy testing and integrated Forex execution was launched. In September of 2009, TradeStation Prime Services was launched. In 2010, TradeStation 9.0 and Eurex execution was launched. By the end of 2010, the company reported revenue of $129.0 million, net income of $11.4 million, client assets in excess of $2.3 billion with over 47,000 brokerage accounts. In 2011, Japan’s Monex Group acquired TradeStation Group. TradeStation also launched TradeStation Forex and acquired IBFX Holdings, LLC. In Barron’s review of online brokers, TradeStation earned the highest overall ranking of 4 ½ stars in 2012. Online web app for trading US Equities in Japan was also released.
Another aspect that made TradeStation special was the people. When looking back at the history of the company, it’s easy to see that they all loved what they were doing and the users of the product loved it. In addition, during the 1990’s, they also developed a third party solution provider network and I was one of the developers. Darla Tuttle, who ran the program in the 1990’s helped build this family. These addins made TradeStation even more popular not only due to the added functionality but also for providing livelihood for programmers and traders who created and sold them. It was nice that he even thanked me for what I did in helping make TradeStation popular during this interview. In fact during the mid to late 1990’s, Omega Research had their own magazine and I was on the cover and featured in an issue in 1998.
Bill and Ralph created a team and product which changed the face of trading. Bill had a vision when he saw the growth of real time trading and electronic markets. Indeed, this vision came true by paving the way for all electronic markets, including HFT trading.
This article is based the original notes from an interview Murray Ruggiero did with Bill Cruz and Salomon Sredni during July 2013, for part of his Futures Magazine article on the history of backtesting.
Featured Product.
Free TradeStation Code.
Get free, simplified versions of the the tools that the TradeStation experts use in their daily research and system building. These tools help you learn EasyLanguage as they are entirely open source and let you build complex systems without needing to know how to code.
All you need to provide is a name and e-mail address. No credit card or address required!

System writer trading software


powered by eSignal/IDC data.
Market Data Supplied by esignal/IDC.
Traders World Review.
". The charting function of the trading software is excellent. It is no wonder that Dan Zanger likes it. easy to use interface. on-chart indicator library with a Color Barometer to give you an instant indication of the status of each chart. "
Larry Jacobs, Editor Tradersworld magazine.
Stock Trading Software Reviews.
". The system is very cheap at around $80 per month with so many amazing features. The user interface is very professional and one can find relatives of a stock in the group and sector tree easily and create baskets of symbols and run studies on those baskets. "
Stocks & Commodities Magazine Review.
". the screening language is far less difficult than the programming language used with many other technical analysis software programs. "
David Penn, Staff Writer at stocks & commodities magazine.
Money Management Made Easy Review.
". They offer a free trial so you can test drive the program and see if it’s right for you. But be aware this one is for serious traders who know a little something about the market. but its features are incredible. . "

System writer trading software


powered by eSignal/IDC data.
Market Data Supplied by esignal/IDC.
Traders World Review.
". The charting function of the trading software is excellent. It is no wonder that Dan Zanger likes it. easy to use interface. on-chart indicator library with a Color Barometer to give you an instant indication of the status of each chart. "
Larry Jacobs, Editor Tradersworld magazine.
Stock Trading Software Reviews.
". The system is very cheap at around $80 per month with so many amazing features. The user interface is very professional and one can find relatives of a stock in the group and sector tree easily and create baskets of symbols and run studies on those baskets. "
Stocks & Commodities Magazine Review.
". the screening language is far less difficult than the programming language used with many other technical analysis software programs. "
David Penn, Staff Writer at stocks & commodities magazine.
Money Management Made Easy Review.
". They offer a free trial so you can test drive the program and see if it’s right for you. But be aware this one is for serious traders who know a little something about the market. but its features are incredible. . "

Mais um passo.
Por favor, preencha a verificação de segurança para acessar a velocidade da luz.
Por que eu tenho que completar um CAPTCHA?
A conclusão do CAPTCHA prova que você é humano e concede acesso temporário à propriedade da web.
O que posso fazer para evitar isso no futuro?
Se você estiver em uma conexão pessoal, como em casa, poderá executar uma verificação antivírus no seu dispositivo para garantir que ele não esteja infectado por malware.
Se você estiver em um escritório ou em uma rede compartilhada, poderá solicitar ao administrador da rede que execute uma verificação na rede procurando dispositivos configurados ou infectados incorretamente.
Cloudflare Ray ID: 40c2ae514d20b6da • Seu IP: 78.109.24.111 & bull; Performance & amp; segurança pela Cloudflare.

Комментариев нет:

Отправить комментарий