Monday 9 April 2018

Sistema de comércio github


Biblioteca de Negociação Algorítmica Python.
PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python com foco em backtesting e suporte para negociação de papel e negociação ao vivo. Digamos que você tenha uma idéia de uma estratégia de negociação e que você gostaria de avaliá-la com dados históricos e ver como ela se comporta. PyAlgoTrade permite que você faça isso com um esforço mínimo.
Principais características.
Totalmente documentado. Evento conduzido. Suporta pedidos Market, Limit, Stop e StopLimit. Suporta Yahoo! Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados da série temporal no formato CSV, por exemplo, Quandl. Suporte comercial Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas Bollinger, Expositores Hurst e outros. Métricas de desempenho como a taxa de Sharpe e análise de redução. Manipulação de eventos do Twitter em tempo real. Perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, ou seja, usando um ou mais computadores para testar uma estratégia.
PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.

Sistema de comércio github
Solicitações de envio 11.
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 Git ou check-out com o SVN usando o URL da web.
A QSForex é uma plataforma de negociação de backtesting e de negociação aberta de código aberto para uso nos mercados cambiais ("forex"), atualmente em um estado "alfa".
Ele foi criado como parte da série Forex Trading Diary no QuantStart para fornecer à comunidade comercial sistemática um motor de negociação robusto que permite a implementação e o teste direto da estratégia forex.
O software é fornecido sob uma licença permissiva "MIT" (veja abaixo).
Open-Source - QSForex foi lançado sob uma Licença MIT de código aberto extremamente permissiva, que permite o uso total em aplicativos comerciais e de pesquisa, sem restrições, mas sem garantia de qualquer tipo. Grátis - QSForex é completamente gratuito e não custa nada para baixar ou usar. Colaboração - Como o QSForex é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Todos os erros são rapidamente determinados e corrigidos. Desenvolvimento de Software - O QSForex é escrito na linguagem de programação Python para suporte direto a várias plataformas. QSForex contém um conjunto de testes unitários para a maioria do seu código de cálculo e novos testes são constantemente adicionados para novos recursos. Arquitetura dirigida a eventos - O QSForex é completamente conduzido por eventos tanto para backtesting quanto para negociação ao vivo, o que leva a uma transição direta de estratégias de uma fase de pesquisa / teste para uma implementação de negociação ao vivo. Custos de transação - Os custos de spread são incluídos por padrão para todas as estratégias testadas anteriormente. Backtesting - QSForex possui backtesting de vários dias de multi-moeda multi-dia intradía. Negociação - A QSForex atualmente suporta negociação intraday ao vivo usando a API de Brokerage da OANDA em um portfólio de pares. Métricas de desempenho - O QSForex atualmente oferece suporte a medição básica de desempenho e visualização de equidade através das bibliotecas de visualização Matplotlib e Seaborn.
Visite oanda / e configure uma conta para obter as credenciais de autenticação da API, que você precisará realizar uma negociação ao vivo. Eu explico como realizar isso neste artigo: quantstart / articles / Forex-Trading-Diary-1-Automated-Forex-Trading-with-the-OANDA-API.
Clonar este repositório git em um local adequado em sua máquina usando o seguinte comando em seu terminal: git clone github / mhallsmoore / qsforex. git. Alternativa, você pode baixar o arquivo zip do ramo mestre atual no github / mhallsmoore / qsforex / archive / master. zip.
Crie um conjunto de variáveis ​​de ambiente para todas as configurações encontradas no arquivo settings. py no diretório raiz do aplicativo. Alternativamente, você pode "codificar" suas configurações específicas substituindo as chamadas os. environ. get (.) Por cada configuração:
Isso criará um novo ambiente virtual para instalar os pacotes. Supondo que você baixou o repositório QSForex git em um diretório de exemplo, como.
/ projects / qsforex / (altere este diretório abaixo para onde você instalou QSForex), então, para instalar os pacotes, você precisará executar os seguintes comandos:
Isso levará algum tempo, como NumPy, SciPy, Pandas, Scikit-Learn e Matplotlib devem ser compilados. Há muitos pacotes necessários para que isso funcione, então por favor dê uma olhada nestes dois artigos para obter mais informações:
Você também precisará criar um link simbólico do seu diretório de pacotes do site para seu diretório de instalação QSForex para poder chamar importar qsforex dentro do código. Para fazer isso, você precisará de um comando semelhante ao seguinte:
Certifique-se de mudar.
/ projects / qsforex para o diretório de instalação e.
/venv/qsforex/lib/python2.7/site-packages/ para o seu diretório de pacotes do site virtualenv.
Agora você poderá executar os comandos subseqüentes corretamente.
Nesta fase, se você simplesmente deseja realizar práticas ou negociação ao vivo, você pode executar o python trading / trading. py, que usará a estratégia de negociação padrão do TestStrategy. Isso simplesmente compra ou vende um par de moedas cada 5 vezes. É puramente para testar - não use isso em um ambiente de comércio ao vivo!
Se você deseja criar uma estratégia mais útil, basta criar uma nova classe com um nome descritivo, por exemplo, MeanReversionMultiPairStrategy e assegure-se de que ele tenha um método de calcule_signals. Você precisará passar esta classe a lista de pares, bem como a fila de eventos, como em trading / trading. py.
Por favor, consulte Strategy / Strategy. py para obter detalhes.
Para realizar qualquer backtesting, é necessário gerar dados de Forex simulados ou baixar dados de ticks históricos. Se você deseja simplesmente testar o software, a maneira mais rápida de gerar um exemplo de backtest é gerar alguns dados simulados. O formato de dados atual usado por QSForex é o mesmo que o fornecido pelo DukasCopy Historical Data Feed em dukascopy / swiss / english / marketwatch / historical /.
Para gerar alguns dados históricos, verifique se a configuração CSV_DATA_DIR na settings. py é configurar para um diretório onde deseja que os dados históricos sejam exibidos. Você então precisa rodar generate_simulated_pair. py, que está sob o diretório scripts /. Ele espera um único argumento de linha de comando, que nesse caso é o par de moedas no formato BBBQQQ. Por exemplo:
Nesse estágio, o script é codificado para criar dados de um único mês para janeiro de 2014. Ou seja, você verá arquivos individuais, do formato BBBQQQ_YYYYMMDD. csv (por exemplo, GBPUSD_20140112.csv), exibidos em seu CSV_DATA_DIR em todos os dias úteis daquele mês. Se você deseja alterar o mês / ano da saída de dados, simplesmente modifique o arquivo e re-execute.
Agora que os dados históricos foram gerados, é possível realizar um backtest. O arquivo backtest em si é armazenado no backtest / backtest. py, mas isso contém apenas a classe Backtest. Para realmente executar um backtest, você precisa instanciar esta classe e fornecer os módulos necessários.
A melhor maneira de ver como isso é feito é olhar para o exemplo de Implementação de Crossover em Moving Average no arquivo examples / mac. py e usá-lo como um modelo. Isso faz uso do MovingAverageCrossStrategy, que é encontrado em strategy / strategy. py. Este padrão é negociar GBP / USD e EUR / USD para demonstrar uso de par de moedas múltiplas. Ele usa dados encontrados em CSV_DATA_DIR.
Para executar o exemplo backtest, simplesmente execute o seguinte:
Isso vai levar algum tempo. No meu sistema de desktop Ubuntu em casa, com os dados históricos gerados via generate_simulated_pair. py, leva cerca de 5-10 minutos para serem executados. Uma grande parte deste cálculo ocorre no final do backtest real, quando o drawdown está sendo calculado, então lembre-se de que o código não foi desligado! Deixe-o até a conclusão.
Se você deseja visualizar o desempenho do backtest, basta usar o output. py para visualizar uma curva de patrimônio, retornos de período (ou seja, retornos tick-to-tick) e uma curva de rebaixamento:
E é isso! Nesta fase, você está pronto para começar a criar seus backtests, modificando ou anexando estratégias em strategy / strategy. py e usando dados reais baixados da DukasCopy (dukascopy / swiss / english / marketwatch / historical /).
Se você tiver alguma dúvida sobre a instalação, então fique à vontade para me enviar um e-mail no mikequantstart.
Se você tiver algum erro ou outros problemas que você acha que podem ser devido especificamente à base de código, sinta-se à vontade para abrir um problema Github aqui: github / mhallsmoore / qsforex / issues.
Copyright (c) 2015 Michael Halls-Moore.
A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de uso, cópia, modificação, mesclagem , publicar, distribuir, sublicenciar e / ou vender cópias do Software e permitir que pessoas a quem o Software seja fornecido, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou porções substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRAM", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃO. EM NENHUMA CIRCUNSTÂNCIA, OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENDO, DESTE OU RELACIONADO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NA PROGRAMAS.
A negociação de câmbio em margem comporta um alto nível de risco e pode não ser adequada para todos os investidores. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você e também para você. Antes de decidir investir em divisas, você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de que você possa sustentar uma perda de algum ou todo seu investimento inicial e, portanto, você não deve investir dinheiro que não pode perder. Você deve estar ciente de todos os riscos associados à negociação cambial e procurar o aconselhamento de um consultor financeiro independente se tiver dúvidas.
&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.

