Sunday, 25 February 2018

Python sistema comercial automatizado


Sistema de negociação automatizado python
Se você é um comerciante ou um investidor e gostaria de adquirir um conjunto de habilidades de negociação quantitativas, você está no lugar certo.
O curso Trading With Python irá fornecer-lhe as melhores ferramentas e práticas para pesquisa de negociação quantitativa, incluindo funções e scripts escritos por comerciantes quantitativos especializados. O curso dá o máximo impacto para o seu tempo investido e dinheiro. Ele se concentra na aplicação prática da programação ao comércio e não à informática teórica. O curso irá pagar por si mesmo rapidamente, economizando tempo no processamento manual de dados. Você passará mais tempo pesquisando sua estratégia e implementando negócios lucrativos.
Visão geral do curso.
Parte 1: princípios Você vai aprender por que a Python é uma ferramenta ideal para negociação quantitativa. Começaremos pela criação de um ambiente de desenvolvimento e, em seguida, apresentaremos as bibliotecas científicas.
Parte 2: Manipulação dos dados Saiba como obter dados de várias fontes gratuitas, como Yahoo Finance, CBOE e outros sites. Leia e escreva vários formatos de dados, incluindo arquivos CSV e Excel.
Parte 3: estratégias de pesquisa Aprenda a calcular o P & L e as métricas de desempenho acompanhantes, como Sharpe e Drawdown. Desenvolva uma estratégia de negociação e otimize seu desempenho. Múltiplos exemplos de estratégias são discutidos nesta parte.
Parte 4: Indo ao vivo! Esta parte é centrada em torno da Interactive Brokers API. Você aprenderá como obter dados em estoque em tempo real e colocar ordens ao vivo.
Muitos códigos de exemplo.
O material do curso consiste em "cadernos" que contêm texto junto com um código interativo como este. Você poderá aprender interagindo com o código e modificando-o para seu próprio gosto. Será um excelente ponto de partida para escrever suas próprias estratégias.
Embora alguns tópicos sejam explicados em grande detalhe para ajudá-lo a entender os conceitos subjacentes, na maioria dos casos você nem precisa escrever seu próprio código de baixo nível, devido ao suporte de bibliotecas de código aberto existentes:
A biblioteca TradingWithPython combina uma grande parte da funcionalidade discutida neste curso como uma função pronta para usar e será usada ao longo do curso. Pandas irá fornecer-lhe todo o poder de levantamento pesado necessário no trituração de dados.
Todo o código é fornecido sob a licença BSD, permitindo seu uso em aplicações comerciais.
Classificação do curso.
Um piloto do curso foi realizado na primavera de 2018, é o que os alunos conseguiram dizer:
Matej curso bem projetado e bom treinador. Definitivamente valeu o preço e meu tempo, Lave Jev, obviamente, conhecia suas coisas. A profundidade de cobertura foi perfeita. Se Jev executar algo assim novamente, serei o primeiro a se inscrever. John Phillips Seu curso realmente me fez começar a pensar em python para a análise do sistema de estoque.

