Tuesday 21 November 2017

Open source learning forex trading no Brasil


Forex Trading Diary 3 - Abrir Sourcing Forex Trading System 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, eu quero descrever como eu usei o tipo de dados decimais Pythons para fazer cálculos mais precisos. Até o momento, estamos experimentando a OANDA Rest API para ver como ela se compara à API fornecida por Interactive Brokers. Weve também viu como adicionar em um elemento de replicação básica de portfólio como o primeiro passo para um bom sistema de backtesting conduzido por eventos. Ive também teve alguns comentários úteis sobre ambos os artigos anteriores (1 e 2), o que sugere que muitos de vocês estão interessados ​​em mudar e estender o código-se. Open Sourcing Forex Trading System Pelas razões acima descritas eu decidi abrir-fonte do sistema de negociação forex. O que isso significa? Significa que todos os códigos atuais e futuros estarão disponíveis gratuitamente, sob uma licença MIT open source liberal, no site de controle de versão Github no seguinte URL: githubmhallsmooreqsforex. Para aqueles de vocês que já usaram git e Github antes, você será capaz de git clone o repo e começar a modificá-lo para seus próprios fins. 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 githubmhallsmooreqsforex. Para aqueles de vocês que são novos para o controle de versão de origem, você provavelmente vai querer ler sobre como git (e controle de versão em geral) funciona com o fantástico livre ebook Pro Git. Vale a pena gastar algum tempo aprendendo sobre o controle de origem, pois ele vai lhe poupar uma enorme quantidade de dor de cabeça futuro, se você gastar muito tempo de programação e atualização de projetos O início rápido para um sistema Ubuntu é instalar git: Você precisará fazer Um diretório para o projeto qsforex para viver e clonar o projeto a partir do site Github da seguinte forma: Neste ponto, você precisará criar um ambiente virtual no qual executar o código: Você precisará instalar os requisitos (isso vai levar Algum tempo): Finalmente, você precisará criar um link simbólico em seu ambiente virtual Python para permitir que você digite qsforex de importação em seu código (e executá-lo): Como mencionei nas entradas anteriores, você precisará criar as variáveis ​​de ambiente necessárias Para suas credenciais de autenticação OANDA. Consulte a entrada 2 do diário 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 de isenção de responsabilidade e uma garantia sobre como usar o código. Como o software está no modo alfa, essas instruções se tornarão mais simples à medida que o tempo avança. Em particular, vou tentar envolver 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 mikequantstart. Plano de Longo Prazo A filosofia do sistema de negociação forex, assim como o 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 orientada para a investigação backtesting situações. Latência, interrupções de 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 aos dados de tick (bidask timestamps), seremos capazes de incorporar o spread nos custos de transação. Podemos também modelar o deslizamento. É menos direto modelar o impacto no mercado, embora este seja menos uma preocupação em quantidades negociando menores. Além dos custos de transação, queremos modelar o gerenciamento robusto da carteira usando sobreposições de risco e dimensionamento de posição. Então, o que está atualmente incluído no Sistema de Negociação Forex até à data Arquitetura Orientada a Eventos - O sistema de negociação forex foi concebido como um sistema orientado a eventos a partir do zero, pois é assim que um sistema de negociação intraday será implementado em um ambiente ao vivo . Streaming de preços - Temos um objeto básico de streaming de preços. Atualmente, trata-se da assinatura de apenas um par, mas podemos modificá-lo facilmente para subscrever vários pares de moedas. Geração de sinal - Podemos incorporar estratégias de negociação (baseadas diretamente nos preços de atributos passados ​​e atuais) usando o objeto Estratégia, que cria objetos SignalEvent. Execução de Ordens - Temos um sistema de execução de ordens ingênuo que envia cegamente ordens do Portfólio para a 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 pode levar a custos de transação reduzidos. GBP Moeda Base - Para manter as coisas simples, eu só escrevi o sistema para a moeda base GBP. Este é talvez o aspecto mais importante a modificar, dado quantos de vocês terão práticas contas denominadas em USD, EUR, CAD, JPY, AUD e NZD GBPUSD Trading - Escolhi o cabo como o par de moedas para testar a Posição inicial e os objetos Portfolio com. Manipular vários pares de moedas é uma etapa importante. Isto implicará a modificação dos cálculos da posição e da carteira. Decimal Manipulação - 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 irão acumular. Consulte este fantástico artigo sobre representações de ponto flutuante para obter mais detalhes. LongShort Trading - entre entradas de diário 2 e 3 eu adicionei a capacidade de curto um par de moedas (em oposição a apenas ser capaz de ir por muito tempo). Crucialmente, este também é testado unidade. Manipulação de portfólio local - Na minha opinião, realizar um backtest que infla o desempenho da estratégia devido a suposições irrealistas é irritante na melhor das hipóteses e extremamente não rentável na pior Apresentação de um objeto de portfólio local que replica os cálculos OANDA significa que podemos verificar nossos cálculos internos ao realizar a prática Negociação. O que nos dá maior confiança quando mais tarde usamos esse mesmo objeto de portfólio para backtesting em dados históricos. Testes unitários para PositionPortfolio - Embora eu não tenha mencionado isso diretamente nas entradas 1 e 2 do diário, eu realmente tenho escrito alguns testes unitários para os objetos Portfolio e Position. Uma vez que estes são tão cruciais para os cálculos da estratégia, deve-se estar extremamente confiante de que eles funcionam como esperado. Um benefício adicional de tais testes é que eles permitem que o cálculo subjacente seja modificado, de forma que se todos os testes ainda passarem, podemos estar confiantes de que o sistema geral continuará a se comportar como esperado. Nesta fase, o Forex Trading System está faltando a seguinte funcionalidade: Manuseio de deslizamento - O sistema está gerando atualmente uma grande quantidade de deslizamento devido à natureza de alta freqüê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 correto manuseio de eventos eo ajuste de deslizamento sejam realizados, isso significa que um backtest não refletirá corretamente a realidade. Moedas de Base Múltiplas - Atualmente, estamos restritos a GBP. No mínimo, precisamos incluir as principais denominações monetárias - USD, EUR, CAD, AUD, JPY e NZD. Pares múltiplos da moeda - Igualmente nós necessitamos suportar os pares principais da moeda corrente além do cabo (GBPUSD). Existem dois aspectos para isso. O primeiro é tratar 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 trocar uma carteira de pares de moedas. Gestão de Risco - Muitos backtests de pesquisa ignoram completamente o gerenciamento de risco. Infelizmente isso é geralmente necessário para a brevidade na descrição das regras de uma estratégia. Na realidade, devemos - deve - usar uma sobreposição de risco quando a negociação, caso contrário, é extremamente provável que vamos sofrer uma perda substancial em algum momento. Isso não quer dizer que a gestão de risco possa impedir isso completamente, mas certamente o torna menos provável. Otimização de Carteira - Em um cenário institucional teremos um mandato de investimento, que ditará um robusto sistema de gerenciamento de portfólio com várias regras de alocação. Em um ambiente de varejo, talvez desejemos usar uma abordagem de dimensionamento de posição, como o Critério de Kelly, para maximizar nossa taxa de crescimento composta de longo prazo. Estratégias Robustas - Eu só tenho demonstrado algum sinal aleatório simples gerando estratégias de brinquedo até à data. Agora que estamos começando a criar um sistema de negociação intraday forex confiável, devemos começar a realizar algumas estratégias mais interessantes. As futuras entradas do diário concentrar-se-ão em estratégias extraídas de uma mistura de indicadores técnicos, bem como modelos de séries temporais e técnicas de aprendizagem de máquinas. Implantação remota - Como estamos potencialmente interessados ​​em negociar 24 horas (pelo menos durante a semana), precisamos de uma configuração mais sofisticada do que executar o backtester em uma máquina desktoplaptop local em casa. É vital que criemos uma implantação de servidor remoto robusta do nosso sistema com redundância e monitoramento apropriados. Backtesting Histórico - Construímos o objeto Portfolio para nos permitir realizar backtesting realista. Nesta fase estamos faltando um sistema histórico de armazenamento de dados de carrapatos. Em artigos subseqüentes veremos a obtenção de dados históricos de carrapatos e armazená-los em um banco de dados apropriado, como o HDF5. Base de dados de comércio - Eventualmente nós desejamos armazenar nossos comércios vivos em nossa própria base 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 - Já que estamos considerando um sistema intraday de alta freqüência, precisamos implementar um monitoramento abrangente e redundância de alta disponibilidade. Isso significa informar sobre o uso da CPU, uso de disco, IO de rede, latência e verificação de que todos os scripts periódicos estão configurados para continuar em execução. Além disso, precisamos de uma estratégia de backup e restauração. Pergunte a si mesmo que planos de backup 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 BrokerFIX - No momento estamos fortemente acoplados ao corretor OANDA. Como eu disse isso é simplesmente porque eu me deparei com sua API e achei que fosse uma oferta moderna. Há uma abundância de outros corretores lá fora, muitos dos quais suportam o protocolo FIX. Adicionar um recurso FIX aumentaria o número de corretores que poderiam ser usados ​​com o sistema. GUI Controle e Relatórios - Agora o sistema é completamente consolecommand linha baseada. No mínimo, precisaremos de alguns gráficos básicos para exibir os resultados do backtest. Um sistema mais sofisticado incorporará estatísticas sumárias de negócios, métricas de desempenho em nível de estratégia, bem como o desempenho geral do portfólio. Essa GUI pode ser implementada usando um sistema de janelas multi-plataforma como Qt ou Tkinter. Ele também pode ser apresentado usando um web-front-end, utilizando um web-framework, como Django. Como pode ser visto, há uma grande quantidade de funcionalidade deixada no roteiro. Dito isto, cada nova entrada do diário (e possíveis 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 ao código desde a entrada do diário 2. Em particular, quero descrever como modifiquei o código para lidar com os dados decimais - Tipo em vez de usar armazenamento em ponto flutuante. Essa é uma mudança extremamente importante, pois as representações de ponto flutuante são uma fonte substancial de erro de longo prazo nos sistemas de gerenciamento de carteira e de pedidos. Python nativamente suporta representações decimais para uma precisão arbitrária. A funcionalidade está contida dentro da biblioteca decimal. Em particular, precisamos modificar - cada valor que aparece em um cálculo de posição para um tipo de dado decimal. Isso inclui as unidades, exposição, pips, lucro e lucro percentual. Isso garante que estamos no controle total de como as questões de arredondamento são tratadas ao lidar com representações de moeda que têm duas casas decimais de precisão. Em particular, precisamos escolher o método de arredondamento. Python suporta alguns tipos diferentes, mas nós vamos ir com ROUNDHALFDOWN. Que arredonda para o inteiro mais próximo com gravatas indo para zero. Aqui está um exemplo de como o código é modificado para manipular tipos de dados decimais de suas representações de ponto flutuante anteriores. A seguir está uma lista de position. py: Observe que devemos fornecer Decimal com um argumento de seqüência de caracteres, em vez de um argumento de ponto flutuante. Isso ocorre porque uma seqüência de caracteres está precisamente especificando a precisão do valor, enquanto que um tipo de ponto flutuante não. Observe também que quando começamos a armazenar nossos negócios em um banco de dados relacional (conforme descrito acima no roteiro), precisaremos ter certeza de que usamos o tipo de dados correto novamente. PostgreSQL e MySQL suportam uma representação decimal. É vital que nós utilizamos estes tipos de dados quando criamos o nosso esquema de banco de dados, caso contrário, vamos correr em erros de arredondamento que são extremamente difíceis de diagnosticar. Para aqueles que estão interessados ​​em uma discussão mais aprofundada dessas questões, em matemática e ciência da computação, o Assunto de Análise Numérica aborda questões de armazenamento em ponto flutuante, entre muitos outros tópicos interessantes. Nas entradas subseqüentes do diário, vamos discutir como apliquei o teste de unidade ao código e como podemos estender o software a mais pares de moedas, modificando os cálculos de posição. Full Python Code Desde 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 githubmhallsmooreqsforex. Com a documentação anexa. Se você gostaria de ler as outras entradas da série, por favor, siga os links abaixo: Apenas começando com quantitativa TradingWould você gosta de uma cópia dos códigos fonte QuantConnect você pode codificar, backtest e comércio localmente a partir do seu computador Você pode projetar e depurar Estratégias de seu laptop no Visual Studio, usando uma fonte de dados local e, em seguida, quando você estiver pronto simplesmente implantá-lo para a nuvem para backtest em toda a nossa biblioteca de dados nível de carrapato Você poderia perfeitamente utilizar nossa nuvem otimização para backtest maciçamente em paralelo e Teste sua estratégia para a sensibilidade do parâmetro, nos minutos 8230 Com a plataforma open-sourced, você poderia trocar localmente de seus próprios usuários, ou emitir o algoritmo a QuantConnect ao comércio vivo de nossa relação bonita de HTML5 quando você8217re longe de seu desk8230 Servidor negociando vivo dedicado Executando suas estratégias com interface HTML E byworking localmente você pode garantir seus dados proprietários issafe, e manter a estratégia completa p Rivacy Nós pensamos que esta seria uma plataforma de negociação algorítmica perfeita e queremos que isso aconteça Quando chegarmos a 100 inscrições hobbyist we8217ve comprometido a abrir sourcing o mecanismo de negociação Algoritmos LEAN QuantConnect Queremos 100 fãs. Crentes Quants apaixonados que formarão os principais pioneiros da plataforma QuantConnect. Com a sua ajuda, vamos liderar o futuro da negociação algorítmica. Os pioneiros serão lembrados para sempre em nossa página de apoiadores, além de receberem um servidor dedicado de negociação ao vivo para executar suas estratégias (1 CPU 512MB de RAM e 20GB de HD 1TB de transferência de dados). We8217re apenas raspando a superfície do que é possível com QuantConnectWe8217re animado para ser adicionando novos recursos poderosos, e tornando o motor mais rápido e mais robusto cada dia. Para os primeiros 100 Pioneiros you8217ll obter uma vida. 10mo assinatura hobbyist. Uma vez que você atualizar o we8217ll aplicar o desconto, mas é para um limite dos primeiros 100 usuários Nos próximos meses, planejamos oferecer: Cloud Optimizations Massivamente parallel cloudbacktesting, otimizar parâmetros para reduzir a sensibilidade do algoritmo em minutos em toda a nossa nuvem. Execute simulações de monte carlo e curvas de sensibilidade de viewstrategy. Mais Tipos de Ativos e Assistência para Importação de Dados We8217re início de funções e opções de suporte de ativos, juntamente com uma ferramenta para importar facilmente dados externos para projetar algoritmos robustos rentáveis ​​Melhor Navegação Codificação We8217re trabalhando em um treeobjeto treeinspector andtrue C autocompleto, combinado com pastas de projeto para que você possa facilmente Construir estratégias complexas Seleção de Universo e Dados Fundamentais Dados fundamentais alimentados pela Morning StarVocê pode selecionar um universo de empresas por índice, ganhos e outros fundamentos fundamentais Atualize hoje e ajude-nos a construir a melhor plataforma de negociação algorítmica do mundo. Sustentável, independente e comunidade driven. Trading plataforma Plataforma de negociação de código aberto Aplicação de software Plataforma de negociação Open Source M4 é uma plataforma de negociação white-label disponível com código-fonte completo que pode ser licenciado por pagar uma taxa única. A plataforma de negociação pode ser personalizada e re-branded, em seguida, distribuídos para seus clientes comerciais ou utilizados para fins de negociação interna. M4 é um aplicativo de negociação extremamente flexível que pode ser personalizado em qualquer medida, sem limitações impostas sobre personalizações. Nenhuma limitação imposta Você está pagando taxas de licença exorbitantes para um aplicativo de negociação que você não possui Você está preocupado que você não pode resolver problemas de software sensíveis ao tempo e de missão crítica porque você não tem acesso ao código fonte M4 é a solução perfeita se você São infelizes com as limitações e os custos elevados associados com sua plataforma de troca atual ou software de cartografia. M4 é preço acessível e embalado com recursos. O mais baixo custo, a maioria de caraterísticas Profissionais profissionais e análise técnica. Stock em tempo real, futuros e telas de cotação forex. Linguagem de script fácil de usar para alertas em tempo real, análise de mercado, teste de volta e negociação automatizada. Motor de baixa latência de negociação. As encomendas podem ser transmitidas para qualquer destino. Qualquer provedor de dados pode ser implementado. Todas as janelas, barras de ferramentas, menus, gráficos e outros recursos são completamente personalizáveis. Serviços de personalização baratos disponíveis.

No comments:

Post a Comment