Sistema de comércio github
Puxe pedidos 0.
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 Git ou check-out com o SVN usando o URL da web.
O Bateman é um sistema de negociação muito simples destinado a examinar um subconjunto dos mercados de ações dos EUA e testa como uma simples estratégia de negociação de longo prazo descrita abaixo funcionará.
Baseia-se na observação de que muitos símbolos exibem volatilidade diária suficiente que o seu alto geralmente será significativamente acima do seu aberto, independentemente do seu preço no fechamento da negociação.
A estratégia tem seus parâmetros refinados por otimização de enxame de partículas, um algoritmo simples de otimização contínua, para que você não tenha que descobrir os parâmetros para cada ação que você está interessado em mão.
Eu nunca cheguei a tornar isso robusto, mas gostaria de voltar a ele em breve. Veja abaixo uma amostra disso.
Obviamente, não use isso para negociar dinheiro real.
Meu nome é Warren Henning. Eu sou um desenvolvedor de software de 29 anos de idade que vive em Berkeley, Califórnia.
Não tenho nenhuma experiência profissional nas indústrias de finanças ou bancos de investimento. Eu nunca trabalhei para um banco. Este é apenas um projeto de hobby que eu queria fazer por um longo período de tempo.
Eu não arrisquei dinheiro nisso. Ele produz resultados simulados rentáveis ​​em dados históricos que eu tentei contra recentemente (veja um exemplo de resultado abaixo), mas isso definitivamente não é uma garantia de desempenho comercial real.
Este é um software de código aberto, o que basicamente significa que não lhe devo nada e que este software não funciona necessariamente. Por favor, leia o arquivo LICENSE cuidadosamente. Não é minha culpa, se por acaso você usar isso e perder dinheiro! Você não tem nenhum recurso contra mim. Mais uma vez, consulte a licença.
Eu estou fazendo isso por diversão, nada mais. Eu não estou vendendo nada ou esperando ganhar dinheiro com isso. Eu estou dando isso porque acho que a idéia é mais interessante do que a realidade prática como ferramenta de criação de dinheiro. Eu não tenho capital para trocá-lo, e é comum mesmo para sistemas de negociação aparentemente infalíveis para não fazer bem em circunstâncias reais em comparação com o desempenho simulado.
Eu gostaria de discutir a ideia de confiar em um computador para fazer negócios agora. Um programa como o Bateman se enquadra na categoria de "negociação algorítmica", que tem sido praticada por hedge funds e firmas de Wall Street por um bom tempo agora. Veja a página da Wikipedia sobre comércio algorítmico para obter mais informações.
Note-se que a "negociação algorítmica" deve ser distinguida da "negociação de alta freqüência", que é o que se tornou o foco real dos cientistas dos quentes e dos fundos de hedge fundadores hoje em dia. Bateman não é um aplicativo comercial de alta freqüência; na verdade, simula a colocação de negociações apenas uma vez por dia. Comparado com a merda louca que Wall Street está fazendo agora, Bateman é, eu acho, chapéu velho. Pelo que eu sei, Wall Street mudou seu foco de negociação proprietária discricionária para a criação de mercado, arbitragem estatística e operações de negociação de alta freqüência. Vivemos em um mundo louco e, dependendo de quem você pergunta, a negociação de alta freqüência definitivamente tem seu lado escuro. Eu não tenho nada a ver com isso.
Também enfatizarei novamente que não sou comerciante e, enquanto sou programador profissional, nunca trabalhei em nenhum código de infra-estrutura comercial.
Além disso, Bateman não é realmente um aplicativo comercial totalmente algorítmico, uma vez que na verdade não coloca os negócios em si; ele apenas tenta encontrar números que permitam que um comerciante humano troque com sucesso. Assim, ele permite o "comércio sistemático", onde um programa emite resultados que sugerem um curso de ação rígido e objetivo que o comerciante humano deve seguir. Muitas pessoas são incapazes de seguir com isso e geralmente perdem dinheiro como resultado. Então, Bateman não tem nada para conversar com corretores ou realmente fazer negócios em si. Se você quisesse usar os resultados de um programa como este, você teria que fazer isso à mão.
Antes do surgimento de computadores onipresentes de alto desempenho, as negociações eram feitas naquilo que hoje é chamado de forma discricionária, com os comerciantes geralmente tentando combinar informações financeiras macroeconômicas e fundamentais ("análise fundamental"; pense em Warren Buffett). análise técnica / gráficos para descobrir com o que negociar ou investir. É geralmente aceito que, devido aos fatores psicológicos envolvidos na negociação, os seres humanos são menos qualificados na execução de negociações do que os sistemas de negociação pré-configurados. Isso se deve a fatores como questionar, pensar demais, ser indeciso ou mudar de opinião, etc., quase sempre em detrimento próprio. Isso elogia estudos psicológicos recentes sobre a natureza imperfeita da memória e da mente humana.
Se você nunca tentou negociar e ainda não experimentou esse aspecto psicológico, sugiro que você adquira uma conta de negociação de papel gratuita que lhe permita fazer transações simuladas sem realmente dar a ninguém qualquer informação financeira ou dinheiro e realmente tentar por si mesmo. Se você é como a maioria das pessoas, vai ter dificuldade em esperar que os resultados de uma negociação acabem e queira basicamente dar uma volta. O comércio de papéis tem um certo estresse, mesmo quando nenhum dinheiro real está mudando de mãos - agora imagine que se fosse dinheiro você tivesse arrebentado para salvar e você tentaria viver o sonho e "trocar de vida". A maioria das pessoas falha, mal. Não há quase certeza nenhuma razão para acreditar que você ou eu somos melhores ou diferentes. A maioria dos "comerciantes bem sucedidos" que parecem estar batendo no mercado são apenas sortudos.
Assim, para aliviar um pouco a falta de confiabilidade e a ansiedade associadas à negociação discricionária, os negociadores procuram por "sistemas de negociação" quantitativos e rigorosos que possibilitem "negociações sistemáticas" se usados ​​e seguidos adequadamente. Se o programa faz negociações automaticamente sem intervenção humana, isso elimina a obrigação de seguir as decisões tomadas pelo sistema a cada momento, e os aspectos psicológicos do sistema são amplamente removidos; Tudo o que resta para tal sistema de negociação algorítmica é monitorá-lo para garantir que ele esteja funcionando como pretendido.
Houve alguns casos de sistemas de negociação de alta freqüência desacreditados para resultados desastrosos; um desses sistemas da Knight Capital acumulou mais de US $ 400 milhões em perdas em 30 minutos. Imagine ser a primeira pessoa na empresa a aprender o que aconteceu e ter que ser o mensageiro de notícias tão horríveis. Yikes.
Para concluir esses pensamentos sobre o comércio algorítmico e de alta freqüência, é claro que o exame minucioso e os testes rigorosos são cruciais para o sucesso, como Knight Capital aprendeu.
Sempre que você cria um sistema com parâmetros que são "aprendidos" ou "otimizados" com algum tipo de pressuposição subjacente por trás disso, basicamente você está construindo um modelo estatístico. Outros modelos financeiros geralmente têm pressupostos muito mais fortes do que os de Bateman, como uma distribuição normal de retornos ou reversão à média.
Bateman pretende ter boa "generalização" e desempenho futuro, sendo limitado em seus pressupostos. A suposição de Bateman é que algumas ações sobem um pouco às vezes. Uma trama de um "modelo Bateman" consiste em algumas linhas horizontais, nada mais.
Comparado com as médias móveis e outros indicadores que muitos operadores usam, isso é muito simples: espere que a ação suba um pouco (para obter alguma evidência de que ela não vai simplesmente cair naquele dia), compre, espere para subir um pouco mais, vender, e fazer novamente no dia seguinte. Isso pode ser realizado através de uma ordem de limite com metas de lucro pré-determinadas e parar de perdas, e um modelo como esse é perfeito para alguém que não é um comerciante profissional. Se já não sobe durante o dia do jeito que costumava, pare de negociar esse estoque e procure outro. Se nenhum estoque exibir essa propriedade de volatilidade regularmente, não use o sistema. Simples assim.
Mas, você pode estar se perguntando, a AI de computador não é nada ruim em tarefas complexas como essa? Bem, tão imperfeitos como os computadores estão em tarefas complexas de tomada de decisão, sua natureza sistemática dá-lhes uma certa vantagem em relação aos humanos nos mercados financeiros. Tão simples como um pequeno conjunto de parâmetros numéricos para orientar os negócios é, existe a sua força: os pressupostos por trás de Bateman são mínimos e não devem ser universalmente aplicáveis; Em vez disso, destina-se a ser usado em ações que, no passado, exibiram uma propriedade específica com freqüência. É bem conhecido no aprendizado de máquina que modelos com muitos parâmetros ou complexidade muito grande que são testados em dados históricos acabam sendo overtraining para esses dados, e efetivamente apenas memorizá-los, com a conseqüência de que eles fazem mal em dados imprevistos futuros . Isso, infelizmente, é por isso que geralmente não é prático ou eficaz construir modelos enormes que manipulem todos os cenários imagináveis ​​e façam muitas coisas.
Existem muitas maneiras diferentes de escrever um sistema de negociação. Muitos sistemas de negociação consistem em um terrível mundo infernal de planilhas do Excel e macros VBA. Muitos outros existem como scripts para ferramentas como o MetaTrader, que construíram em linguagens de programação destinadas a serem amigáveis ​​para programadores não profissionais.
Eles também incluem facilidades de otimização para encontrar parâmetros numéricos para sistemas de negociação, como algoritmos genéticos.
Provavelmente, a maneira mais fácil de ir em geral seria usar o Quantopian, que permite construir e testar sistemas de negociação diretamente no seu navegador.
A maioria dessas ferramentas são inadequadas porque não lhe dão o controle de baixo nível que você precisa. Quantopian dá-lhe acesso a bibliotecas como numpy, de modo que pode muito bem ser sua melhor opção se você não roote o seu próprio do zero.
Eu preciso chamar um sistema de backtrading em um loop e executá-lo o mais rápido possível. Em outras palavras, não consigo ver como implementar o Bateman em termos de álgebra linear de baixo nível que pode ser chamada de Numpy.
Então, estamos presos com uma linguagem de propósito geral como o Java.
Finalmente, gostaria de comentar a escolha do algoritmo de otimização. Eu decidi usar a otimização de enxame de partículas em vez de algoritmos genéticos porque o PSO pode ser melhor para tarefas contínuas de otimização, enquanto algoritmos genéticos parecem, para mim, mais adequados para tarefas discretas / combinatórias como programação e roteamento.
Como mencionado acima, Bateman tenta comprar um estoque ligeiramente acima do seu aberto e abaixo ou perto de sua alta diária. Ao invés de tentar construir um modelo de previsão, o Bateman destina-se a ser usado com ações que tenham uma freqüente alta diferença positiva entre o preço diário alto e aberto da ação, de modo que, independentemente do que aconteça no final do dia, em algum momento provavelmente exibir comportamento que pode ser explorado de forma lucrativa.
Existem três parâmetros numéricos fixos que o Bateman tenta otimizar quando é executado: o "gatilho de compra", o "gatilho de venda" e a perda de parada.
O gatilho de compra é o valor acima do preço aberto para o dia em que ele irá comprar. Portanto, se a ação abrir em 100 e o acionador de compra for considerado 0,5, qualquer preço acima de 100,5 será acionado. O gatilho de venda é o valor acima do preço que as ações foram compradas para vender. Se o gatilho de venda não for atendido até o final do dia, as ações serão vendidas de forma que nenhuma posição seja transportada durante a noite. O stop loss é usado no sentido normal como um procedimento de gerenciamento de risco para reduzir perdas.
Para descobrir quais devem ser os valores dessas constantes para um determinado estoque, ele baixa os dados recentes desse estoque e tenta encontrar os números específicos que seriam mais lucrativos para esses dados. Para calcular isso, é necessário um determinado conjunto de constantes e backtests de candidatos, simulando a negociação usando os dados históricos que ela adquire. Como é um algoritmo de otimização, ele gravita em relação a constantes mais lucrativas.
Esses três componentes - comprar gatilho, gatilho de venda, parar de perder - são os números que o Bateman otimiza, usando dados obtidos do Google para criar uma simulação de negociação desses dados como se estivesse ao vivo. Os resultados da simulação comercial são a função objetivo do algoritmo de enxame de partículas; toda vez que ele quer descobrir quão bom é um conjunto de parâmetros candidatos, ele executa uma simulação completa com esses e recupera um número que permite comparar quantitativamente diferentes soluções para que ele possa encontrar soluções melhores. A simulação de negociação é o que é usado para impulsionar o processo de otimização.
Depois de fazer o download dos dados da Internet e passar pelo processo de otimização, alguns valores de amostra que podem acabar sendo devolvidos seriam algo como "comprar gatilho = 0,1, vender gatilho = 0,5, parar a perda = 0,07". Isso seria interpretado como o seguinte:
"Se o preço das ações estiver atualmente acima de US $ 0,10 ou mais desde o início da negociação e não fizemos nenhuma outra negociação hoje, então COMPRA, se, após a compra, o estoque subiu US $ 0,50, VENDA. Além disso, se, Depois de comprar, o preço das ações baixou US $ 0,07 ou mais, VENDA. Se ainda não vendemos ações e o fim do dia de negociação é iminente, VENDE, independentemente do preço atual da ação. Se negociamos uma vez hoje , não troque novamente até o próximo dia de negociação ".
Observe como isso é sistemático, quantitativo e pode ser executado automaticamente por um computador sem intervenção humana. É por isso que a Bateman é um "sistema comercial" ou permite o "comércio sistemático": sugere um curso de ação que elimina completamente o julgamento qualitativo ou a tomada de decisão humana inconstante.
Vale a pena usar um algoritmo para encontrar os gatilhos de compra e venda? Bem, quando eu tentei descobrir bons e comprar gatilhos à mão, olhando para gráficos de dados intraday, meus resultados foram significativamente piores do que os números que Bateman criou com seu algoritmo de enxame de partículas, então eu acho que este programa agrega valor real. Além disso, fazer isso à mão quando você tem um computador quad-core na sua frente parece bobo.
Quantas ações compramos? O modelo que uso é apenas pegar uma porcentagem fixa do nosso capital e comprar o máximo de ações que pudermos comprar. Atualmente, estou usando 75% do capital disponível no exemplo executável descrito abaixo, o que, penso, seria considerado bastante alto, mas Bateman é apenas um longo tempo e estabelece perdas de parada bastante rígidas. Então eu acho que a escolha é razoável.
Em qual gama devemos restringir nossos parâmetros de modelo? Isso é uma questão de preferência. Eu escolherei o seguinte:
Defina o acionador de compra mínima como 0, permitindo a compra a preço aberto Defina o stop loss mínimo e venda o gatilho para 0,2% do primeiro preço de abertura, que usaremos como uma espécie de proxy do spread histórico de compra e venda. sell trigger, e stop loss para a diferença mediana entre o preço de abertura e o alto do último ano, para que possamos estimar os gatilhos que estão razoavelmente alinhados com os dados históricos.
Para obter o valor mediano mencionado acima, baixamos os dados diários de fim de dia do ano passado do Yahoo! Finança. Veja YahooQuoteFetcher.
Nossa escolha de intervalos influenciará os resultados que obtemos. Veja BuyZoneOptimizer para saber como tudo isso vem junto e mexer com isso, se você quiser alterar os intervalos.
Atualmente, ele faz backtesting com um montante inicial simulado de US $ 100.000 e quais deveriam ser suposições razoáveis ​​sobre os custos de negociação: US $ 10 comissões uma forma de negociação, desvio de 0,01%. Estes não são atualmente configuráveis ​​pelo usuário, além do símbolo para trabalhar. Simula colocar uma ordem de mercado (longa-só) (em oposição a uma ordem de limite) que ela assume que ela obtém muito bem onde ela compra - assume que as ordens são colocadas rapidamente o suficiente para serem consideradas imediatas para fins de simulação , a um preço com um deslizamento pequeno o bastante para ser bastante pequeno. Também pressupõe que o spread entre a oferta e a pergunta seja pequeno o suficiente para ser razoavelmente contabilizado com as comissões e o cálculo de deslizamento aplicado a todas as negociações. Atualmente, as perdas de parada móvel não são suportadas. Também será negociado apenas uma vez por dia. Mantém negociações de tamanho fixo, não as alterando ou realizando novos negócios até que o negócio atual seja fechado.
Esperemos que os pressupostos implementados aqui sejam razoáveis ​​o suficiente para serem úteis para simular o desempenho de uma regra de negociação.
Além disso, a métrica específica que ela otimiza é, na verdade, a proporção de Sharpe dos negócios simulados, em vez do lucro líquido; ou seja, destina-se a otimizar os retornos ajustados ao risco. Embora o índice de Sharpe seja imperfeito e muitas outras métricas possam ser usadas de forma plausível, ele é amplamente conhecido e é atualmente o que está em vigor.
Para reafirmar e resumir, é necessário um determinado conjunto de parâmetros como disparadores de candidatos e perda de parada, simula isso em dados históricos e retorna o melhor que encontrar.
Você precisará do seguinte software para executar isto:
JDK versão 1.7 (observe a versão - ela usa algumas bibliotecas de E / S específicas do 1.7) Maven 3.
Então você quer começar por clonar o repo:
Então você pode construir o projeto, que deve ser tão simples quanto:
O Maven irá baixar muitas coisas pela primeira vez. Ele deve executar os testes de unidade do projeto, então, criar um único JAR de gordura no diretório de destino.
Supondo que seja construído com sucesso, você deve ser capaz de executá-lo como qualquer outro JAR:
Isso, então, executará o otimizador real. Atualmente, é codificado para trabalhar no estoque da Apple (AAPL).
Quando você executa isso, uma seqüência de eventos ocorrerá:
Faça o download das recentes cotações intradiárias para o símbolo em questão (AAPL) do Google Finance Execute uma otimização de enxame de partículas para encontrar os melhores gatilhos e parar a perda Imprima os parâmetros que ele cria e execute uma simulação final com estes Escreva um log de negociação simulado com lucro e-loss-loss para cada negociação simulada para um arquivo CSV que você pode revisar com qualquer programa de planilha eletrônica.
Quando você executa isso, a maior parte do resultado será o progresso do otimizador de enxame de partículas. Alguma saída de amostra segue:
O trecho de saída mostrado acima é um exemplo de executar o processo de otimização com os parâmetros listados acima: um saldo inicial de US $ 100.000, independentemente de dados históricos retornados da Google Finance, comissões de negociação de US $ 10, etc. Os "melhores valores" listados são (negativos ) Sharpe ratios dos comércios simulados está sendo executado com os três números que você vê listados em cada linha. Em cada iteração, em outras palavras, imprime os melhores gatilhos e stop loss encontrados até o momento. O número deve, na verdade, diminuir, porque, como um algoritmo de otimização, ele minimiza uma função; maximizar uma função f (x) é, em geral, equivalente a minimizar a função g (x) = - f (x). Então, está tentando encontrar razões Sharpe mínimas e negativas. No final, ele imprime o melhor valor encontrado na execução de otimização e depois grava o arquivo CSV fornecido cujo nome de arquivo que você vê impresso acima, que você pode abrir e examinar. Aqui está uma amostra do que o CSV se parece:
Cada linha corresponde a um comércio simulado. O significado das colunas é o seguinte:
OpenIndex e CloseIndex são usados ​​para plotagem e podem ser ignorados Open e Close são as datas em que o negócio foi iniciado e finalizado, respectivamente OpenPrice e ClosePrice são os preços do estoque nas datas de abertura e fechamento. Type é o tipo de troca. Atualmente, isso sempre será "LONG", pois o Bateman é apenas longo. Tamanho é o número de ações compradas. OutlayCost é o custo total de compra de todas as ações. Lucro é o montante do lucro obtido em cada transação após a contabilização de derrapagens e comissões. As perdas aparecerão como lucro negativo. Saldo é o saldo da conta simulada no final do negócio nessa linha; a coluna de saldo constitui uma "curva de patrimônio".
Então, o que o registro de comércio acima significa? Como fizemos em geral? Bem, vamos dar uma olhada. O programa foi executado em um computador na costa oeste dos EUA, no fuso horário do PDT, 3 horas atrasado na bolsa de valores em Nova York. Então, aqui no nosso conjunto de dados, a negociação começa todos os dias às 6h30. Na amostra de saída acima, podemos ver todos os negócios foram abertos pela manhã e mantidos em qualquer lugar de 5 minutos a algumas horas. Neste conjunto de dados, todos os nossos negócios são lucrativos. Mas se olharmos para a tendência geral da AAPL no intervalo de datas em questão, vemos que estava passando por uma longa recuperação. Então, nós realmente estamos lucrando com isso. Então, enquanto isso funciona, até certo ponto, estamos apenas recapitulando buy-and-hold, mas de uma forma que nesta simulação nos deixa com ganhos consistentes sempre. Nosso gatilho de compra é de US $ 1,36 e nosso gatilho de venda é de US $ 1,39, então estamos realmente aproveitando uma ação que, em retrospectiva, já estava destinada a fazer um grande movimento ascendente para o dia.
O otimizador procurará tudo o que maximize nossa função objetiva. A simulação acima não captura necessariamente nada por causa da falta de dados para os quais temos acesso. No momento, isso não pode ser ajudado porque os dados intraday do Google Finance parecem voltar algumas semanas. Um uso mais sério disso exigiria mais dados.
Vamos falar por um segundo sobre essa estratégia em comparação com comprar e manter. Alguém que compra ações e segure-se para eles ganhará mais do que uma estratégia comercial ativa, como o que Bateman sugere, sim; e acumularemos muitas despesas de comissões que consomem nossos lucros. Mas nossa estratégia de negociação também pode nos dar lucros muito mais consistentes no dia-a-dia do que comprar e manter, mesmo que comprar e manter supere essa estratégia a longo prazo para algumas ações.
Veja o arquivo sample_plotting_script. r no diretório de plotagem para um exemplo de visualização dos dados de estoque e do log de negociação juntos. Substitua o tempo de execução na parte superior do com os que o Bateman coloca no arquivo CSV de saída, copie os arquivos CSV no diretório de plotagem e execute-o com R, assim:
Os exemplos de CSVs estão incluídos no projeto, portanto, execute isso como deveria funcionar. Você precisará da biblioteca de cronogramas, que você instala com install. packages ("chron").
Veja i. imgur / HBoX2sG. png para um exemplo completo da imagem bastante grande que o script produz atualmente; é intencionalmente criado para ser bastante largo, atualmente 5000px, para que você possa ver uma série longa de dados intradiários com clareza. Você, obviamente, precisará rolar a imagem horizontalmente.
Um detalhe do enredo é mostrado abaixo.
A série temporal é plotada como seria de esperar, e os negócios são então sobrepostos nessa série de tempo para mostrar entradas e saídas. Há texto lateral para cada negociação para dar datas e os valores exatos de lucro, também. Esses negócios são lucrativos, então eles são exibidos em verde. Os negócios perdidos são mostrados em vermelho.
É possível obter muito mais elaborado com a visualização e análise de dados como este, mas basicamente o trabalho é bastante bom.
Se você não usou R antes, considere escolher um livro introdutório sobre ele ou tentar um tutorial.
Eu preciso investigar mais se as suposições que o programa faz sobre como ele coloca suas ordens de mercado são realmente realistas.
Eu gostaria de tornar o programa mais configurável e mais fácil de entender. Uma interface web seria legal.
As instalações para analisar e traçar negócios com R podem ser mais automatizadas e melhores.
Uma coisa final interessante a notar é que uma versão um tanto análoga deste sistema poderia ser usada para negociação forex!
Espero que este README prolongado tenha sido útil para entender o que este programa faz.
&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.