Conteúdo.
O curso se concentra tanto quanto possível em exemplos práticos de problemas reais envolvidos na negociação quantitativa. Começaremos com a criação de um ambiente em desenvolvimento e a obtenção de dados de preços históricos. Depois disso, vamos testar um par de estratégias comerciais típicas. Uma parte final do curso se concentra no comércio automatizado através da Interactive Brokers API. A parte teórica (matemática e ciência da computação) será reduzida ao mínimo e somente tratada quando necessário.
Parte 1: princípios básicos.
Antes de seguir o curso, você configurará seu próprio ambiente Python e obterá uma sensação básica do idioma. Esta parte do curso está disponível gratuitamente. Vamos pular diretamente e usar dois estudos de caso para se acostumar a trabalhar com ferramentas científicas.
Porquê Python Configurando o ambiente Python Pics do Python Código de escrita, execução e depuração. Introdução ao Numpy Plotting com matplotlib.
Simulação de Monte-carlo de etfs alavancados.
Parte 2: Manipulação dos dados.
Antes de começar com a parte divertida do desenvolvimento da estratégia, precisamos coletar e classificar os dados de preços. Esta semana é sobre obter os dados de várias fontes. Para apimentá-lo com uma caixa de teste, vamos baixar todos os preços diários do universo S & amp; P500 da base de dados do Yahoo.
Introdução às Pandas Trabalhando com horários e datas. Leitura e escrita de arquivos CSV Leitura de arquivos excel Leitura de arquivos HDF5 Obtendo dados da web (Yahoo finance, CBOE, etc.)
Sazonalidade de SPY: existe uma vantagem com base no dia da semana? Obtenha todo o histórico do universo S & amp; P500 e guarde-o em um banco de dados.
Parte 3: estratégias de backtesting.
Esta é a parte divertida, que é apenas limitada pela sua própria criatividade. Passaremos por vários casos de teste estratégico.
Calculando pnl e métricas de desempenho: sharpe en drawdown Estratégia de impulso simples usando médias móveis Estratégia de portfólio permanente Estratégia XLP Estratégia de negociação de pares (construção de um spread neutro e backtesting) Estratégias de volatilidade Estratégia de ETFs alavancadas.
Parte 4: Indo ao vivo!
A última coisa que você precisa para construir um sistema comercial automatizado é uma conexão com um corretor. Nesta semana, nos concentraremos no uso da Interactive Brokers API para receber dados em tempo real e enviar pedidos.
Conectando-se a intermediários interativos com o ibpy Carregando dados históricos intradiários Obtendo dados de estoque em tempo real Colocando ordens.

Sistema de negociação automatizado python
Obter através da App Store Leia esta publicação em nosso aplicativo!
Interactive Brokers negociação automática.
Tentei configurar a API C ++ do Interactive Broker no Visual Studio 2008, mas conheço C ++ muito limitado e continuo com erros de geagem. : & lt;
1) Existe alguma maneira de usar algum tipo de linguagem de script leve para se conectar aos Interactive Brokers e fazer o comércio. F. E.
Alguém leve como Python seria bem, e sim eu examinei IBPY, mas não entendo como funciona o sistema java2python.
2) Como você configurou seu sistema automatizado, ou como você configuraria seu sistema de negociação automatizado com intermediários interativos?
A API "DDE para Excel" é, de longe, a mais fácil das APIs para serem executadas e o IB fornece um programa de exemplo com instruções sobre como funcioná-lo. Além disso, o programa de exemplo Java fornecido está bem documentado sobre como funcioná-lo.
Eles não fornecem uma API Python.
Embora não haja API Python oficialmente suportada, usei o ibpy com sucesso há meses, e é bastante fácil. Não precisa se preocupar com java2python, etc. Tudo o que eu tinha que fazer era clone ibpy em algum lugar:
instale a partir daí:
Uma vez que você tenha instalado isso, a interface no python é praticamente idêntica à interface API Java: IB API pdf.
Achei útil observar o código TWS Test Client Java incluído na API IB.

