Saturday 7 April 2018

Estratégias de negociação automatizadas usando c #


Começando: Construindo um Sistema de Negociação Totalmente Automatizado.
Nos últimos 6 meses, fiquei focado no processo de construção da pilha de tecnologia completa de um sistema de negociação automatizado. Eu encontrei muitos desafios e aprendi muito sobre os dois métodos diferentes de backtesting (Vectorizado e Evento conduzido). Na minha jornada de construção de um backtester dirigido por um evento, surpreendi que o que você acabasse fosse perto da pilha de tecnologia completa necessária para construir uma estratégia, testá-la e executar a execução ao vivo.
O meu maior problema ao abordar o problema foi a falta de conhecimento. Olhei em muitos lugares para uma introdução à construção da tecnologia ou um blog que me guiaria. Encontrei alguns recursos que vou compartilhar com você hoje.
Para iniciantes:
Para os leitores novos para negociação quantitativa, eu recomendaria o livro de Ernie P. Chan intitulado: Negociação Quantitativa: como construir seu próprio negócio de negociação algorítmica. Este livro é o básico. Na verdade, é o primeiro livro que eu li em negociação quantitativa e, mesmo assim, achei muito básico, mas há algumas notas que você deveria tomar.
Da página 81-84 Ernie escreve sobre como no nível de varejo uma arquitetura de sistema pode ser dividida em estratégias semi-automáticas e totalmente automatizadas.
Um sistema semi-automatizado é adequado se você deseja fazer alguns negócios por semana. Ernie recomenda o uso de Matlab, R ou mesmo do Excel. Utilizei todas as 3 plataformas e este é o meu conselho:
Saltei Matlab, custou muito dinheiro e eu só consegui acesso aos laboratórios universitários. Não há muito material de treinamento como blogs ou livros que irão ensinar-lhe como codificar uma estratégia usando o Matlab. R tem toneladas de recursos que você pode usar para aprender a construir uma estratégia. Meu blog favorito abordando o tópico é: QuantStratTradeR executado por Ilya Kipnis. O Microsoft Excel é provavelmente o local onde você iniciará se você não tiver experiência de programação. Você pode usar o Excel para negociação semi-automatizada, mas não vai fazer o truque quando se trata de construir a pilha de tecnologia completa.
Quadro semi-automático pg 81.
Sistemas de negociação totalmente automatizados são para quando você deseja colocar negócios automaticamente com base em um feed de dados ao vivo. Eu codifiquei o meu em C #, QuantConnect também usa C #, QuantStart anda pelo leitor através da construção dele em Python, Quantopian usa Python, HFT provavelmente usará C ++. Java também é popular.
Estrutura de negociação totalmente automatizada pg 84.
Passo 1: Obter uma vantagem.
Faça o Programa Executivo em Negociação Algorítmica oferecido pela QuantInsti. Acabei de começar o curso e o primeiro conjunto de palestras foi na arquitetura do sistema. Isso me salvaria cerca de 3 meses de pesquisa se eu tivesse começado aqui. As palestras me acompanharam por cada componente que eu precisaria, bem como uma descrição detalhada do que cada componente precisa fazer. Abaixo está uma captura de tela de uma das suas lâminas utilizadas na apresentação:
Você também pode usar esse quadro geral ao avaliar outros sistemas de negociação automática.
No momento da escrita, estou apenas na terceira semana de palestras, mas estou confiante de que um profissional poderá construir uma estratégia de negociação totalmente automatizada que, com um pouco de polonês, possa ser transformada em um hedge fund quantitativo .
Nota: o curso não está focado na construção da pilha de tecnologia.
Etapa 2: codifique um backtester baseado em eventos básicos.
O blog de Michael Hallsmore e o quantstart & amp; livro "Negociação Algorítmica de Sucesso"
Este livro possui seções dedicadas à construção de um backtester dirigido por eventos robustos. Ele dirige o leitor através de uma série de capítulos que irão explicar sua escolha de linguagem, os diferentes tipos de backtesting, a importância do backtesting dirigido a eventos e como codificar o backtester.
Michael apresenta o leitor às diferentes classes necessárias em um design orientado a objetos. Ele também ensina o leitor a construir um banco de dados mestre de valores mobiliários. É aqui que você verá como a arquitetura do sistema da QuantInsti se encaixa.
Nota: Você precisará comprar seu livro: "Successful Algorithmic Trading", seu blog deixa para fora muita informação.
Passo 3: Vire a TuringFinance.
O programa EPAT Leitura "Successful Algorithmic Trading" & amp; codificando um backtester em um idioma diferente da sua escolha.
Você deve se mudar para um blog chamado TuringFinance e ler o artigo intitulado "Algorithmic Trading System Architecture" Por: Stuart Gordon Reid. Em sua publicação, ele descreve a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42018 e padrão de descrição de arquitetura de engenharia de software.
Eu achei esta publicação muito técnica e tem algumas ótimas idéias que você deve incorporar na sua própria arquitetura.
Uma captura de tela de sua postagem.
Passo 4: Estudar sistemas de comércio aberto.
4.1) Quantopian.
Escusado será dizer que Quantopian deve ser adicionado a esta lista e estou com vergonha de dizer que não passei muito tempo usando sua plataforma (devido à minha escolha de linguagem). Quantopian tem muitas vantagens, mas as que melhoram para mim são as seguintes:
Fácil de aprender Python Acesso gratuito a muitos conjuntos de dados Uma grande comunidade e competições Eu adoro como eles hospedam QuantCon!
Quantopian é líder de mercado neste campo e é amado por quants por toda parte! Seu projeto de código aberto está sob o nome de código Zipline e isso é um pouco sobre isso:
"Zipline é o nosso motor de código aberto que alimenta o backtester no IDE. Você pode ver o repositório de códigos no Github e contribuir com solicitações de envio para o projeto. Existe um grupo do Google disponível para procurar ajuda e facilitar discussões ".
Aqui está um link para sua documentação:
4.2) QuantConnect.
Para aqueles que não estão familiarizados com a QuantConnect, eles fornecem um mecanismo de troca algorítmica de código aberto completo. Aqui está um link.
Você deve dar uma olhada em seu código, estudá-lo, & amp; dar-lhes elogios. Eles são competição de Quantopians.
Gostaria de aproveitar esta oportunidade para agradecer a equipe da QuantConnect por me deixar escolher seu cérebro e pelo brilhante serviço que eles fornecem.
Aqui está um link para sua documentação:
Observações finais:
Espero que este guia ajude os membros da comunidade. Eu queria ter essa visão 6 meses atrás, quando comecei a codificar nosso sistema.
Gostaria de chegar à comunidade e perguntar: "Quais bons cursos de negociação algorítmica você conhece?" Eu gostaria de escrever uma publicação que analisa o tópico e fornece uma classificação. Existem recomendações para a construção de um sistema de negociação totalmente automatizado que você gostaria de adicionar a esta publicação?
Compartilhar isso:
Compartilhe essa entrada.
Você pode gostar também.
Bom artigo. Eu gostaria de ter tido cerca de 6 meses atrás. Eu uso QuantConnect porque sou um programador C #. Achei muito conveniente poder fazer o download do teste Lean e back test localmente. Rummaging através do seu código também é valioso. Além disso, eles cortaram um acordo com a Trader por negócios de US $ 1. Isso ajuda muito. Não sou tão saliente sobre spreads e execução da Trader. O IB pode ser melhor para isso.
Vou dar uma olhada no curso que você mencionou.
Você não mencionou a Quantocracy ou RBloggers. Ambos são recursos muito valiosos.
O que você usa para traçar resultados de testes de volta? Eu logro os valores do OHLC e do indicador para csv do evento OnData e estou realmente cansado de usar o Excel para traçar os resultados. Gostaria de apontar um pacote de gráficos para um arquivo de dados e simplesmente ir.
Você ainda possui um fornecedor de caixas de seleção?
Tenho um pensamento sobre os sistemas dirigidos a eventos. O problema com os eventos é que eles são assíncronos e latentes. Parece que eles são inevitáveis ​​assim que você obtém uma corretora envolvida, então eu tenho sonhado com um sistema de streaming mais seguindo os princípios da programação funcional.
& # 8211; Injeste um fluxo de tiquetaque ou barra.
& # 8211; Execute-o através de um processo de cálculo de indicadores, execução de análise ou ML, e assim por diante.
& # 8211; Retornar um sinal.
& # 8211; Envie-o para o corretor para executar.
Em seguida, em um fluxo separado.
& # 8211; Receba uma resposta do corretor.
O problema, é claro, é o estado. Tenho margem suficiente para fazer o comércio? O que está no meu portfólio? Como está funcionando? Normalmente, o corretor api pode ser consultado para descobrir essas coisas, mas leva tempo e é assíncrono. Eu também estou olhando extensões Rx. Dessa forma, o sistema pode reagir às mudanças no sistema através do padrão observável.
Os eventos são ótimos para cliques no mouse. Não é tão bom para processamento transacional de alto volume.
Esta é exatamente a abordagem que tomei com minhas próprias coisas. Essencialmente, eu tenho um & # 8216; normal & # 8217; programa que envolve uma pequena parte que é conduzida a eventos para falar com o corretor (IB API). Agora, para o problema do estado. Você tem duas escolhas; obter o estado do corretor, ou armazená-lo internamente, atualizando-o quando você receber um preenchimento. Isso significa que há momentos em que você não conhece seu estado ou quando as duas fontes de estado estão potencialmente em conflito (dados ruins ou atrasos). Parte disso depende da rapidez com que você troca. A menos que você esteja negociando com muita rapidez, então, pausando se você tiver um conflito de estado, ou você está incerto de estado, é melhor do que prosseguir sem saber o seu estado. Eu uso um banco de dados & # 8216; lock & # 8217; paradigma para lidar com isso.
Quanto a quase tudo o que você pediu, você está perto da resposta em Reactive Extension (Rx).
Com Rx indo de tiques para velas é trivial.
Passar de Velas para Indicadores é trivial.
Indicadores de composição de outros indicadores é trivial.
Escrever Posições de Indicadores é trivial.
Composição de Portfolios (como realizada ao longo do tempo) das Posições é trivial.
Simular o modelo de risco é trivial.
Back testing ou trading live é simplesmente decidir entre uma transmissão ao vivo de dados ou uma repetição simulada de dados do banco de dados.
Executar é trivial.
A implementação é possível em tudo, desde C # até F # para JavaScript para C ++ em código quase idêntico.
A otimização é feita rapidamente porque o Rx puramente funcional é massivamente paralisável ao GPU.
É certo que a otimização e a alimentação do efeito da otimização contínua de volta ao teste de back-back não é trivial, mas dado que não é trivial de qualquer maneira, eu irei deixar esse slide 😉
Puramente funcional (ou perto dela) A Rx é, na minha opinião, a única maneira de abordar a infraestrutura desse problema.
Conheço o sistema que quero negociar. Eu não quero programar ou aprender algo que alguém já conhece. Então, quem posso contratar para levar o sistema que eu quero usar e automatizá-lo. Por automatizar isso, quero dizer, eu não quero olhar para ele. Eu vou olhar os resultados uma vez por semana e os negócios serão executados sem a minha atenção. Parece estranho para mim que, em 2018, tanto esforço precisa tomar um conjunto de regras e ter essas regras executadas no meu corretor.
Eu sugeriria inscrever-se com o Quantopian e depois encontrar alguém dentro da comunidade lá para construir a estratégia para você. Eles serão capazes de construí-lo para você dentro da plataforma IB Brokers e ser totalmente automatizado.
Deixe-me dizer, porém, que acho que você deve monitorá-lo de perto, e não apenas "esqueça-o para" # 8221 ;.