Sistema de negociação do github
Puxe pedidos 0.
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 Git ou check-out com o SVN usando o URL da web.
&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.

Sistema de negociação do github
Solicitações de envio 11.
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 Git ou check-out com o SVN usando o URL da web.
Temos o prazer de anunciar que a equipe de desenvolvimento de software da QuantStart está atualmente no processo de um completo redesenvolvimento do QSTrader.
A nova versão será uma simulação de negociação quantitativa de ponta a ponta e mecanismo de negociação ao vivo, em vez da versão atual, que se limita ao backtesting dirigido a eventos.
Progressos significativos foram feitos internamente nos últimos dois meses. Algum deste desenvolvimento foi disponibilizado no ramo de desenvolvimento, que pode ser encontrado aqui.
O código permanecerá licenciado pelo MIT e todas as versões públicas exigirão cobertura de código de 100%.
Se você deseja ler mais sobre os desenvolvimentos propostos, consulte o artigo recente publicado no QuantStart.
QSTrader é uma plataforma de backtesting dirigida a eventos de código aberto para uso nos mercados de ações, atualmente em um estado alfa.
Foi criado como parte da série de artigos da Infraestrutura de Negociação Avançada no QuantStart para fornecer à comunidade comercial sistemática um motor de negociação robusto que permite a implementação e teste de estratégia de ações diretas.
O software é fornecido sob uma licença permissiva "MIT" (veja abaixo).
Open-Source - O QSTrader foi lançado sob uma Licença MIT de código aberto extremamente permissiva, que permite uso total em aplicações comerciais e de pesquisa, sem restrição, mas sem garantia de qualquer tipo. Assim, você pode usá-lo em casa para realizar negociação no varejo ou dentro de um fundo quant como base para seu sistema de gerenciamento de pesquisa e / ou pedido.
Grátis - QSTrader é totalmente gratuito e não custa nada para baixar ou usar.
Colaboração - Como o QSTrader é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Todos os erros são rapidamente determinados e corrigidos.
Desenvolvimento de Software - O QSTrader é escrito na linguagem de programação Python para suporte direto entre plataformas. QSTrader contém um conjunto de testes de unidade para a maioria do seu código de cálculo e testes são constantemente adicionados para novos recursos.
Arquitetura orientada a eventos - O QSTrader é completamente conduzido por eventos, o que leva a uma transição direta de estratégias de uma fase de pesquisa para uma implementação de negociação ao vivo.
Backtesting - O QSTrader suporta os conjuntos de dados de resolução de ticks intraday (top of order order / ask), bem como os dados de resolução "bar" do OHLCV em várias escalas de tempo.
Componentes Privados - QSTrader permite que você inclua um repositório de suas próprias estratégias ou componentes particulares. Simplesmente registre seu próprio repositório dentro da raiz do QSTrader e renomeie o diretório para private_files. Isso garantirá que o repositório QSTrader possa ser facilmente atualizado sem interferir com seu repositório privado.
Métricas de desempenho - O QSTrader oferece suporte a medições de desempenho em nível de portfólio e de comércio. Ele fornece uma "ficha de publicação" abrangente (veja abaixo) com estatísticas de estratégia associadas.
Custos de transação - As comissões atualmente são suportadas usando taxas padrão da Interactive Brokers para ações norte-americanas. O impacto do impacto e do mercado está planejado, mas atualmente não é suportado.
Negociação - O QSTrader suportará negociação intraday ao vivo usando a API Python nativa do Interactive Brokers, inicialmente para ações norte-americanas.
O QSTrader está no estado alfa inicial no momento. Ele só deve ser usado para pesquisas exploratórias de backtesting. O procedimento de instalação é um pouco mais complicado do que um pacote padrão do Python, pois ainda não foi adicionado ao repositório de pacotes do Python.
O Ubuntu Linux é a plataforma recomendada para instalar o QSTrader, mas também funciona no Windows ou Mac OSX sob a distribuição Anaconda (continuum. io/downloads).
Para aqueles que desejam criar seu próprio ambiente virtual Python, as etapas a seguir são necessárias para executar uma estratégia básica de Compra e Manutenção, bem como uma estratégia de acompanhamento de tendências de Moving Average Crossover um pouco mais complexa.
Um exemplo de diretório de ambiente virtual.
/ venv / qstraderp3 foi usado aqui. Se você deseja alterar este diretório, renomeie-o nas etapas a seguir.
As etapas a seguir criarão um diretório de ambiente virtual com o Python 3 e ativarão o ambiente:
Neste ponto, é necessário usar o pip para instalar o QSTrader como uma biblioteca e, em seguida, instalar manualmente os requisitos. As seguintes etapas levam algum tempo (5-10 minutos), pois o QSTrader depende de NumPy, SciPy, Pandas, Matplotlib e muitas outras bibliotecas e, portanto, todos precisarão compilar:
Agora que a própria biblioteca e os requisitos foram instalados, é necessário criar os diretórios padrão para os dados e a saída. Além disso, é possível fazer o download dos dados necessários e do código de exemplo para executar um backtest simples de uma estratégia Buy And Hold no índice de retorno total S & amp; P500:
Finalmente, podemos executar o backtest em si:
Depois de concluído, você verá uma "prova de publicação" completa dos resultados, incluindo:
Curva de capital Curva de retirada Mapas de retorno mensais Distribuição de retorno anual Estatísticas de nível de carteira Estatísticas de nível de comércio.
A lágrima parecerá semelhante a:
Você pode explorar o arquivo buy_and_hold_backtest. py para examinar a API do QSTrader. Você verá que é relativamente simples configurar uma estratégia simples e executá-la.
Para regras de compra e venda um pouco mais complexas, é possível considerar uma estratégia de Moving Average Crossover.
A estratégia a seguir cria duas médias simples com respectivos períodos de lookback de 100 e 300 dias. Quando o SMA de 100 períodos excede os compartilhamentos SMA 100 de 300 períodos da AAPL são desejados. Quando o SMA de 300 períodos excede o SMA de 100 períodos, a posição é fechada. Para obter os dados dessa estratégia e executá-la, execute o seguinte código:
O backtest pode ser executado com o seguinte comando:
Uma vez concluída uma folha de lágrima completa será apresentada, desta vez com uma referência:
Outras estratégias de exemplo podem ser encontradas no diretório de exemplos. Cada exemplo é autônomo em um arquivo **** _ backtest. py, que pode ser usado como modelos para suas próprias estratégias.
O projeto está constantemente sendo desenvolvido, portanto, infelizmente, é provável que a API atual tenha incompatibilidade inversa até que uma versão beta madura tenha sido produzida.
Se você tiver dúvidas sobre a instalação, então fique à vontade para enviar e-mail para suporte.
Se você notar quaisquer erros ou outros problemas que você acha que podem ser devido especificamente à base de código, sinta-se à vontade para abrir um problema Github aqui: github / mhallsmoore / qstrader / issues.
Direitos autorais (c) 2015-2017 QuantStart, QuarkGluon Ltd.
A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de uso, cópia, modificação, mesclagem , publicar, distribuir, sublicenciar e / ou vender cópias do Software e permitir que pessoas a quem o Software seja fornecido, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou porções substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRAM", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃO. EM NENHUMA CIRCUNSTÂNCIA, OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENDO, DESTE OU RELACIONADO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NA PROGRAMAS.
Trading equities on margin carries a high level of risk, and may not be suitable for all investors. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você e também para você. Before deciding to invest in equities you should carefully consider your investment objectives, level of experience, and risk appetite. Existe a possibilidade de que você possa sustentar uma perda de algum ou todo seu investimento inicial e, portanto, você não deve investir dinheiro que não pode perder. You should be aware of all the risks associated with equities trading, and seek advice from an independent financial advisor if you have any doubts.
&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.

Trading system github


Puxe pedidos 0.
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 Git ou check-out com o SVN usando o URL da web.
Auto Cryptocurrency Trading System.
This API-based system is tested in South Korea only.
Python 3.6 Numpy Pandas Matplotlib.
Clone this repository.
Install Packages For pip install.
Create account_info. py with api_key and api_secret.
Please be careful of exposing your api keys!
Currently, it supports basic fatures only.
Bid/Ask Order Trade with market price Query orderbook Record the price of cryptocurrency Record the history of trading Bollinger Band.
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
Bithumb RESTFul API.
&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.

No comments:

Post a Comment