Sunday 13 August 2017

Construção De Sistemas Automáticos De Negociação Pdf


Construindo Sistemas Automatizados de Negociação (2007).pdf Construindo Sistemas Automatizados de Negociação com uma Introdução ao Visual C. NET 2005 O Mercado de Mercado Financeiro Série Série Editor Ben Van Vliet A Série de Tecnologia de Mercado Financeiro é uma parceria entre Elsevier, Inc. e o Instituto de Mercado Tecnologia (i4mt) para publicar livros de ponta abrangendo temas relacionados à integração de tecnologia com os mercados financeiros, incluindo: negociação automatizada, negociação de edifícios e sistemas de investimento, questões operacionais no processamento de back office, compensação e liquidação, e questões de conformidade e governança À medida que se relacionam com a tecnologia. O objetivo da série é promover uma maior compreensão e competência com a tecnologia no setor financeiro através da publicação de livros de alta qualidade sobre as últimas áreas de pesquisa e prática para profissionais que trabalham nos mercados financeiros. Editor de séries: Ben Van Vliet é professor e diretor associado do M. Sc. No Financial Markets Program da Stuart Graduate School of Business, Instituto de Tecnologia de Illinois. Dentro deste programa, ele ensina cursos de pós-graduação em finanças quantitativas e desenvolvimento automatizado de sistemas de negociação usando Visual Basic. NET, SQL, XML, ISO C e Visual C. NET e UML. Ele também é um co-inventor do TraderDNA, um pacote de software de avaliação de desempenho comercial em tempo real, além de ser Diretor da TraderDNA LLC. Ele também atua como Vice-Presidente do Institute for Market Technology (i4mt), uma organização sem fins lucrativos que fornece programas educacionais em mercados financeiros e tecnologia, onde também preside o Comitê de Tecnologia de Mercado para o Desenvolvedor do Sistema de Negociação Certificado ( CTSD). Consulte i4mt. org para obter mais informações. O Sr. Van Vliet também consulta extensivamente no setor financeiro. Ele é o autor de Building Automated Trading Systems (Academic Press, 2007) e co-autor da Modeling Financial Markets (McGraw-Hill, 2004). Congratulamo-nos com propostas de livros para a série. Por favor, vá para books. elsevierfinance onde você encontrará um link para nos enviar sua proposta. Construindo Sistemas Automatizados de Negociação com uma Introdução ao Visual C. NET 2005 Benjamin Van Vliet AMSTERDAM BOSTON HEIDELBERG LONDRES NOVA YORK OXFORD PARIS SAN DIEGO SAN FRANCISCO SINGAPORE SYDNEY TOKYO A imprensa acadêmica é uma marca da Elsevier Academic Press é uma marca da Elsevier 30 Corporate Drive, Suite 400, Burlington, MA 01803, EUA 525 B Street, Suite 1900, San Diego, Califórnia 92101-4495, EUA 84 Theobalds Road, Londres WC1X 8RR, Reino Unido Este livro é impresso em papel isento de ácido. Copyright 2007, Elsevier Inc. Todos os direitos reservados. Nenhuma parte desta publicação pode ser reproduzida ou transmitida de qualquer forma ou por qualquer meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer sistema de armazenamento e recuperação de informações, sem autorização por escrito da editora. As permissões podem ser solicitadas diretamente do Departamento de Direitos de Tecnologia da Elsevi Science Science em Oxford, Reino Unido: telefone: (44) 1865 843830, fax: (44) 1865 853333, E-mail: permissionselsevier. Você também pode completar seu pedido on-line através da página inicial do Elsevier (elsevier), selecionando Support Contact, em seguida, Copyright e Permissão e, em seguida, Obtendo Permissões. Dados de catalogação e publicação da Biblioteca do Congresso Van Vliet, Benjamin Building sistemas automáticos de negociação. Com uma introdução ao Visual C. NET 2005 Benjamin Van Vliet. P. cm. Inclui referências bibliográficas e índice. ISBN 0-7506-8251-5 (papel alinhado) 1. Negociação eletrônica de títulos. 2. Finanças modelos matemáticos. 3. Microsoft Visual C. 4. Microsoft. NET. I. Título. HG4515.95.V36 2007 332.6420285513dc22 2007002143 Dados da Catalogação em Publicação da Biblioteca Britânica Um registro de catálogo para este livro está disponível na Biblioteca Britânica. ISBN 13: 978-0-7506-8251-0 ISBN 10: 0-7506-8251-5 Para obter informações sobre todas as publicações da Academic Press, visite nosso site na books. elsevier Impresso nos Estados Unidos da América 07 08 09 10 9 8 7 6 5 4 3 2 1 Conteúdo Agradecimentos xiii CAPÍTULO 1 Introdução 1 1.1. ISO C 2 1.2. Estrutura deste livro 2 Seção I: Introdução ao Visual C. NET 2005 CAPÍTULO 2 O. NET Framework 5 2.1. MS Visual Studio 2005 Project Structure 5 2.2. O que é CCLI 5 2.3. Por que Visual C. NET 6 2.4. O VC. NET Compiler 7 2.5. What About Speed ​​7 2.6. O. NET Framework 7 2.7. Código de exemplo: MessageBoxExample 9 2.8. Código de exemplo: StringConcatExample 11 2.9. Código da amostra: DebugExample 12 2.10. Versão 14 2.11. Resumo 14 CAPÍTULO 3 Referências de Rastreio 15 3.1. Código de exemplo: TrackingReferenceExample 15 3.2. Código de exemplo: TemplateFunctionExample 16 3.3. Managed Handle 16 3.4. Código de exemplo: Ref TypeExample 17 3.5. Resumo 17 v CAPÍTULO 4 Classes e objetos 19 4.1. Abstração 19 4.2. Encapsulamento 21 4.3. Herança 21 4.4. Polimorfismo 21 4.5. Gerenciamento de memória no. NET 21 4.6. NET Tipos 22 4.7. Tipos não gerenciados 23 4.8. Assembléias Mistas 23 4.9. Resumo 23 CAPÍTULO 5 Tipos de referência 25 5.1. Código de exemplo: Ref TypeExample 26 5.2. Eliminar e descartar 27 5.3. Finalizar 28 5.4. Código de exemplo: FinalizeExample 29 5.5. Static Semantics for Ref Types 30 5.6. Nullptr Reference 30 5.7. Isto é importante 31 5.8. Resumo 31 CAPÍTULO 6 Tipos de valor 33 6.1. Código de exemplo: ValueTypesExempleto 34 6.2. Código de exemplo: PassingValueTypesExample 35 6.3. Resumo 36 CAPÍTULO 7 Objetos não gerenciados 37 7.1. Código de exemplo: UnmanagedObjectExample 37 7.2. Resumo 39 CAPÍTULO 8 Composição 41 8.1. Código de exemplo: CompositionExample 41 8.2. Código de exemplo: UnmanagedCompositionExample 44 8.3. Código de exemplo: ManagedCompositionExample 46 8.4. Resumo 48 CAPÍTULO 9 Propriedades 49 9.1. Código de exemplo: PropriedadesExemplos 49 9.2. Resumo 50 CAPÍTULO 10 Estruturas e enumeração 51 10.1. Código de amostra: ValueStructureExample 51 10.2. Código de exemplo: ReferenceStructureExample 52 10.3. Código de exemplo: EmumsExample 53 10.4. Resumo 53 vi Índice CAPÍTULO 11 Herança 55 11.1. Modificadores de acesso 55 11.2. Objeto Classe 56 11.3. Aulas abstratas e seladas 56 11.4. Código de exemplo: herança Exemplos 56 11.5. Interfaces 58 11.6. Código de exemplo: InterfaceExample 59 11.7. Wrapper Callable Callable 60 11.8. Resumo 60 CAPÍTULO 12 Conversão e transmissão 61 12.1. Convertendo 61 12.2. Código de exemplo: ConvertExample 61 12.3. Casting estático 62 12.4. Código de exemplo: StaticCastExample 62 12.5. Casting Dinâmico 62 12.6. Código de exemplo: DynamicCastExample 62 12.7. Safe Casting 64 12.8. Código de exemplo: SafeCastExample 64 12.9. Resumo 65 CAPÍTULO 13 Sobrecarga do operador 67 13.1. Código de exemplo: OpOverloadExemple 67 13.2. Resumo 69 CAPÍTULO 14 Delegados e Eventos 71 14.1. Delegados 71 14.2. Código de exemplo: DelegatesExample 72 14.3. Multicasting 73 14.4. Código de exemplo: MulticastExemple 73 14.5. Eventos 75 14.6. Código de exemplo: EventExample 76 14.7. Wrappers 78 14.8. Código de exemplo: WrapperExample 78 14.9. Chamadas de Método Assíncrono 80 14.10. Código de exemplo: AsynchEventExample 80 14.11. Resumo 82 CAPÍTULO 15 Arrays 83 15.1. Código de exemplo: ManagedArrayExample 83 15.2. Código de exemplo: PassingArraysExample 84 15.3. Resumo 85 vii Conteúdo vii CAPÍTULO 16 Gerando números aleatórios 87 16.1. Código de amostra: RandomExample 87 16.2. Código de exemplo: StdNormRandomExample 87 16.3. Resumo 89 CAPÍTULO 17 Tempo e Temporizadores 91 17.1. Código de exemplo: milissegundosExemplos 91 17.2. Cronômetro 92 17.3. Código de exemplo: StopwatchExemple 93 17.4. Timers 93 17.5. Código de exemplo: FormsTimerExample 93 17.6. Código de exemplo: ThreadingTimerExample 95 17.7. Código de exemplo: TimersTimerExample 96 17.8. Resumo 98 CAPÍTULO 18 Fluxos de entrada e saída 99 18.1. FileStream Classe 99 18.2. StreamWriter Classe 99 18.3. Classes de arquivos e diretórios 99 18.4. Aplicação Classe 100 18.5. Enumeração FileMode 100 18.6. Código de exemplo: StreamWriterExample 100 18.7. Código de exemplo: StreamReaderExample 101 18.8. Resumo 101 CAPÍTULO 19 Manipulação de Excepção 103 19.1. Código de exemplo: exceções Exemplo 103 19.2. Capturando tipos não administrados C 104 19.3. Resumo 105 CAPÍTULO 20 Coleções 107 20.1. Código de exemplo: HashtableExample 107 20.2. Lista ordenada Classe 109 20.3. Código de exemplo: SortedListExample 109 20.4. Segurança de linha 110 20.5. Generics 110 20.6. Código de exemplo: LinkedListExample 110 20.7. Código de exemplo: GenericsExample 111 20.8. Resumo 112 CAPÍTULO 21 STLSTL. NET 113 21.1. Código de exemplo: STL. NETExemple 113 21.2. Código de amostra: exemplo STLE 114 21.3. Resumo 114 viii Conteúdo CAPÍTULO 22 Dados de dados 115 22.1. Código de exemplo: DataSetExample 116 22.2. Linhas, DataRowCollections e DataRows 116 22.3. Resumo 117 CAPÍTULO 23 Conexão com bancos de dados 119 23.1. Conexão de banco de dados 119 23.2. DataAdapter 120 23.3. Código de exemplo: ADO. NETExemple 120 23.4. Enumerando através de todos os dados em um DataSet 122 23.5. Usando o Excel como fonte de dados 123 23.6. Escrevendo XML a partir de um DataSet 123 23.7. Atualizando um banco de dados com alterações em um conjunto de dados 123 23.8. Recuperando dados com um DataReader 124 23.9. Resumo 124 CAPÍTULO 24 Linguagem de consulta estruturada 125 24.1. Linguagem de Manipulação de Dados 125 24.2. Atualizando um banco de dados com alterações em um DataSet 138 24.3. Idioma de Definição de Dados 138 24.4. Resumo 140 CAPÍTULO 25 XML 141 25.1. Documentos XML bem formados 141 25.2. Documentos XML válidos 141 25.3. Documentos de Esquema XML 142 25.4. Parsers 142 25,5. Código de exemplo: Traders. xsd 142 25.6. Código de exemplo: XmlWriterExample 144 25.7. Código de exemplo: XmlReaderExample 144 25.8. Resumo 146 CAPÍTULO 26 Protocolo de troca de informações financeiras 147 26.1. Protocolos XML em mercados financeiros 147 26.2. Visão geral do FIX 148 26.3. Resumo 151 CAPÍTULO 27 Serialização 153 27.1. Exemplo de Serialização 153 27.2. Resumo 154 CAPÍTULO 28 Serviços do Windows 155 28.1. Código de exemplo: WindowsServiceExample 155 28.2. Resumo 159 Índice ix CAPÍTULO 29 Pacotes de instalação e instalação 161 29.1. Código de exemplo: Exemplo de instalação 161 29.2. Resumo 162 Seção II: Concorrência CAPÍTULO 30 Threading 165 30.1. Threading Namespace 166 30.2. Código de exemplo: ThreadExample 166 30.3. Código de exemplo: ThreadAbortExample 167 30.4. Thread Priority 169 30.5. Código de exemplo: ThreadPriorityExample 170 30.6. ThreadState Enumeration 170 30.7. ThreadPool Classe 171 30.8. Código de exemplo: ThreadPoolExample 171 30.9. Atualizando formulários de outros tópicos 172 30.10. Código de exemplo: FormUpdateExample 172 30.11. Segurança de linha 174 30.12. Resumo 175 CAPÍTULO 31 Classes de Sincronização 177 31.1. Código de exemplo: SynchronizeExample 177 31.2. Classe Mutex 178 31.3. Código de exemplo: MutexExemple 178 31.4. Semaphore Classe 180 31.5. Código de exemplo: SemaphoreExample 180 31.6. Monitor Classe 182 31.7. Código de exemplo: Monitor 182 31.8. Resumo 182 CAPÍTULO 32 Sockets 183 32.1. Código de exemplo: SynchronousServerExample 184 32.2. Código de exemplo: SynchronousClientExample 187 32.3. Resumo 189 Seção III: Interoperabilidade e conectividade CAPÍTULO 33 Marshaling 193 33.1. Marshal Classe 193 33.2. Código de exemplo: StringToCharArrayExample 194 33.3. Resumo 194 CAPÍTULO 34 Ponteiros internos e de pino 195 34.1. Código de exemplo: InteriorPointerExample 195 34.2. Pinning Pointers 196 34.3. Código de exemplo: exemplo Pinning 196 34.4. Resumo 198 x Conteúdo CAPÍTULO 35 Conexão a DLLs gerenciadas 199 35.1. Exemplo de código: DLLExample 199 35.2. Sumário 201 CAPÍTULO 36 Conexão a DLLs de modelo de objeto de componente (COM) com COM Interop 203 36.1. Código de exemplo: MyCOMLibrary 203 36.2. Código de exemplo: usando o exemplo COMDLLE 207 36.3. Sumário 207 CAPÍTULO 37 Conexão a DLLs C com Serviços de Invocação de Plataforma 209 37.1. Chamando funções de Estilo C 209 37.2 Código de exemplo: MyWin32Library 209 37.3. Código de exemplo: UsingWin32DLLExample 211 37.4. Criando Objetos 212 37.5. Código de exemplo: MyWin32ClassLibrary 212 37.6. Código de exemplo: UsingWin32ClassExample 214 37.7. ChamandoConventionEnumeração 215 37.8. Resumo 216 CAPÍTULO 38 Conexão ao Excel 217 38.1. Código de exemplo: ControllingExcelExample 217 38.2. Código de exemplo: ExcelChartExample 220 38.3. Resumo 221 CAPÍTULO 39 Conexão ao TraderAPI 223 39.1. TraderAPI Visão geral 223 39.2. FillObj 224 39.3. InstrObjClass 224 39.4. InstrNotifyClass 225 39.5. OrderObj 225 39.6. OrderProfi leClass 225 39.7. OrderSetClass 226 39.8. Código de exemplo: TraderAPIConnectionExample 227 39.9. Resumo 230 CAPÍTULO 40 Conexão ao XTAPI 231 40.1. Código de exemplo: XTAPIConnectionExample 231 40.2. Resumo 233 Conteúdo xi Seção IV: Sistemas de Negociação Automatizada CAPÍTULO 41 Construção de Sistemas de Negociação 237 41.1. Comprar vs. Construir 237 41.2. Mapeamento de Dados 239 41.3. Velocidade do Desenvolvimento 240 41.4. Dez coisas que afetam a velocidade de um sistema comercial 241 41.5. Getting It Right 242 41.6. Lógica vazamentos 243 41,7. Dez coisas que afetam a capacidade de um sistema comercial 244 41.8. Resumo 245 CAPÍTULO 42 Metodologia de Desenvolvimento do Sistema de Negociação KV 247 42.1. O Documento de Dinheiro 249 42.2. Cálculos de pesquisa e documentos 249 42.3. Back Test 252 42.4. Implementar 253 42.5. Gerenciar portfólio e risco 255 42.6. Resumo 257 CAPÍTULO 43 Classes do Sistema Automatizado de Negociação 259 43.1. Instrumento Classe 259 43.2. Ordem Classe 263 43.3. Livro de Pedidos 264 43.4. Suporte 264 43,5. Marque 264 43.6. Tick ​​ou Bar Collection 264 43.7. Barra 264 43,8. System Manager 265 43.9. Interface Gráfica do Usuário 265 43.10. Resumo 265 CAPÍTULO 44 Sistema de análise técnica de rosca única, 267 44.1. Código de exemplo: TechincalSystemExample 268 44.2. Sumário 277 CAPÍTULO 45 Padrão de design do consumidor da produção 279 45.1. Código de amostra: Exemplo de consumidor de produção 279 45.2. Resumo 287 CAPÍTULO 46 Sistema de Arbitragem Estatística Multithread, 289 46.1. Código de exemplo: SpreaderExample 291 46.2. Resumo 304 46.3. Conclusão 304 xii Conteúdo Agradecimentos Este livro começou como notas de aula para um curso que eu ensino no Instituto de Tecnologia de Illinois chamado Advanced Object Oriented Programming for Financial Markets. Nesta classe, cobrimos o design e o desenvolvimento automáticos de sistemas de negociação usando o Microsoft Visual C. Quando comecei a ensinar esse curso há vários anos, não consegui encontrar um livro que incluísse todos os tópicos necessários para construir sistemas de negociação automatizados em tempo real e Assim, como resultado, este livro tenta fazer apenas que reúne temas de programação e tecnologia para o desenvolvimento de seleção de comércio, roteamento de pedidos, gerenciamento de pedidos e algoritmos de gerenciamento de posição. Espero que mais escolas ofereçam cursos sobre o design do sistema de negociação automatizado no futuro e que este livro seja útil em suas instruções. Além disso, este livro é um texto de fundação para o programa CTSD Certified Trading System Developer oferecido pelo Institute for Market Technology (i4mt. org). Este é um novo programa de certificação que consiste em três exames, um em financiamento quantitativo, um em estratégia de negociação de títulos e derivados e outro em programação ISO CC. NET e tecnologia de mercado. Este rigoroso programa de auto-estudo destina-se a reunir as habilidades em demanda no setor financeiro hoje. Os candidatos que obtiverem a designação da CTSD serão realmente pessoas de talento. Como se pode imaginar, crédito adicional para a conclusão deste projeto deve ser dado a muitos amigos, familiares e colegas: em particular para minha esposa, Julia, Mark McCracken, Andrew Kumiega, Andrew Acosta, Sagy Mintz, Jason Malkin, Larissa J. Miller, Derek Walther, Niraj Chokshi, Julian Mulla, Mike Hermanson, David Norman, Dr. Deborah Cernauskas, Dr. Joe Wojkowski, Pamela Reardon, Edward Wang, Alex Deitz, Andrew Robinson e todos os meus colegas no IIT Center Para os mercados financeiros, Russell Wojcik, Dr. Michael Gorham, Keith Black, Dr. Michael Ong, Dr. John Bilson, Dr. Michael Kelly e Jodi Houlihan. Além disso, eu gostaria de agradecer aos muitos alunos que participaram do curso e todos forneceram valiosos comentários. Sem a ajuda deles e a ajuda de muitos outros, este livro nunca teria sido completado. Xiii Este livro está escrito para pessoas com conhecimento de ISO C ou possivelmente Java. NET, ou COM. Para os engenheiros financeiros e os engenheiros financeiros que aspiram com um fundo de programação geral, este livro fornecerá uma discussão aprofundada de conceitos de programação de nível superior, como o gerenciamento de eventos, a interoperabilidade, a conectividade de feed de dados e a concorrência. Para programadores C experientes, você pode achar que este livro fornece uma boa introdução ao uso de C dentro do. NET Framework. Seja qual for o caso, espero que você aprenda com isso e esteja inspirado para aprofundar o tema do desenvolvimento automatizado do sistema de negociação. Por favor, forneça qualquer comentário que você tenha. Eu prometo atualizar meu site, benvanvliet, regularmente com correções para erratas e exemplos adicionais. Xiv Agradecimentos 1 CAPÍTULO 1 Introdução Os sistemas de negociação automatizados (ou algorítmicos) consistem em muitas partes, hardware e softwareclients, servidores, redes, bancos de dados, mecanismos de cálculo, interfaces de programação de aplicativos, feeds de dados em tempo real e interfaces gráficas de usuário. No entanto, a lógica comercial dos sistemas de negociação, que consiste em algoritmos de seleção de comércio, gerenciamento de pedidos e lógica de gerenciamento de posição, está contida no software, e este livro está preocupado com o encapsulamento da lógica de negócios do sistema comercial em software que controla o fluxo de mercado dados. (Não há quant neste livro.) Um sistema de negociação automatizado consiste nas regras de entrada e saída de uma posição ou posições e a tecnologia, tanto de hardware como de software, costumava fazer com que elas ocorressem. Essas regras são um conjunto de operações lógicas ou matemáticas que podem ser baseadas em pesquisas qualitativas, técnicas ou quantitativas. Se quisermos construir um sistema automatizado que executa negócios em intercâmbios eletrônicos, precisamos aprender a trabalhar com dados, tanto dados de mercado em tempo real quanto dados históricos, em código. Afinal, os dados são a força vital dos mercados eletrônicos, de acordo com David Norman em seu livro Professional Electronic Trading. Isso é exatamente sobre o que é esse livro, usando o Visual C. NET para gerenciar os dados dos mercados financeiros (e há muito disso) nas aplicações do sistema comercial. De um modo geral, este livro abrange três coisas: 1. Gerenciando dados na memória. 2. Armazenando dados e recuperando de bancos de dados. 3. Comunicação de dados. A programação da front office nos mercados financeiros está em grande parte relacionada com a conexão a bancos de dados, feeds de dados em tempo real, plataformas de execução de pedidos, bibliotecas quantitativas, mecanismos de otimização, software de gráficos, motores de geração de relatórios, tecnologias legadas e Excel, apenas para citar alguns. Para gerenciar com sucesso dados em tempo real e históricos, precisamos entender: 1. Arquitetura baseada em eventos. 2. Concorrência. 3. Conectividade e interoperabilidade. Enquanto este livro aborda dezenas de questões tecnológicas importantes que você enfrentará ao criar sistemas de negociação automatizados do mundo real no. NET, ele não mostra como construir um sistema de negociação rentável. (É importante, no entanto, reconhecer que a superioridade tecnológica pode ser uma grande vantagem competitiva.) Existem quatro disciplinas que se destinam ao desenvolvimento automotivo de sistemas comerciais, ciência quantitativa, estratégia comercial e gerenciamento de qualidade e é um livro de informática . O desenvolvimento e teste de métodos de seleção de comércio e gerenciamento de riscos são tópicos para outros livros. Este livro aborda os fundamentos do que um engenheiro financeiro deve saber sobre a programação em. NETobjects, SQL, multithreading, interoperabilidade, mensagens, algoritmos de seleção de pedidos e técnicas de gerenciamento de pedidos. Neste texto, tentei incluir informações orientadas para o mercado, relevantes para o trabalho. Atualmente, os empregadores nos mercados financeiros exigem disponibilidade para o trabalho. Se você quiser obter um emprego na negociação e gerenciamento de dinheiro Copyright copy 1996-2016 IASK Corporation, All Right ReservedAlgorithmic trading: Como começar a construir um sistema de negociação algorítmica Como puramente cientista da computação você está na posição perfeita para começar em algoritmos Negociação. Isso foi algo que testemunhamos em primeira mão na Quantiacs 1. onde cientistas e engenheiros conseguem saltar diretamente para negociação automatizada sem qualquer experiência prévia. Em outras palavras, as costeletas de programação são o principal ingrediente necessário para começar. Para obter uma compreensão geral do que os desafios esperam depois de durar a criação de um sistema de negociação algorítmico, confira esta publicação do Quora. Construir um sistema de negociação desde o início exigirá algum conhecimento de fundo, uma plataforma de negociação, dados de mercado e acesso ao mercado. Embora não seja um requisito, a escolha de uma única plataforma de negociação que forneça a maioria desses recursos o ajudará a acelerar rapidamente. Dito isto, as habilidades que você desenvolverá serão transferíveis para qualquer linguagem de programação e praticamente qualquer plataforma. Acredite ou não, construir estratégias de negociação automatizadas não se baseia em ser um especialista em mercado. No entanto, aprender mecânica de mercado básica irá ajudá-lo a descobrir estratégias comerciais lucrativas. Opções, Futuros e Outros Derivados por John C. Hull - Grande primeiro livro para entrar em financiamento quantitativo, e abordando-o do lado da Matemática. Negociação quantitativa por Ernie Chan - Ernie Chan fornece o melhor livro introdutório para negociação quantitativa e orienta você no processo de criação de algoritmos de negociação em MATLAB e Excel. Comércio Algoritmo de Futuros via Aprendizado de Máquinas - Uma quebra de 5 páginas da aplicação de um modelo simples de aprendizado de máquina aos indicadores de análise técnica comumente usados. Heres uma lista de leitura agregada PDF com uma quebra total de livros, vídeos, cursos e fóruns de negociação. A melhor maneira de aprender é fazer, e no caso de negociação automatizada que se resume a gráficos e codificação. Um bom ponto de partida são exemplos existentes de sistemas de negociação e exposições existentes de técnicas de análise técnica. Além disso, um cientista informático qualificado tem a vantagem adicional de poder aplicar a aprendizagem de máquinas para negociação algorítmica. Aqui estão alguns desses recursos: TradingView - Uma fantástica plataforma de gráficos visuais por conta própria, o TradingView é um ótimo parque infantil para ficar confortável com a análise técnica. Tem o benefício adicional de permitir estratégias de negociação de scripts e navegar em outras idéias de comércio de pessoas. Fórum Automatizado de Negociação - Grande comunidade on-line para postar perguntas para iniciantes e encontrar respostas para problemas comuns quando é apenas começar. Quantos fóruns são um ótimo lugar para mergulhar em estratégias, ferramentas e técnicas. Seminário do YouTube sobre idéias comerciais com exemplos de código de trabalho no Github. Aprendizado de máquinas: mais apresentações sobre negociação automatizada podem ser encontradas no Quantiacs Quant Club. A maioria das pessoas de base científica (seja ciência da computação ou engenharia) tiveram exposição a Python ou MATLAB, que são linguagens populares para financiamento quantitativo. A Quantiacs criou uma caixa de ferramentas de código aberto que fornece backtesting e 15 anos de histórico do mercado de dados gratuitamente. A melhor parte é que tudo é construído tanto no Python quanto no MATLAB, o que lhe permite escolher o que desenvolver o seu sistema. Tem uma tendência de exemplo - estratégia de negociação seguinte no MATLAB. Este é todo o código necessário para executar um sistema de negociação automatizado, mostrando tanto o poder do MATLAB quanto o Quantiacs Toolbox. Quantiacs permite que você negocie 44 futuros e todos os estoques do SampP 500. Além disso, uma variedade de bibliotecas adicionais, como o TensorFlow, são suportadas. (Disclaimer: Eu trabalho em Quantiacs) Uma vez que você esteja pronto para ganhar dinheiro como um quant, você pode participar do mais recente concurso de negociação automatizado da Quantiacs, com um total de 2.250.000 investimentos disponíveis: você pode competir com os melhores quants. Esta resposta foi completamente re Escritas Aqui estão 6 bases de conhecimento principais para a construção de sistemas de negociação algorítmica. Você deve estar familiarizado com todos eles para construir sistemas de negociação eficazes. Alguns dos termos utilizados podem ser um pouco técnicos, mas você deve ser capaz de compreendê-los pelo Google. Nota: (A maior parte) estes não se aplicam se você quiser fazer negociação de alta freqüência 1. Teorias de mercado Você precisa entender como o mercado funciona. Mais especificamente, você deve entender as ineficiências do mercado, as relações entre diferentes produtos de ativos e o comportamento dos preços. As idéias comerciais decorrem de ineficiências do mercado. Você precisará saber como avaliar as ineficiências do mercado que lhe dão uma vantagem comercial versus as que não. Projetar robôs efetivos implica entender como funcionam os sistemas de negociação automatizados. Essencialmente, uma estratégia de negociação algorítmica consiste em 3 componentes principais: 1) Entradas, 2) Saídas e 3) Dimensionamento da posição. Você precisará projetar esses 3 componentes em relação à ineficiência do mercado que você está capturando (e não, este não é um processo direto). Você não precisa saber matemática avançada (embora ajude se você pretende construir estratégias mais complexas). As boas habilidades de pensamento crítico e uma compreensão decente sobre as estatísticas o levarão muito longe. O design envolve backtesting (teste de vantagem comercial e robustez) e otimização (maximizando o desempenho com ajuste de curva mínimo). Você também precisa saber como gerenciar um portfólio de estratégias de negociação algorítmica. As estratégias podem ser complementares ou conflitantes, o que pode levar a aumentos não planejados na exposição ao risco ou hedging indesejados. A alocação de capital também é importante, você divide o capital igualmente durante intervalos regulares ou recompensa os vencedores com mais capital. Se você sabe quais produtos você quer negociar, encontre plataformas de negociação adequadas para esses produtos. Então, aprenda a API de linguagem de programação desta plataforma. Se você começar, eu recomendaria a Quantopian (ações somente), Quantconnect (ações e FX) ou Metatrader 4 (FX e CFDs em índices de ações, ações e commodities). As linguagens de programação utilizadas são Python, C e MQL4, respectivamente. 4. Gerenciamento de dados Lixo no lixo. Dados imprecisos levam a resultados de teste imprecisos. Precisamos de dados razoavelmente limpos para testes precisos. Os dados de limpeza são um trade-off entre custo e precisão. Se quiser dados mais precisos, você precisa gastar mais tempo (dinheiro no tempo) para limpá-lo. Alguns problemas que causam dados sujos incluem dados em falta, dados duplicados, dados errados (carrapatos ruins). Outras questões que levam a dados enganosos incluem dividendos, divisões de ações e rolamentos de futuros, etc. 5. Gerenciamento de risco Existem dois principais tipos de risco: risco de mercado e risco operacional. O risco de mercado envolve riscos relacionados à sua estratégia de negociação. Considera os cenários do pior caso. E se um evento de cisne negro como a Segunda Guerra Mundial acontecer? Você já escondeu o risco indesejado? O seu tamanho de posição é muito alto. Além de gerenciar o risco de mercado, você precisa olhar para o risco operacional. Choque do sistema, perda de ligação à Internet, algoritmo de execução fraca (levando a preços mal executados ou negócios perdidos devido à incapacidade de lidar com atrasos de alta exigência) e roubo de hackers são problemas muito reais. 6. Execução ao vivo Os backtesting e as negociações ao vivo são muito diferentes. Você precisará selecionar intermediários adequados (MM vs STP vs ECN). Forex Market News com Forex Trading Forums amp Forex Brokers Reviews é o seu melhor amigo, leia comentários do corretor lá. Você precisa de infra-estrutura adequada (VPN segura e gerenciamento de tempo de inatividade, etc.) e procedimentos de avaliação (monitorar o desempenho de seus robôs e analisá-los em relação às melhorias de ineficiência do mercado) para gerenciar seu robô ao longo de sua vida útil. Você precisa saber quando intervir (modificar a atualização de seus robôs) e quando não. Avaliação e Otimização de Estratégias de Negociação Pardo (Grandes idéias sobre métodos para construir e testar estratégias de negociação) Troque seu caminho para a Liberdade Financeira Van K Tharp (Ridiculous-Click isqueiro lado a lado, este livro é uma ótima visão geral dos sistemas de negociação mecânica) Quantitative Trading Ernest Chan (Grande introdução a algo trading em um nível de varejo). Negociação e intercâmbios: Microstructure de mercado para praticantes Larry Harris (A microestrutura de mercado é a ciência de como os intercâmbios funcionam e o que realmente acontece quando um comércio é colocado. É importante conhecer esta informação Mesmo que você esteja apenas começando) Algorithmic Trading amp DMA Barry Johnson (Shed luz sobre os algoritmos de execução dos bancos. Isso não é diretamente aplicável o seu algo trading, mas é bom saber) The Quants Scott Patterson (Histórias de guerra de alguns quants superiores. Como uma hora de dormir ler) Quantopian (Código, pesquisa e discutir idéias com a comunidade. Usa Python) Fundamentos da Algo Trading Algo Trading101 (Disclaimer: Eu possuo este sitecourse. Aprenda teorias de design de robôs, teorias de mercado e codificação. Usa o MQL4) - Junte-se ao desafio (Aprenda os conceitos de negociação e as teorias de backtesting. Recentemente, desenvolveram sua própria plataforma de backtesting e trading, então esta parte ainda é novidade para mim. Mas a base de conhecimento sobre os conceitos de negociação é boa.) Blogs recomendadosForuns , Fóruns de trading e algo trading): Linguagens de programação recomendadas: se você sabe quais produtos você quer negociar, encontre plataformas de negociação adequadas para esses produtos. Então, aprenda a API de linguagem de programação desta plataforma. Se você começar, eu recomendaria a Quantopian (ações somente), Quantconnect (ações e FX) ou Metatrader 4 (FX e CFDs em índices de ações, ações e commodities). As linguagens de programação utilizadas são Python, C e MQL4, respectivamente. Eu tenho um plano de fundo como programador e configurando equipes agilescrum antes de começar a olhar para negociação algorítmica. O mundo do comércio algorítmico me fascina, no entanto, pode ser um tanto irresistível. Comecei a ter alguma perspectiva mergulhando na plataforma de Quantopian, observando as séries de palestras e executando meus sistemas de troca de negócios baseados em comunidades adaptadas em seu ambiente. Como o que está abaixo: então, percebi para me aprofundar mais rápido, tenho que conhecer pessoas que gostam de criar estratégias de negociação, mas não podem programar - combinar-me como um gerente de equipe ágil e programador de sistemas de negociação. Então eu escrevi um livro sobre como criar uma equipe para implementar seus algoritmos de negociação. Construindo Sistemas de Negociação O Caminho Ágil: Como Construir Sistemas de Negociação de Algoritmos Vencedores como Equipe. Na comunidade de Quantopian, vi pessoas com experiência financeira à procura de pessoas para implementar suas estratégias comerciais, mas onde tem medo de pedir aos programadores que implementem suas idéias. Como eles potencialmente podem começar a executar suas idéias comerciais sem elas. Eu abordo esta questão no meu livro. Para evitar que os programadores escapem com suas idéias: crie uma especificação para sua idéia comercial que use uma estrutura de codificação adaptada ao tipo de estratégia que deseja desenvolver. Isso pode parecer difícil, mas quando você conhece todos os passos do bebê e como eles se encaixam, é bastante direto e divertido de gerenciar Se você gostou dessa resposta, por favor vote e siga. Embora este seja um tópico muito amplo com referências a algoritmos de construção, configuração de infraestrutura, alocação de ativos e gerenciamento de riscos, mas vou focar apenas na primeira parte de como deve ser trabalhar na construção de nosso próprio algoritmo e fazer as coisas certas. 1. Estratégia de construção. Alguns dos principais pontos a serem observados aqui são: Catch Big Trends - Uma boa estratégia deve, em todos os casos, ganhar dinheiro quando o mercado está em tendência. Os mercados vão com uma boa tendência que dura apenas 15-20 do tempo, mas esse é o momento em que todos os gatos e cachorros (comerciantes de todo o time-frame, intradiário, diário, semanal, longo prazo) estão fora de compras e todos Tem um tema comum. Muitos comerciantes também criam estratégias de reversão médias em que eles tentam julgar as condições quando o preço se afastou da média e negociar contra a tendência, mas eles devem ser construídos quando você criou e negociou com sucesso uma boa tendência seguindo os sistemas . Probabilidades de empilhamento - Muitas vezes, as pessoas trabalham na tentativa de construir um sistema que tenha um excelente índice de sucesso, mas isso não é a abordagem certa. Por exemplo, um algo com um vencedor de 70 com um lucro médio de 100 por troca e perda média de 200 por comércio apenas fará 100 por 10 transações (10trade net). Mas um algo com um vencedor de 30 com lucro médio de 500 por troca e perda de 100 por comércio fará um lucro líquido de 800 para 10 negócios (80trade). Portanto, não é necessário que o índice de ganhos seja bom, e sim as chances de empilhamento, o que deve ser melhor. Isto diz dizendo quotKeep perdas pequenas, mas deixe seus vencedores executarem. Quando investir, o que é confortável raramente é lucrativo. - Robert Arnott Drawdown - Drawdown é inevitável, se você estiver seguindo qualquer tipo de estratégia. Então, ao projetar um algo don039t, tente reduzir a redução ou faça alguma condição personalizada específica para cuidar dessa redução. Esta condição específica pode, no futuro, funcionar como um bloqueio na captura de uma grande tendência e seu algo pode apresentar um desempenho fraco. Gerenciamento de Riscos - Ao construir uma estratégia, você sempre deve ter um portão de saída, o que o mercado opte por fazer. O mercado é um lugar de probabilidades e você deve projetar um algo para tirá-lo de um comércio o mais rápido possível, se isso não corresponder ao seu apetite de risco. Normalmente, argumenta-se que você deve arriscar 1-2 de capital em cada comércio e é otimizado de muitas maneiras, mesmo que você obtenha arnd 10 negociações falsas em sucessão, seu capital irá diminuir apenas 20. Mas isso não é o Caso no cenário de mercado real. Algumas negociações em perdas serão entre 0 a 1, enquanto algumas podem chegar a 3-4, por isso é melhor definir o valor médio de perda de capital por troca e o capital máximo que você pode perder em um comércio, pois os mercados são completamente aleatórios e podem ser julgados . QuotEvery de vez em quando, o mercado faz algo tão estúpido, tira o fôlego. Jim Cramer 2. Testando e otimizando um Slippage Estratégico. Quando estamos testando uma estratégia em dados históricos, estamos sob o pressuposto de que a ordem será executada no preço predefinido chegado pelo algo. Mas isso nunca será o caso, pois temos que lidar com os criadores de mercado e os algoritmos de HFT agora. Seu pedido no mundo de hoje039 nunca será executado no preço desejado, e haverá uma derrapagem. Isso deve ser incluído no teste. Impacto do mercado: o volume negociado pelo algo é outro fator importante a ser considerado enquanto faz back-testing e coletando resultados históricos. À medida que o volume aumenta, as encomendas feitas por algo terão um considerável impacto no mercado e o preço médio da ordem preenchida será muito diferente. O seu algo pode produzir resultados diferentes completos nas condições reais do mercado, se você não estudar a dinâmica do volume que seu algo possui. Otimização: a maioria dos comerciantes sugere que você não faça ajustes de curva e sobre otimização e eles são corretos, pois os mercados são uma função de variáveis ​​aleatórias e nenhuma das duas situações será igual. Portanto, otimizar parâmetros para situações particulares é uma má idéia. Eu sugiro que você vá para a Otimização Zonal. É uma técnica que eu acompanho, compre zonas de identificação que tenham características semelhantes em termos de volatilidade e volume. Otimize essas áreas separadamente, ao invés de otimizar todo o período. Os itens acima são alguns dos passos mais básicos e mais importantes que eu acompanho, ao converter um pensamento básico em um algoritmo e verificando a validade do mesmo. Quase todos têm a força intelectual para seguir o mercado acionário. Se você conseguiu através da matemática de quinto grau, você pode fazê-lo. QuotPeter Lynch Para começar com o básico, apanhe o Amibroker (AmiBroker - Download). Amibroker tem uma linguagem fácil de aprender e um poderoso mecanismo de backtest onde você pode prototipar suas idéias. Também obtenha o livro Howard Bandy 039s Quantitative Trading Systems. Este livro é uma introdução muito boa aos conceitos de desenvolvimento de quant. Você também precisa de pelo menos um conhecimento básico de estatísticas. Há uma abundância de bons cursos MOOC disponíveis para isso gratuitamente. Tal como este, Statistics One - Princeton University Coursera It039s também vale a pena seguir The Whole Street. Que é um mashup de todos os quant blogs, muitos dos quais publicam código Amibroker com suas idéias. A partir daí, vale a pena aprender Python (aprender python - Pesquisa do Google), e também fazer o excelente curso de Aprendizado de Máquinas Universitárias Stanford da Andrew Ng039, que é gratuito na Coursera. Se você quiser colocar seus próprios algoritmos no teste, bons sites para isso são Quantconnect ou Quantopian. Finalmente, esse cara tem alguns bons conselhos sobre transformá-lo em sua carreira quantstart Boa sorte com a jornada Tomada parcialmente da resposta de Alan Clement039s Como pode um desenvolvedor de software em finanças se tornar um desenvolvedor quantitativo Ver mais respostas Questões relacionadas Questões relacionadas

No comments:

Post a Comment