Código fonte do sistema de negociação


Códigos Fonte.
Você está tomando o curso de negociação algorítmica? Se você é, então você está no lugar certo!
Nesta página, você encontrará links para todos os códigos fonte discutidos no curso.
Aviso Legal.
Estou informando que esses códigos-fonte e qualquer outro código e outros programas / scripts / consultores / indicadores especializados que você baixar e / ou copiar deste site estão sendo fornecidos exclusivamente para fins educacionais. Esses códigos fonte destinam-se a ser utilizados no curso de negociação algorítmica, que é projetado para ajudá-lo a aprender como programar no MQL4. Qualquer informação é fornecida & # 8216; como é & # 8217; exclusivamente para fins informativos e não se destina a fins de negociação ou aconselhamento. O desempenho passado não é garantia de resultados futuros. Se você optar por usar esses códigos-fonte em qualquer conta de negociação, você está fazendo isso por sua conta e risco.
Você notará que alguns dos links também contêm vídeos. Estes são vídeos de pré-visualização para estudantes que consideram tomar o curso MQL4. Observe que o curso completo só está disponível para alunos matriculados.
Categorias.
Curso: Forex Trading for Beginners (3) Curso: MQL4 para Iniciantes Completos (45) Curso: Testador de Estratégia para Iniciantes (8) FOREX (32) Forex Stategy (12) Estratégia Forex (19) Forex Trading para Iniciantes (23) Forex VPS (1) Entrevistas (1) MQL4 (1) Uncategorized (21)
Postagem recente.
Tags populares.
COMEÇAR COM A ACADEMIA DE NEGOCIAÇÃO FOREX.
Forexboat Pty Ltd (ABN: 29 609 855 414), um Representante Autorizado Corporativo (AR No. 001238951) da HLK Group Pty Ltd (ACN: 161 284 500) que detém uma Licença Australiana de Serviços Financeiros (AFSL nº 435746). Qualquer informação ou conselho contida neste site é de natureza geral e não constitui um conselho pessoal ou de investimento. Não aceitamos nenhuma responsabilidade por qualquer perda ou dano, incluindo, sem limitação, qualquer perda de lucro, que possa surgir direta ou indiretamente do uso ou dependência de tais informações. Você deve procurar um conselho financeiro independente antes de adquirir um produto financeiro. Todas as operações de produtos e instrumentos financeiros e de valores mobiliários envolvem riscos. Lembre-se de que os resultados do desempenho passado não são necessariamente indicativos de resultados futuros.
A informação neste site pode ser acessada em todo o mundo, no entanto, não é direcionada a residentes em qualquer país ou jurisdição onde tal distribuição ou uso seja contrário à lei ou regulamento local. Forexboat Pty Ltd não está registrado com qualquer regulador dos EUA, incluindo a National Futures Association (& # 8220; NFA & # 8221;) e Commodity Futures Trading Commission (& # 8220; CFTC & # 8221;); portanto, produtos e serviços oferecidos neste site não são destinado a residentes dos Estados Unidos.

Código-fonte do sistema de negociação
Pegue os pedidos 1.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Parity é uma plataforma de software de código aberto para locais de negociação. Ele pode ser usado para executar um mercado financeiro, desenvolver agentes comerciais algorítmicos ou microestrutura do mercado de pesquisa.
Paridade requer Java Runtime Environment (JRE) 8 ou posterior.
Paridade contém as seguintes aplicações:
O Parity Trading System é um aplicativo de servidor para executar uma troca financeira.
O Parity FIX Gateway é um aplicativo de servidor que adiciona suporte ao Financial Information Exchange (FIX) ao sistema de negociação.
Parity Terminal Client é um aplicativo de console simples para inserir pedidos no sistema de negociação.
O Parity Stock Ticker é um aplicativo de console simples que exibe os melhores preços e os mais recentes negócios no sistema de negociação.
O Parity Trade Reporter é um aplicativo de console simples que exibe todos os negócios ocorridos no sistema de negociação.
Veja o Wiki para obter aplicativos adicionais.
Paridade contém as seguintes bibliotecas:
Parity Order Book implementa reconstrução de livro de pedidos de alto desempenho na JVM.
Parity Network Protocols especifica e implementa protocolos de rede usados ​​pelo sistema comercial.
Os formatos de arquivo Parity especificam e implementam os formatos de arquivo usados ​​pelo sistema comercial.
Parity Matching Algorithm implementa o algoritmo de correspondência usado pelo sistema de negociação.
Parity Utilities contém funções de suporte usadas pelo sistema de negociação.
Paridade contém os seguintes aplicativos de teste:
Construa paridade com Maven:
Para obter mais informações sobre Parity:
Siga @paritytrading no Twitter para novidades e anúncios Participe do paritytrading / chat no Gitter para discussões.
Copyright 2018 Jussi Virtanen e colaboradores.
Lançado sob a Licença Apache, Versão 2.0. Consulte LICENSE. txt para obter detalhes.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Código-fonte do sistema de negociação
Obter através da App Store Leia esta publicação em nosso aplicativo!
Que plataforma de negociação de código aberto está disponível.
Gostaria de compilar uma lista de plataformas de negociação de código aberto. Algo que daria uma visão geral e comparação de diferentes arquiteturas e abordagens.
Quantopian fornece um ambiente de pesquisa gratuito, backtester e plataforma de negociação ao vivo (os algos podem ser conectados aos corretores interativos). O ambiente de desenvolvimento de algoritmos inclui ferramentas de colaboração realmente úteis e um depurador de código aberto. Eles fornecem toneladas de dados (mesmo os fundamentos da Morningstar!) Gratuitamente.
A plataforma de Quantopian é construída em torno do Python e inclui todo o código aberto que a comunidade Python tem para oferecer (Pandas, NumPy, SciKitLearn, iPython Notebook, etc.)
Comerciantes vivos bem-sucedidos serão oferecidos pontos no Quantopian Managers Program, um hedge fundado por multidões.
Zipline é o motor de backtesting de fonte aberta que alimenta a Quantopian. Ele fornece uma grande biblioteca de negociação algorítmica Pythonic que se aproxima de como funcionam os sistemas de negociação ao vivo.
(divulgação completa: eu trabalho em Quantopian)
O QuantConnect fornece um projeto aberto, baseado na comunidade chamado Lean. O projeto tem milhares de engenheiros que usam isso para criar estratégias orientadas a eventos, em qualquer dado de resolução, qualquer classe de mercado ou de ativos.
Nosso sistema modela alavancas de margem e chamadas de margem, limitações de caixa, custos de transação. Nós mantemos um cashbook cheio de suas moedas. É tão próximo da realidade quanto possível. É 20x mais rápido do que Zipline, e é executado em qualquer classe de ativos ou mercado. Nós fornecemos dados tick, second ou minute em Equities e Forex gratuitamente.
Sou um fundador @ QuantConnect.
Janeiro de 2017: agora oferecemos opções de opções, Futuros, Forex, CFD e US Equity intraday backtesting através da QuantConnect.
Lista de links / projetos com os quais tropecei enquanto fazia a pesquisa:
Para hedge funds existe uma famosa solução famosa disponível publicamente (referenciada por wiki), mas não "open source". (O material de "fonte aberta" geralmente é colocado ao redor por entusiastas, sem pistas sobre o real trading.)
Como um iniciante no AlgoTrading QuantConnect e Quantopian são excelentes para praticar e melhorar suas habilidades, mas para um Algo Trader sério, eles são basicamente inúteis. O Algo Trader requer flexibilidade para investigar idéias comerciais e adicionar ou remover bibliotecas ou partes do sistema que não funcionam. Você precisa reavaliar automaticamente e constantemente seus sistemas. Nesse nível de negociação, a Quantpian e a Quantconnect são muito rígidas e completamente incapazes. Pode ser em alguns anos, eles estarão em um nível onde a implementação de novas idéias comerciais com bibliotecas mais avançadas é possível. Estas duas startups estão à procura de dinheiro, simples e simples. Se você tem desenvolvido algos que são realmente lucrativos e você está no mercado comercial. Se você trabalhou com Big Boys, Hedge funds, HFT e empresas comerciais, você saberá por que eu digo isso. Apenas tenha cuidado, não coloque todos os seus ovos em uma cesta.
QuantConnect e Quantopian foram as primeiras plataformas de negociação algorítmicas que se tornaram disponíveis e são as mais avançadas (mesmo que eles precisam de muito mais trabalho para um comerciante profissional, eles são um bom ponto de partida).
Este é um mercado emergente, muitas startups estão aumentando. Atualmente, novas plataformas estão disponíveis, por exemplo:
Toda plataforma possui características próprias, mas, em geral, todos eles estão em progresso. Levará mais alguns anos antes de poder ter uma plataforma de negociação estável na qual você possa confiar e que oferece tudo o que você precisa para negociação profissional.
Há este escrito por mim alguns anos atrás chamado autoStock. Vale a pena dar uma olhada.

Código-fonte do sistema de negociação
Escreva sistemas de negociação automatizados, conecte-se com 17+ agências de corretores.
AIOTrade (anteriormente Humai Trader Platform) é uma plataforma de análise técnica gratuita e de código aberto construída em Java puro.
Manticore-trader é um software java gratuito e aberto para warrants comerciais em estoque, moedas e comodities. Inclui módulos para gerenciamento de posicionamento e risco, pedidos automáticos e negociação de sistemas. Instrumentos e cotações dos principais mercados financeiros são fornecidos diariamente.
G-BOT é um projeto acadêmico público, liderado pelo Prof. Tom Gastaldi (primeira Universidade de Roma, La Sapienza). O projeto é sobre o estudo de algoritmos de negociação e estratégias totalmente automatizadas para rentabilidade sistemática.
A Marketcetera concentra-se na construção das principais funções de negociação comuns a todas as organizações, liberando nossos clientes para se concentrar em algoritmos de negociação proprietários e outros softwares especializados que ofereçam uma vantagem competitiva.
O Mercador de Veneza.
O MOV é um programa de negociação no mercado de ações que suporta gerenciamento de portfólio, gráficos, análise técnica, comércio de papel e programação genética. A Veneza é executada em uma interface gráfica de usuário com ajuda online e possui documentação completa.
Aplicação da plataforma Eclipse Rich Client (RCP) com comparações de preços, gráficos intraday e históricos com indicadores de análise técnica, nível II / visão de profundidade de mercado, observação de notícias e negociação integrada.
Todos os aspectos da negociação, como a obtenção de preços no mercado, a análise de padrões de preços, a tomada de decisões comerciais, a colocação de pedidos, a monitoração de execuções de ordens e o controle do risco são automatizados de acordo com as preferências do usuário. JBookTrader é uma "irmã" projeto para o JSystemTrader.
A ferramenta de desktop perfeita para modelos matemáticos, estatísticos e cálculos complexos. Adaptadores para matlab, scilab, oitava, R.
A OpenGamma fornece tecnologia para instituições financeiras para melhorar o cálculo e a entrega de análise para os usuários de front-office e de risco.
O Open Java Trading System (OJTS) deve ser uma infra-estrutura comum para desenvolver sistemas de negociação (estoque). Existem quatro partes: recolha de dados brutos através da internet, reconhecimento de sinais comerciais, módulo de visualização e negociação com bancos.
Joone é uma estrutura de rede neural escrita em Java (tm). É composto por um motor principal, um editor GUI e um ambiente de treinamento distribuído e pode ser estendido escrevendo novos módulos para implementar novos algoritmos ou arquiteturas a partir do componente base.
Ambiente modular para visualização gráfica de dados do tipo de mercado de ações.
SFL Java Trading System Enviroment (Última atualização em 2009-07-17)
Aplicação Java baseada no princípio KISS (Keep It Simple, Stupid) e seu objetivo é fornecer uma infraestrutura rápida e plataforma independente para desenvolver e executar sistemas de negociação.
Coisas bastante pesadas, apenas para programadores experientes.
Desenvolvido para trabalhar com a API Interactive Broker, sistema de negociação totalmente automatizado (ATS) que pode negociar vários tipos de títulos de mercado durante o dia de negociação sem monitoramento do usuário.
Sistema de análise de mercados financeiros utilizando análise técnica. Inclui instalações para gráficos de estoque e gráficos de futuros, bem como geração automatizada de sinais de negociação com base em critérios selecionados pelo usuário. Opera nos dados diários e intraday.
Análise técnica completa e amp; sistema de negociação, conjunto completo de recursos: recuperar, analisar dados de ações do EOD; gerenciar múltiplas carteiras; análise técnica & amp; renderização gráfica; redes neurais para geração de sinais comerciais; apoiar a comunidade de comerciantes
Compartilhar Compartilhe esta publicação no Digg Del. icio. us Technorati Twitter.
Não temas, não assuste nenhum.
O AlgoTrader é um sistema de negociação automatizado (ATS) que pode negociar qualquer tipo de segurança em qualquer mercado disponível através do InteractiveBrokers ou do FIX. Todos os aspectos da negociação, como obter dados de mercado, analisar preços, tomar decisões comerciais, colocar pedidos e amp; As execuções de rastreamento podem ser automatizadas.
Compartilhar Compartilhe esta publicação no Digg Del. icio. us Technorati Twitter.
Compartilhar Compartilhe esta publicação no Digg Del. icio. us Technorati Twitter.
Não temas, não assuste nenhum.
Compartilhar Compartilhe esta publicação no Digg Del. icio. us Technorati Twitter.
Compartilhar Compartilhe esta publicação no Digg Del. icio. us Technorati Twitter.
Não temas, não assuste nenhum.
Estarei atualizando esta lista regularmente, por favor, adicione seus comentários.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 17 de março de 2018.
Na entrada de hoje do Forex Trading Diary eu quero discutir o plano de longo prazo para o sistema de negociação forex. Além disso, quero descrever como usei o tipo de dados Decimal do Python para tornar os cálculos mais precisos.
Até o momento, experimentamos a OANDA Rest API para ver como comparado com a API fornecido pela Interactive Brokers. Também vimos como adicionar um elemento de replicação de portfólio básico como o primeiro passo para um sistema de backtesting baseado em eventos apropriado. Eu também tive alguns comentários úteis sobre os dois artigos anteriores (# 1 e # 2), o que sugere que muitos de vocês estão interessados ​​em mudar e ampliar o código.
Open Sourcing do Forex Trading System.
Pelas razões acima descritas, decidi optar por abrir o sistema de negociação forex. O que isto significa? Isso significa que todos os códigos atuais e futuros estarão disponíveis de graça, sob uma licença MIT open source liberal, no site de controle de versão Github no seguinte URL: https: // github / mhallsmoore / qsforex.
Para aqueles de vocês que usaram o git e o Github antes, você poderá clonar o retomado e começar a modificá-lo para seus próprios propósitos.
O QuantStart Automated Forex Trading System agora é open-source sob uma licença MIT liberal. Você pode encontrar o código mais recente no Github sob o repositório qsforex em https: // github / mhallsmoore / qsforex.
Para aqueles que são novos para o controle de versão de origem, você provavelmente quer ler sobre como o git (e o controle de versão em geral) funcionam com o fantástico ebook grátis Pro Git. Vale a pena passar algum tempo aprendendo sobre o controle de origem, pois isso irá poupar-lhe uma enorme quantidade de dor de cabeça futura se você gastar muito tempo programando e atualizando projetos!
O "início rápido" para um sistema Ubuntu é instalar o git:
Você precisará fazer um diretório para o projeto qsforex para viver e "clone" o projeto do site Github da seguinte maneira:
Neste ponto, você precisará criar um ambiente virtual no qual executar o código:
Você precisará instalar os requisitos (isso levará algum tempo!):
Finalmente, você precisará criar um link simbólico em seu ambiente virtual Python para permitir que você digite importar qsforex em seu código (e execute-o!):
Como mencionei nas entradas anteriores, você precisará criar as variáveis ​​de ambiente necessárias para suas credenciais de autenticação OANDA. Por favor, veja a entrada do diário nº 2 para obter instruções sobre como fazer isso.
Preste atenção ao README associado ao repo, pois contém instruções de instalação, um aviso legal e uma garantia sobre o uso do código.
Uma vez que o software está no modo "alfa", essas instruções se tornarão mais diretas à medida que o tempo avança. Em particular, vou tentar enrolar o projeto em um pacote Python para que ele possa ser facilmente instalado via pip.
Se você tiver alguma dúvida sobre o procedimento de instalação, então não hesite em me enviar um e-mail no mike @ quantstart.
Plano a longo prazo.
A "filosofia" do sistema de negociação forex, como no resto do site QuantStart, é tentar imitar o comércio da vida real tanto quanto possível em nosso backtesting. Isso significa incluir os detalhes que muitas vezes são excluídos de mais situações de teste de "pesquisa orientada". Latência, interrupções do servidor, automação, monitoramento, custos de transação realistas serão incluídos nos modelos para nos dar uma boa idéia de quão bem uma estratégia é susceptível de realizar.
Uma vez que teremos acesso a dados de ticks (timestamps de lance / pedido), poderemos incorporar o spread nos custos de transação. Nós também podemos modelar o deslizamento. É menos direto modelar o impacto do mercado, embora isso seja menos preocupante em menores montantes de negociação.
Além dos custos de transação, queremos modelar o gerenciamento de portfólio robusto usando sobreposições de risco e dimensionamento de posição.
Então, o que atualmente está incluído no Forex Trading System até à data?
Arquitetura dirigida por eventos - O sistema de negociação forex foi projetado como um sistema orientado a eventos desde o início, pois é assim que um sistema de negociação intradía será implementado em um ambiente ao vivo. Streaming de preços - Temos um objeto básico de transmissão de preços. Isso atualmente gerencia a assinatura de apenas um único par, mas podemos facilmente modificar isso para se inscrever em vários pares de moedas. Geração de sinal - Podemos incorporar estratégias de negociação (baseadas diretamente nos preços do tiquete passado e atual) usando o objeto Estratégia, que cria objetos do SignalEvent. Execução de Ordem - Temos um sistema de execução de ordens ingênuo que envia cjamente ordens do Portfolio para OANDA. Por "cegamente" quero dizer que não há gerenciamento de risco ou dimensionamento de posição sendo realizado, nem qualquer execução algorítmica que possa levar a custos de transação reduzidos. GBP Currency Base - Para manter as coisas simples, eu apenas escrevi o sistema para a moeda base do GBP. Este é talvez o aspecto mais importante a modificar dado quantos de vocês terão contas de prática denominadas em USD, EUR, CAD, JPY, AUD e NZD! GBP / USD Trading - Eu escolhi "o cabo" como o par de moedas para testar os objetos iniciais de Posição e Portfolio. Manter vários pares de moedas é um importante passo seguinte. Isso envolverá modificação na posição e nos cálculos do portfólio. Manipulação decimal - Qualquer sistema de comércio de produção deve lidar corretamente com cálculos de moeda. Em particular, os valores de moeda não devem ser armazenados como tipos de dados de ponto flutuante, uma vez que os erros de arredondamento serão acumulados. Por favor, veja este artigo fantástico sobre representações de ponto flutuante para mais detalhes. Negociação longa / curta - Entre entradas diárias # 2 e # 3 adicionei a capacidade de reduzir um par de moedas (ao contrário de apenas poder aguentar). Crucialmente, isso também é testado por unidade. Manipulação local de portfólio - Na minha opinião, realizar um backtest que infla o desempenho da estratégia devido a pressupostos irrealistas é irritante na melhor das hipóteses e extremamente inútil na pior das hipóteses! A introdução de um objeto de portfólio local que replica os cálculos OANDA significa que podemos verificar nossos cálculos internos ao realizar negociações de práticas, o que nos dá maior confiança quando usamos mais tarde esse mesmo objeto de portfólio para fazer backtesting em dados históricos. Testes unitários para posição / Portfolio - Embora eu não tenha mencionado isso diretamente nas entradas diárias # 1 e # 2, eu realmente escrevi alguns testes de unidade para os objetos Portfolio e Position. Uma vez que estes são tão cruciais para os cálculos da estratégia, é preciso estar extremamente confiante de que eles funcionam como esperado. Um benefício adicional desses testes é que eles permitem que o cálculo subjacente seja modificado, de modo que, se todos os testes ainda passam, podemos ter certeza de que o sistema geral continuará a se comportar conforme o esperado.
Nesta fase, o Forex Trading System está faltando a seguinte funcionalidade:
Manipulação de Slippage - O sistema está gerando um grande deslizamento devido à natureza de alta frequência dos dados de carrapatos fornecidos pela OANDA. Isso significa que o saldo da carteira calculado localmente não reflete o saldo calculado pela OANDA. Até que o ajuste correto do evento e o ajuste do deslizamento sejam realizados, isso significará que um backtest não refletirá corretamente a realidade. Múltiplas moedas básicas - atualmente estamos restritos a GBP. No mínimo, precisamos incluir as principais divisas - USD, EUR, CAD, AUD, JPY e NZD. Múltiplos pares de moedas - Da mesma forma, precisamos apoiar os principais pares de moedas além do "Cabo" (GBP / USD). Existem dois aspectos para isso. O primeiro é gerenciar corretamente os cálculos quando nem a base ou a cotação de um par de moedas é igual à moeda da denominação da conta. O segundo aspecto é apoiar várias posições para que possamos negociar um portfólio de pares de moedas. Gerenciamento de Riscos - Muitos testes de "pesquisa" ignoram completamente o gerenciamento de riscos. Infelizmente, isso geralmente é necessário para a brevidade ao descrever as regras de uma estratégia. Na realidade, devemos usar uma sobreposição de risco ao negociar, caso contrário, é extremamente provável que sofreremos uma perda substancial em algum momento. Isso não quer dizer que o gerenciamento de riscos possa evitar isso inteiramente, mas certamente o torna menos provável! Otimização de portfólio - Em um cenário institucional, teremos um mandato de investimento, que ditará um sistema robusto de gerenciamento de portfólio com várias regras de alocação. Em um ambiente varejo / pessoal, talvez desejemos usar uma abordagem de dimensionamento de posição, como o Critério de Kelly, para maximizar a nossa taxa de crescimento agendada a longo prazo. Estratégias robustas - Só demonstrei algumas estratégias de "brinquedo" geradoras de sinal aleatório simples até à data. Agora que estamos começando a criar um sistema de negociação forex intraday confiável, devemos começar a realizar algumas estratégias mais interessantes. As entradas futuras do diário concentrar-se-ão em estratégias tiradas de uma mistura de indicadores / filtros "técnicos", bem como modelos de séries temporais e técnicas de aprendizado de máquina. Implantação remota - Uma vez que estamos potencialmente interessados ​​em negociar 24 horas (pelo menos durante a semana!), Exigimos uma configuração mais sofisticada do que executar o backtester em uma máquina de desktop / laptop local em casa. É vital que criemos uma implantação de servidor remoto robusto do nosso sistema com redundância e monitoramento apropriados. Backtesting Histórico - Construímos o objeto Portfolio para nos permitir realizar backtesting realista. Neste estágio, estamos faltando um sistema histórico de armazenamento de dados de carrapatos. Nos artigos subsequentes, analisaremos a obtenção de dados históricos do carrapato e armazená-lo em um banco de dados apropriado, como o HDF5. Banco de dados de comércio - Eventualmente, gostaríamos de armazenar nossos negócios ao vivo em nosso próprio banco de dados. Isso nos permitirá realizar nossas próprias análises em dados de negociação ao vivo. Uma boa recomendação para um banco de dados relacional seria PostgreSQL ou MySQL. Monitoramento e alta disponibilidade - Como estamos considerando um sistema intradía de alta freqüência, devemos colocar um monitoramento abrangente e uma redundância de alta disponibilidade no local. Isso significa informar sobre o uso da CPU, uso de disco, E / S de rede, latência e verificar se qualquer script periódico está configurado para continuar sendo executado. Além disso, precisamos de uma estratégia de backup e restauração. Pergunte-se quais os planos de backup que você teria no lugar se você tivesse grandes posições abertas, em um mercado volátil e seu servidor de repente morreu. Acredite, isso acontece! Integração Multiple Broker / FIX - No momento estamos fortemente acoplados ao corretor OANDA. Como eu disse, isso é simplesmente porque eu encontrei sua API e achei que ela era uma oferta moderna. Há muitos outros corretores lá fora, muitos dos quais suportam o protocolo FIX. A adição de uma capacidade FIX aumentaria o número de corretores que poderiam ser usados ​​com o sistema. GUI Controle e Relatórios - Agora o sistema é completamente baseado em console / linha de comando. No mínimo, precisaremos de algum gráfico básico para exibir os resultados do backtest. Um sistema mais sofisticado incorporará estatísticas resumidas de negócios, métricas de desempenho de nível estratégico, bem como o desempenho geral do portfólio. Esta GUI poderia ser implementada usando um sistema de janelas multiplataforma, como Qt ou Tkinter. Também pode ser apresentado usando um front-end baseado na web, utilizando uma estrutura web como o Django.
Como pode ser visto, há muita funcionalidade no roteiro! Dito isto, cada nova entrada no diário (e potenciais contribuições da comunidade!) Moverá o projeto para a frente.
Tipos de dados decimais.
Agora que discutimos o plano de longo prazo, quero apresentar algumas das alterações que fiz no código desde a entrada do diário nº 2. Em particular, quero descrever como modifiquei o código para lidar com o tipo de dados Decimal em vez de usar o armazenamento em ponto flutuante. Esta é uma mudança extremamente importante, já que as representações de ponto flutuante são uma fonte substancial de erro de longo prazo em sistemas de gerenciamento de pedidos e portfólio.
O Python suporta nativamente representações decimais a uma precisão arbitrária. A funcionalidade está contida na biblioteca decimal.
Em particular, precisamos modificar todo valor que aparece em um cálculo de Posição para um tipo de dados Decimal. Isso inclui as unidades, a exposição, pips, lucro e lucro percentual. Isso garante que estamos no controle total de como os problemas de arredondamento são tratados quando se trata de representações de moeda que têm duas casas decimais de precisão. Em particular, precisamos escolher o método de arredondamento. O Python suporta alguns tipos diferentes, mas iremos com ROUND_HALF_DOWN, que arredondará para o inteiro mais próximo com os laços indo em direção a zero.
Aqui está um exemplo de como o código é modificado para lidar com tipos de dados decimais de suas representações de ponto flutuante anteriores. O seguinte é uma lista de position. py:
Observe que devemos fornecer Decimal com um argumento de string, em vez de um argumento de ponto flutuante. Isso ocorre porque uma string especifica precisamente a precisão do valor, enquanto que um tipo de ponto flutuante não.
Observe também que, quando começarmos a armazenar nossos negócios em um banco de dados relacional (conforme descrito acima no roteiro), teremos de garantir que mais uma vez usemos o tipo de dados correto. O PostgreSQL eo MySQL suportam uma representação decimal. É vital que utilizemos esses tipos de dados quando criamos nosso esquema de banco de dados, caso contrário, nos armaremos em erros de arredondamento que são extremamente difíceis de diagnosticar!
Para aqueles que estão interessados ​​em uma discussão mais profunda sobre essas questões, em matemática e informática, o assunto da Análise Numérica cobre problemas de ponto flutuante, entre muitos outros tópicos interessantes.
Nas entradas diárias subseqüentes, vamos discutir como apliquei testes de unidades ao código e como podemos estender o software para mais pares de moedas modificando os cálculos de posição.
Código completo do Python.
Uma vez que o código fonte completo para o projeto agora é de código aberto, sob uma licença MIT, ele sempre pode ser encontrado em https: // github / mhallsmoore / qsforex, com a documentação que o acompanha.
Se você quiser ler as outras entradas da série, siga os links abaixo:
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

Comments

Popular posts from this blog

Cadeias de opções de estoque semanais

Os principais indicadores técnicos para negociação de opções

Compreender a estratégia de diversificação de samsungs