Python para o desenvolvimento de uma plataforma de negociação automatizada em tempo real.
Abstract-Python, hoje em dia, parece ser o ambiente perfeito para o desenvolvimento de uma ferramenta de negociação automatizada em tempo real. Nesta conversa, falaremos sobre como desenvolvemos: um módulo de sistema multiaventário com uso geral de Pyro e ZeroMQ; uma plataforma, com base nisso, para desenvolver estratégias de negociação automatizadas usando Numpy, Numba, Theano. ; e uma ferramenta para visualizar dados de mercado em tempo real usando PyQtGraph e Qt.
Termos de Índice - Python, ZeroMQ, multi-agente, Pyro, NumPy, Numba, Theano, PyQtGraph, Qt.
I. UM SISTEMA MULTI-AGENTE.
A arquitetura de qualquer sistema pode variar e ainda executa a mesma tarefa. Uma arquitetura monolítica é melhor ao procurar o desempenho, mas, por outro lado, a divisão fornece mais robustez no caso de um único módulo falhar e permite fazer modificações sem a necessidade de compilar (se for esse o caso) toda a infra-estrutura. Além disso, quando se fala em tarefas intensivas computacionais, onde a relação entre transmissão de dados e tempo de computação é muito baixa, uma arquitetura baseada em módulos dificilmente impacta o desempenho geral.
Além disso, uma arquitetura baseada em módulos permite a criação de sistemas escaláveis, distribuíveis, altamente disponíveis e paralelos. Um sistema multi-agente é composto de múltiplos agentes que interagem tentando resolver problemas que são difíceis para um agente individual. As principais características são:
• Autonomia: os agentes são pelo menos parcialmente independentes, autoconscientes e autônomos.
• Exibições locais: nenhum agente possui uma visão global global do sistema.
• Descentralização: não há um agente de controle designado.
No OpenSistemas, desenvolvemos um sistema multi-agente de uso geral que está escrito no Python puro: osBrain.
Cada agente é um processo de sistema gerado usando o módulo de multiprocessamento, o que significa que ele é executado de forma independente dos outros e que não atinge problemas de desempenho ao usar intérpretes do Python habilitados para GIL.
Este processo do sistema inicia um servidor Pyro e se registra no servidor de nomes. O servidor Pyro é usado para atender um objeto: uma instância do agente real, que é descrita abaixo. Esta implementação permite ao usuário acessar o objeto através de um proxy Pyro, tratando o agente, que poderia estar em uma máquina remota, como um objeto local e podendo alterar seus atributos e seu comportamento.
Embora o Pyro não seja o caminho mais eficiente para a comunicação entre processos, é muito conveniente para a implantação, permitindo a criação de sistemas complexos multi-agente distribuídos de forma simples.
Os agentes, no entanto, se comunicam entre si usando o ZeroMQ. O ZeroMQ é mais eficiente e muito flexível, permitindo que o usuário defina diferentes padrões de comunicação com base em suas necessidades. Um típico processo de agente executará um servidor Pyro no qual o segmento principal executa um loop que simplesmente espera mensagens incomuns de fora. Esse comportamento pode, naturalmente, ser modificado à vontade, mas seria definitivamente o caso mais comum.
Os agentes também podem usar multithreading e são fornecidos com um soquete inproc pesquisado pelo segmento principal para garantir acesso seguro à memória, mesmo em intérpretes do Python GIL-disabled.
II. A PLATAFORMA DE NEGOCIAÇÃO AUTOMÁTICA DE TEMPO REAL.
Na OpenSistemas desenvolveu uma plataforma independente do corretor para negociação automatizada em tempo real: osMarkets. Qualquer corretor pode fornecer os dados necessários e a plataforma executará todos os cálculos necessários para produzir pedidos que serão enviados de volta ao corretor a ser executado.
Esta plataforma é implementada sobre osBrain, mas possui agentes especializados.
O Alimentador é um agente que recebe dados em tempo real do corretor. Geralmente, ele usa multithreading e o soquete de loopback para poder transmitir dados do mercado de tiques ao poder enviar solicitações ativas para o corretor (por exemplo, solicitação de dados históricos). Ele também converte os dados para que ele possa estar no formato adequado para o resto da plataforma.
O roteador é um agente que recebe dados de alimentadores. Ele administra os dados históricos e a criação de novas barras usando dados de ticks em tempo real. O roteador distribui atualizações sobre os dados do mercado para todos os agentes interessados ​​na rede.
O cérebro é o agente mais comum. É receber dados do roteador ou de outros cérebros e processá-lo, enviar os resultados para outros cérebros ou enviar ordens para serem executados. É aqui que as estratégias de negociação automatizadas devem ser implementadas. Brains pode fazer uso de muitos pacotes úteis disponíveis no ecossistema Python: NumPy, SciPy, Numba, Theano. apenas para citar alguns. Os cérebros podem formar uma hierarquia que pode ser usada para abstrair dados do mercado.
Trader é um agente que é projetado para interagir com o corretor, assim como o alimentador, mas para executar ordens de mercado (ou seja, comprar / vender). Outros parâmetros, como stop-loss ou take-profit, podem ser tratados pelo corretor ou internamente por osMarkets também.
Para gerenciar dados de mercado, NumPy ndarrays estão sendo usados. Ao trabalhar com dados em tempo real, as séries temporais estão sempre mudando. Para evitar cópias de memória completas em cada atualização, criamos uma classe personalizada que usa uma estrutura maior como um buffer. Este buffer, que é um ndarray NumPy real, é preenchido ou modificado na atualização e a classe personalizada simplesmente atualiza a exibição de se na memória.
III. VISUALIZANDO DADOS DO MERCADO DE TEMPO REAL.
Embora o Matplotlib seja provavelmente a ferramenta mais conhecida para a visualização de dados e, embora seja muito boa em exibir todo o tipo de gráficos com muito boa qualidade, não é adequado para visualizações em tempo real e não é muito bom na interação.
PyQtGraph, por outro lado, é uma ótima ferramenta para visualização em tempo real e para gráficos interativos. Está escrito em Python puro, então instalar este pacote é bem direto.
Por baixo, usa Qt e OpenGL para permitir a exibição rápida e as interações.
Embora ainda esteja nos estágios iniciais, estamos desenvolvendo uma ferramenta para visualização em tempo real de estratégias comerciais usando o PyQtGraph. Esta ferramenta atua como um agente no sistema multi-agente, o que significa que ele simplesmente se inscreve em atualizações sobre dados de mercado para roteador e nas saídas de cérebros selecionados.
É capaz de desenhar gráficos de candelabro e indicadores básicos e permite ao usuário lidar com cérebros da interface.

