Sistema de negociação em c #
Blog do NeoTicker.
Tópicos em destaque.
Exemplo de sistema comercial C #.
Este é um exemplo que mostra como converter o projeto C # de exemplo de pré-instalação SimpleMovingAverage2VCS e modificá-lo em um sistema de negociação C #.
Antes de abrir o arquivo de projeto, renomeie o arquivo de probidade para MovingAverageCrossSys. Abra o arquivo de projeto e altere todas as propriedades do projeto para o novo nome MovingAverageCorssSys também.
Depois de alterar todas as propriedades do projeto, prossiga para alterar o corpo do código principal MainIDL.
O sistema que usei para este exemplo é um sistema de crossover médio móvel simples, requer três indicadores: média móvel rápida, média móvel lenta e crossover.
Trabalho de quadro original do exemplo do c # makeindicator já tem uma chamada do indicador, então tudo que tenho que fazer é copiar essas linhas e alterar os componentes da chamada do indicador para criar indicadores adicionais para sinais de cruzamento.
Quero garantir que os sinais funcionem como esperado antes de adicionar objetos comerciais para acionar a compra / venda. Então eu adicionei um gráfico para plotar os sinais de crossover e construí-lo como uma versão intermediária para garantir que os sinais funcionem.
Para executar o indicador intermediário de verificações no NeoTicker, copie os arquivos: MovingAverageCrossSys. dll (Observação: Interop. NeoTicker. dll também é necessário se não estiver presente no diretório do indicador NeoTicker) do subdiretório do projeto C # bin \ Liberar para a instalação do NeoTicker subdiretório indicativo do diretório.
Copie o arquivo de cabeçalho MovingAverageCrossSys. idl para o subdiretório do indicador NeoTicker junto com o arquivo DLL, use o editor de script para abrir esse arquivo de cabeçalho IDL para instalar o indicador.
O gráfico indicador intermediário na carta movendo sinais cruzados médios como pontos, onde a cruz rápida acima lenta é plotada como 1 e a cruz rápida abaixo lenta são plotados como -1.
Adicione duas linhas de média móvel no gráfico para confirmar visualmente que os sinais cruzados estão funcionando como esperado, em seguida, adicione parte da execução de negociação do sistema.
Adicione o código necessário para inserir negociações, crie um projeto modificado no aplicativo C # e copie o arquivo DLL resluting para o diretório do indicador NeoTicker. Abra o arquivo de cabeçalho IDL no editor de scripts NeoTicker e desative o indicador antes de substituir o arquivo DLL no diretório indicador.
Um segundo gráfico é necessário traçar a curva de equidade do sistema, de modo que no editor de script> configuração do indicador, adicione outro gráfico para mostrá-lo, instale o cabeçalho do IDL e o sistema pode ser executado com negociações.
A Back Testing Library para desenvolvedores profissionais de estratégia de negociação.
O teste de retorno é o processo de testar estratégias de negociação com base em dados históricos de mercado para tentar simular como um sistema de negociação pode funcionar no futuro.
O teste de retorno é para o desenvolvimento de estratégias de negociação, o que a pesquisa e a melhoria de qualidade são para os setores de saúde e transporte. Quem iria querer experimentar um monitor cardíaco ou automóvel não testado? Ninguém. O mesmo vale para as estratégias de negociação financeira.
Todas as estratégias de negociação devem ser testadas novamente, otimizadas e validadas antes de serem publicadas com dinheiro real. Quase qualquer estratégia de negociação de análise técnica pode ser testada.
Embora seja verdade que muitos aplicativos de comércio de nível intermediário fornecem linguagens de script que permitem que os traders desenvolvam e testem estratégias de negociação, descobrimos que não há bibliotecas de testes disponíveis para desenvolvedores avançados de sistemas de negociação que preferem programar suas estratégias de negociação em programação de baixo nível. linguagens como C ++, C # e Java.
Então, desenvolvemos um mecanismo de teste de retorno para desenvolvedores de sistemas avançados.
Agora, os desenvolvedores podem criar estratégias em qualquer linguagem de programação, depois fazer o teste de volta e otimizar essas estratégias para melhorar o desempenho. O BackTestLib permite que desenvolvedores testem seus sistemas de negociação em C ++, C #, VB, F #, R, IronPython ou qualquer outro idioma, usando dados de ticks ou barras.
Não importa como o seu sistema de negociação está escrito. Tudo o que você precisa fazer é fornecer uma lista de negociações, e a biblioteca de testes de backup faz o resto por você.
O BackTestLib pode calcular o desempenho do seu sistema de negociação usando duas dúzias de medidas de risco, incluindo índice de Sharpe, índice de Calmar, índice de Sortino, empate máximo, empate de Monte Carlo, P & L total, índice de risco para recompensa, maior lucro, maior perda e número médio de negócios / Mês, registros de comércio e muito mais.
Perfeito para otimização de estratégia.
Comerciantes profissionais sabem que todas as coisas boas chegam ao fim. Mesmo os melhores sistemas de negociação acabam caindo em períodos de perda, exigindo a otimização ou a aposentadoria do sistema de negociação. Os motivos variam, incluindo mudanças na liquidez, volatilidade e dinâmica subjacente do mercado, além de outros fatores. O BackTestLib produz resultados que representam um intervalo de medições com base na lucratividade e no risco do seu sistema de negociação quando testados com os dados com os quais foram fornecidos.
Exemplo de código.
// Cria algumas transações simuladas.
Listar & lt; Trade & gt; trades = new List & lt; Trade & gt; ();
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 30: 45,422 AM & quot;) SignalType. Buy, 24));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 32: 33.891 AM @), SignalType. ExitLong, 24.09));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 37: 12.839 AM @), SignalType. Sell, 24,07));
comércios. Adicionar (novo Comércio (DateTime. Parse (& quot; 1/1/2014 9: 48: 27,488 AM @), SignalType. Saída, 24.19));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 49: 16,415 AM & quot;) SignalType. Buy, 24));
comércios. Adicionar (novo Comércio (DateTime. Parse (& quot; 1/1/2014 9: 50: 45.512 AM @), SignalType. Saída, 24.09));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 51: 14.212 AM & quot;) SignalType. Buy, 24,01));
// Executa o backtest.
double lastPrice = 24,03;
Resultados de BacktestResults = Backtester. Backtest (trades, lastPrice);
Começando: Construindo um Sistema de Negociação Totalmente Automatizado.
Nos últimos 6 meses, tenho focado no processo de construção da pilha completa de tecnologia de um sistema de negociação automatizado. Eu me deparei com muitos desafios e aprendi muito sobre os dois métodos diferentes de backtesting (Vectorised e Event driven). Na minha jornada para construir um backtester orientado a eventos, veio a minha surpresa que o que você iria acabar é perto de toda a pilha de tecnologia necessária para construir uma estratégia, fazer backtest e executar a execução ao vivo.
Meu maior problema ao enfrentar o problema foi a falta de conhecimento. Procurei em muitos lugares uma introdução à construção da tecnologia ou um blog que me orientasse. Eu encontrei alguns recursos que vou compartilhar com vocês hoje.
Para iniciantes:
Para os leitores novatos no comércio quantitativo, eu recomendaria o livro de Ernie P. Chan intitulado: Negociação Quantitativa: Como construir seu próprio negócio de comércio algorítmico. Este livro é o básico. Na verdade, é o primeiro livro que li sobre negociação quantitativa e mesmo assim achei muito básico, mas há algumas notas que você deve 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-automatizadas e totalmente automatizadas.
Um sistema semi-automatizado é adequado se você quiser fazer algumas transações por semana. Ernie recomenda usar o Matlab, R ou até mesmo o Excel. Eu usei todas as 3 plataformas e este é o meu conselho:
Saltar do Matlab, custou muito dinheiro e só consegui acesso aos laboratórios da universidade. Não há muito material de treinamento como blogs ou livros que ensinem como codificar uma estratégia usando o Matlab. R tem toneladas de recursos que você pode utilizar para aprender como construir uma estratégia. Meu blog favorito cobrindo o tópico é: QuantStratTradeR é executado por Ilya Kipnis. É mais provável que o Microsoft Excel inicie onde você não tem experiência em programação. Você pode usar o Excel para negociações semi-automáticas, mas isso não vai funcionar quando se trata de construir a pilha completa de tecnologias.
Estrutura semiautomática pg 81.
Sistemas de negociação totalmente automatizados são para quando você deseja colocar automaticamente as negociações com base em um feed de dados ao vivo. Eu codifiquei o meu em C #, o QuantConnect também usa o C #, o QuantStart orienta o leitor através da construção em Python, o Quantopian usa o Python, o HFT provavelmente usará o C ++. Java também é popular.
Estrutura de negociação completamente automatizada página 84.
Passo 1: Conseguir um bom começo.
Faça o Programa Executivo em Algorithmic Trading oferecido pela QuantInsti. Acabei de começar o curso e o primeiro conjunto de palestras foi na arquitetura do sistema. Teria me poupado cerca de 3 meses de pesquisa se eu tivesse começado aqui. As palestras me acompanharam através de cada componente que eu precisaria, bem como uma descrição detalhada do que cada componente precisa fazer. Abaixo está uma captura de tela de um de seus slides usados na apresentação:
Você também pode usar essa estrutura geral ao avaliar outros sistemas de negociação automáticos.
No momento em que escrevo, estou apenas na terceira semana de palestras, mas estou confiante de que um praticante será capaz de construir uma estratégia comercial totalmente automatizada que poderia, com um pouco de refinamento, ser transformada no começo de um fundo de hedge 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.
Blog de Michael Hallsmore, quantstart & amp; livro “Negociação Algorítmica Bem Sucedida”
Este livro tem seções dedicadas à construção de um robusto backtester orientado a eventos. Ele orienta o leitor através de vários capítulos que explicarão sua escolha de idioma, os diferentes tipos de backtesting, a importância do backtesting orientado a eventos e como codificar o backtester.
Michael introduz o leitor às diferentes classes necessárias em um projeto orientado a objetos. Ele também ensina o leitor a construir um banco de dados mestre de títulos. É aqui que você verá como a arquitetura do sistema da QuantInsti se encaixa.
Nota: Você precisará comprar o livro dele: “Successful Algorithmic Trading”, seu blog deixa de fora muita informação.
Passo 3: Volte para o TuringFinance.
O programa EPAT Reading “Successful Algorithmic Trading” & amp; codificando um backtester em um idioma diferente de sua escolha.
Você deve ir para um blog chamado TuringFinance e ler o artigo intitulado "Algorithmic Trading System Architecture" Por: Stuart Gordon Reid. Em seu post ele descreve a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e padrão de descrição de arquitetura de engenharia de software.
Eu achei este post muito técnico e tem algumas ótimas idéias que você deve incorporar em sua própria arquitetura.
Uma captura de tela de seu post.
Etapa 4: Estude os sistemas de negociação de código aberto.
4.1) Quantopian.
Escusado será dizer que Quantopian deve ser adicionado a esta lista e tenho vergonha de dizer que não passei muito tempo usando sua plataforma (devido à minha escolha de idioma). Quantopian tem muitas vantagens, mas as que mais se destacam 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 amo como eles hospedam a QuantCon!
Quantopian é os líderes de mercado neste campo e é amado por todos os quants! Seu projeto de código aberto está sob o nome de código Zipline e isso é um pouco sobre isso:
“O Zipline é o nosso mecanismo de código aberto que alimenta o backtester no IDE. Você pode ver o repositório de código no Github e contribuir com solicitações de pull para o projeto. Há um grupo do Google disponível para procurar ajuda e facilitar discussões. ”
Aqui está um link para a documentação deles:
4.2) QuantConnect.
Para aqueles que não estão familiarizados com o QuantConnect, eles fornecem um mecanismo completo de negociação algorítmica de código aberto. Aqui está um link.
Você deve dar uma olhada no código deles, estudá-lo, & amp; dê-lhes louvor. Eles são competição de quantopianos.
Eu gostaria de aproveitar esta oportunidade para agradecer a equipe QuantConnect por me deixar escolher o cérebro deles e pelo serviço brilhante que eles oferecem.
Aqui está um link para a documentação deles:
Observações finais:
Espero que este guia ajude os membros da comunidade. Eu gostaria de ter essa percepção 6 meses atrás quando comecei a codificar nosso sistema.
Eu gostaria de falar com a comunidade e perguntar: “Que bons cursos de negociação algorítmica você conhece?” Eu gostaria de escrever um post que analise o tópico e forneça uma classificação. Há alguma recomendação para criar um sistema de negociação totalmente automatizado que você gostaria de adicionar a este post?
Sistema de negociação baseado em QUSMA C # / - agora open source.
Estamos aqui para ajudar. Apenas deixe-nos saber o que você precisa. Nós trabalhamos muito duro para manter as coisas positivas em nossa comunidade. Não toleramos comportamentos rudes, trolling ou fornecedores publicitários em publicações. Acreditamos firmemente e incentivamos o compartilhamento. O Santo Graal está dentro de você, podemos ajudá-lo a encontrá-lo. Esperamos que nossos membros participem e se tornem parte da comunidade. Ajude-se ajudando os outros.
Você precisa se registrar para visualizar o conteúdo dos tópicos e começar a contribuir para a nossa comunidade. É grátis e simples.
Mais um passo.
Por favor, preencha a verificação de segurança para acessar o código de negociação.
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: 3f6c5ef69272292c & bull; Seu IP: 78.109.24.111 & bull; Performance & amp; segurança pela Cloudflare.
A Back Testing Library para desenvolvedores profissionais de estratégia de negociação.
O teste de retorno é o processo de testar estratégias de negociação com base em dados históricos de mercado para tentar simular como um sistema de negociação pode funcionar no futuro.
O teste de retorno é para o desenvolvimento de estratégias de negociação, o que a pesquisa e a melhoria de qualidade são para os setores de saúde e transporte. Quem iria querer experimentar um monitor cardíaco ou automóvel não testado? Ninguém. O mesmo vale para as estratégias de negociação financeira.
Todas as estratégias de negociação devem ser testadas novamente, otimizadas e validadas antes de serem publicadas com dinheiro real. Quase qualquer estratégia de negociação de análise técnica pode ser testada.
Embora seja verdade que muitos aplicativos de comércio de nível intermediário fornecem linguagens de script que permitem que os traders desenvolvam e testem estratégias de negociação, descobrimos que não há bibliotecas de testes disponíveis para desenvolvedores avançados de sistemas de negociação que preferem programar suas estratégias de negociação em programação de baixo nível. linguagens como C ++, C # e Java.
Então, desenvolvemos um mecanismo de teste de retorno para desenvolvedores de sistemas avançados.
Agora, os desenvolvedores podem criar estratégias em qualquer linguagem de programação, depois fazer o teste de volta e otimizar essas estratégias para melhorar o desempenho. O BackTestLib permite que desenvolvedores testem seus sistemas de negociação em C ++, C #, VB, F #, R, IronPython ou qualquer outro idioma, usando dados de ticks ou barras.
Não importa como o seu sistema de negociação está escrito. Tudo o que você precisa fazer é fornecer uma lista de negociações, e a biblioteca de testes de backup faz o resto por você.
O BackTestLib pode calcular o desempenho do seu sistema de negociação usando duas dúzias de medidas de risco, incluindo índice de Sharpe, índice de Calmar, índice de Sortino, empate máximo, empate de Monte Carlo, P & L total, índice de risco para recompensa, maior lucro, maior perda e número médio de negócios / Mês, registros de comércio e muito mais.
Perfeito para otimização de estratégia.
Comerciantes profissionais sabem que todas as coisas boas chegam ao fim. Mesmo os melhores sistemas de negociação acabam caindo em períodos de perda, exigindo a otimização ou a aposentadoria do sistema de negociação. Os motivos variam, incluindo mudanças na liquidez, volatilidade e dinâmica subjacente do mercado, além de outros fatores. O BackTestLib produz resultados que representam um intervalo de medições com base na lucratividade e no risco do seu sistema de negociação quando testados com os dados com os quais foram fornecidos.
Exemplo de código.
// Cria algumas transações simuladas.
Listar & lt; Trade & gt; trades = new List & lt; Trade & gt; ();
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 30: 45,422 AM & quot;) SignalType. Buy, 24));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 32: 33.891 AM @), SignalType. ExitLong, 24.09));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 37: 12.839 AM @), SignalType. Sell, 24,07));
comércios. Adicionar (novo Comércio (DateTime. Parse (& quot; 1/1/2014 9: 48: 27,488 AM @), SignalType. Saída, 24.19));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 49: 16.415 AM & quot;), SignalType. Buy, 24));
comércios. Adicionar (novo Comércio (DateTime. Parse (& quot; 1/1/2014 9: 50: 45.512 AM @), SignalType. Saída, 24.09));
trades. Add (novo comércio (DateTime. Parse (& quot; 1/1/2014 9: 51: 14.212 AM & quot;) SignalType. Buy, 24,01));
// Executa o backtest.
double lastPrice = 24,03;
Resultados de BacktestResults = Backtester. Backtest (trades, lastPrice);
Comments
Post a Comment