Comércio.
com foco através de interfaces projetadas para a execução rápida da ordem.
O NinjaTrader é sempre GRATUITO para o gerenciamento avançado, estratégia de backtesting e simulação comercial.
Troque o que quiser.
Os principais mercados do mundo estão ao seu alcance através do NinjaTrader:
Como você quer.
Se você troca através de um DOM ou envia pedidos através do Tradutor de gráficos, o NinjaTrader possui várias interfaces projetadas para uma tomada de decisão rápida e informada.
com Advanced Trade Management.
O Gerenciamento de Comércio Avançado (ATM) elimina as emoções protegendo as posições abertas com ordens de parada e alvo submetidas automaticamente e paradas de segurança auto-apertadas.
Use indicadores personalizados criados para o NinjaTrader para ajudá-lo a tomar decisões comerciais inteligentes.
Negociação automatizada.
Crie, teste e implemente estratégias de negociação automatizadas usando o & ldquo; apontar e clicar em & rdquo; construção para não programadores ou nossa estrutura de negociação moderna baseada em C #.
A escolha é sua.
Troque e conecte-se ao seu corretor e provedor de dados preferido.
Corretoras NinjaTrader Brokers adicionais incluem Interactive Brokers, TD Ameritrade, FOREX FXCM e MB Trading.
Distribuidora de NinjaTrader Fornecedores adicionais incluem eSignal, IQFeed, TradeStation, Google Finance e muito mais.
Começar de graça.
Tecnologia premiada Consistentemente votada como líder da indústria.
pela comunidade comercial.
Economias claras para comerciantes Contas de futuros de desconto e amp; FX baixo se espalha sem marcas.
Personalize sua plataforma Personalize NinjaTrader com indicadores,
sinais e estratégias.
Direitos autorais e cópia; 2017. Todos os direitos reservados. NinjaTrader e o logotipo NinjaTrader. Reg. U. S. Pat. & amp; Tm. Fora.
NinjaTrader Group, LLC Afiliados: NinjaTrader, LLC é uma empresa de desenvolvimento de software que possui e suporta todas as tecnologias proprietárias relacionadas e incluindo a plataforma de negociação NinjaTrader. NinjaTrader Brokerage & trade; é um corretor de introdução registrado na NFA (NFA # 0339976) que fornece serviços de corretagem para comerciantes de futuros e produtos de câmbio.
Futuros, moeda estrangeira e negociação de opções contém um risco substancial e não é para cada investidor. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é dinheiro que pode ser perdido sem prejudicar a segurança financeira ou o estilo de vida. Somente o capital de risco deve ser usado para negociação e somente aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros. Veja a Divulgação de risco total.

Estratégias de negociação automatizadas usando C # e NinjaTrader 7.
Resumo do curso.
Uma introdução para desenvolvedores.
Descrição do Curso.
Neste curso, estaremos caminhando no estilo tutorial através da criação de uma estratégia de negociação automatizada usando C # e a plataforma NinjaTrader, bem como métodos para testar seu potencial sucesso. Até o final das palestras, você deve não só criar uma estratégia de negociação simples, mas também entender como testá-la contra os dados históricos do mercado, depurá-lo e até mesmo registrar dados em um banco de dados personalizado para análise posterior. Mesmo que você tenha uma experiência limitada em C # e estratégia de negociação, os exemplos neste livro fornecerão uma ótima base para entrar em negociação automatizada e testar com segurança idéias de estratégia antes de arriscar dinheiro real no mercado.
Este vídeo atravessa o mesmo material apresentado no e-book Automated Trading com C # e NinjaTrader 7.
Descrição do Curso.
Neste curso, estaremos caminhando no estilo tutorial através da criação de uma estratégia de negociação automatizada usando C # e a plataforma NinjaTrader, bem como métodos para testar seu potencial sucesso. Até o final das palestras, você deve não só criar uma estratégia de negociação simples, mas também entender como testá-la contra os dados históricos do mercado, depurá-lo e até mesmo registrar dados em um banco de dados personalizado para análise posterior. Mesmo que você tenha uma experiência limitada em C # e estratégia de negociação, os exemplos neste livro fornecerão uma ótima base para entrar em negociação automatizada e testar com segurança idéias de estratégia antes de arriscar dinheiro real no mercado.
Este vídeo atravessa o mesmo material apresentado no e-book Automated Trading com C # e NinjaTrader 7.

Comércio.
com foco através de interfaces projetadas para a execução rápida da ordem.
O NinjaTrader é sempre GRATUITO para o gerenciamento avançado, estratégia de backtesting e simulação comercial.
Troque o que quiser.
Os principais mercados do mundo estão ao seu alcance através do NinjaTrader:
Como você quer.
Se você troca através de um DOM ou envia pedidos através do Tradutor de gráficos, o NinjaTrader possui várias interfaces projetadas para uma tomada de decisão rápida e informada.
com Advanced Trade Management.
O Gerenciamento de Comércio Avançado (ATM) elimina as emoções protegendo as posições abertas com ordens de parada e alvo submetidas automaticamente e paradas de segurança auto-apertadas.
Use indicadores personalizados criados para o NinjaTrader para ajudá-lo a tomar decisões comerciais inteligentes.
Negociação automatizada.
Crie, teste e implemente estratégias de negociação automatizadas usando o & ldquo; apontar e clicar em & rdquo; construção para não programadores ou nossa estrutura de negociação moderna baseada em C #.
A escolha é sua.
Troque e conecte-se ao seu corretor e provedor de dados preferido.
Corretoras NinjaTrader Brokers adicionais incluem Interactive Brokers, TD Ameritrade, FOREX FXCM e MB Trading.
Distribuidora de NinjaTrader Fornecedores adicionais incluem eSignal, IQFeed, TradeStation, Google Finance e muito mais.
Começar de graça.
Tecnologia premiada Consistentemente votada como líder da indústria.
pela comunidade comercial.
Economias claras para comerciantes Contas de futuros de desconto e amp; FX baixo se espalha sem marcas.
Personalize sua plataforma Personalize NinjaTrader com indicadores,
sinais e estratégias.
Direitos autorais e cópia; 2017. Todos os direitos reservados. NinjaTrader e o logotipo NinjaTrader. Reg. U. S. Pat. & amp; Tm. Fora.
NinjaTrader Group, LLC Afiliados: NinjaTrader, LLC é uma empresa de desenvolvimento de software que possui e suporta todas as tecnologias proprietárias relacionadas e incluindo a plataforma de negociação NinjaTrader. NinjaTrader Brokerage & trade; é um corretor de introdução registrado na NFA (NFA # 0339976) que fornece serviços de corretagem para comerciantes de futuros e produtos de câmbio.
Futuros, moeda estrangeira e negociação de opções contém um risco substancial e não é para cada investidor. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é dinheiro que pode ser perdido sem prejudicar a segurança financeira ou o estilo de vida. Somente o capital de risco deve ser usado para negociação e somente aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros. Veja a Divulgação de risco total.

Estratégias de negociação automatizadas usando c #
Assim como existem muitos nomes que se referem à negociação automatizada, há muitos meios para automatizar as execuções.
Embora muitas opções estejam disponíveis, os métodos mais comuns de automatizar os sistemas de negociação são:
API direta.
Escrevendo diretamente na API do mecanismo de roteamento de pedidos para permitir a entrada, modificação e relatórios mais avançados e personalizáveis ​​de pedidos. Este método é o mais difícil de implementar exigindo conhecimento avançado de várias linguagens de programação, incluindo C ++ e C #. Normalmente reservado para desenvolvedores de sistemas mais experientes, esse método geralmente fornece a latência mais baixa enquanto permite mapeamentos complexos de pedidos e tipos de pedidos.
Construindo o sistema usando os modelos do construtor de estratégia do NinjaTrader ou o ambiente de programação C # Ao executar um sistema nativamente no NinjaTrader, o sistema se comunica diretamente com a API do mecanismo de roteamento de pedidos e pode acomodar o gerenciamento de pedidos mais avançado enquanto diminui a latência e os erros.
Escrevendo diretamente no mecanismo de roteamento de pedidos utilizando computadores personalizados criados com o sistema operacional Linux ou UNIX. Possivelmente, os meios mais difíceis de implementar a automação, embora sejam frequentemente os meios mais rápidos e confiáveis ​​para automatizar a execução de algoritmos avançados e estratégias de negociação.
Integração DLL.
As DLLs podem ser usadas para se comunicar diretamente com o software de roteamento de pedidos permitindo opções de gerenciamento de pedidos mais avançadas, embora exijam mais experiência com a codificação.
Mensagens SMTP.
A automação SMTP usa um pacote de software de terceiros existente para extrair dados e calcular os sinais que são enviados para um mecanismo de roteamento de pedidos através do protocolo SMTP. Rápido e fácil de configurar e testar, o uso do SMTP tem sido a escolha dos comerciantes do sistema há anos.
Integração do TradeStation Usando a função SMTP para se comunicar entre o TradeStation eo NinjaTrader, as estratégias construídas em Easylanguage podem ser configuradas e testadas em minutos. É necessária alguma configuração inicial para personalizar a sincronização e outras opções para ajudar a manter o sistema em linha com os preenchimentos atuais. Escrevendo diretamente no mecanismo de roteamento de pedidos utilizando computadores personalizados criados com o sistema operacional Linux ou UNIX. Possivelmente, os meios mais difíceis de implementar a automação, embora sejam frequentemente os meios mais rápidos e confiáveis ​​para automatizar a execução de algoritmos avançados e estratégias de negociação.
OIF (arquivos de instruções de pedido)
Semelhante ao SMTP que usa aplicativos de terceiros para gerar sinais de compra ou venda, a OIF facilita a automação criando arquivos de instruções instantâneas no disco rígido do computador, automatizando a execução.
Copyright © 2017 - NinjaTrader ™. Todos os direitos reservados. NinjaTrader ™ é uma marca comercial registrada da NinjaTrader ™, LLC.
Futuros, moeda estrangeira e negociação de opções contém um risco substancial e não é para cada investidor. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é dinheiro que pode ser perdido sem prejudicar a segurança financeira ou o estilo de vida. Somente o capital de risco deve ser usado para negociação e somente aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros. Veja a Divulgação de risco total.

No comments:

Post a Comment