Desenvolvendo um sistema de negociação automatizado com o Python.
AVISO LEGAL! O comércio de Forex traz uma grande quantidade de risco. Qualquer e tudo descrito neste código é apenas para fins educacionais. Eu não sou responsável por nenhuma das suas perdas ou dificuldades que você pode enfrentar como resultado do uso deste código. Novamente, isso deve ser usado apenas para fins educacionais.
Este código está licenciado sob a GNU Public License. Consulte Mais informação.
A idéia de escrever este post veio da grande quantidade de pessoas no r / Forex que estavam interessadas em automatizar suas estratégias de negociação Forex. Espero manter esta publicação curta, simples e informativa, por favor, aguarde comigo.
Se você não tem pelo menos uma compreensão intermediária de Python, sugiro que leia sobre isso. Existem inúmeros recursos que o farão, eu recomendo a codecademy.
Certifique-se de configurar uma conta de demonstração com o Oanda e gerar uma chave api.
Ok, vamos lá!
Em primeiro lugar, recomendo usar um IDE que lhe permita executar o seu código Python ou usar Linux / OSX para que você possa testar com o terminal. Pessoalmente, uso o Spyder IDE que vem no pacote da Anaconda. Você pode baixar isso aqui.
Você precisará instalar duas bibliotecas principais de python: oandapyV20 & amp; solicitações de.
Esta será a nossa estrutura de arquivos final:
O primeiro arquivo em que nos concentraremos é __init__.py:
Neste arquivo, criamos nossas variáveis ​​para serem usadas no restante desta estratégia. Eu vou usar uma 2 estratégia de cross-over média simples, então, para o meu SMAbig, usei 50 períodos de dados, e meu SMAsmall usava 25 períodos de dados. a variável de contagem é a quantidade de dados que você retorna da API de Oanda. Quanto maior o número, mais lento o sistema será executado. Coloque a sua chave api na variável "chave". Coloque o ID da sua conta na variável "accountID". Você também pode definir o tipo de dados de vela que deseja usar. Eu estou usando o gráfico de 4 horas, então, sob params, eu coloquei "H4". Uma lista de dados que você pode obter da Oanda pode ser encontrada aqui.
Tudo bem agora estamos no nosso próximo arquivo, candles. py:
Agora em nosso próximo arquivo, strategy. py.
Agora, nosso arquivo final, app. py:
Eu recomendo Olhar para o resto do código em Github aqui, uma vez que a formatação de Medium é bastante terrível. O arquivo final da aplicação. py é onde declaramos nossos condicionais e decidimos se o bot deve ou não ser comercializado.
Full Github Repo: Aqui.
Avançando, há muito que você pode fazer depois de ter seus dados iniciais de vela. Tudo a partir desse ponto é apenas uma questão de realizar equações matemáticas simples para decidir se o seu bot deve ou não trocar. Algumas coisas que podem ser facilmente implementadas são retratos Fibonacci, RSI, Heiken Ashi. As possibilidades são infinitas.
Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.

No comments:

Post a Comment