BigData. Iniciantes. Negociação
BigData. Iniciantes. Negociação
Colocando seu primeiro comércio Forex com o Python.
Atualização: atualizei o código para que funcione com a nova API da Oanda. Venha aqui.
Hora de falar sobre corretores, como colocar um comércio programaticamente e, mais importante, como não ser enganado.
Um corretor nada mais é do que uma empresa que permite negociar (comprar ou vender) ativos em um mercado por meio de sua plataforma. O que é muito importante para o algotrading é:
O corretor oferece uma API para que possamos fazer pedidos Você pode ter uma conta de demonstração para executar seu ambiente de preparação e experimentar O spread é o menor possível.
No nosso caso, nós realmente não nos importamos com spread, já que não estaremos fazendo High Frequency Trading em breve.
Mesmo que os corretores sejam regulamentados, houve incidentes nos últimos dois anos, quando os corretores foram dobrados devido a certas condições. Seja muito cauteloso se.
Não há comentários do corretor na internet (ou a maioria deles é ruim) Se o corretor oferece alguma alavancagem louca (como 1: 200) Se o corretor parece estar em um país muito estranho.
O que pode acontecer é que você comece a ganhar algum dinheiro e você não será capaz de retirá-los. A sério. Situação super estressante.
Mas vamos mudar para uma nota mais feliz que está abrindo uma conta e colocando nosso primeiro comércio programático. Whooha!
Eu estou usando o Oanda como um corretor (eu não sou afiliado com eles) e eles oferecem uma API decente, bibliotecas no github e uma conta demo gratuita.
Depois de fazer login na sua conta de demonstração, acesse Gerenciar acesso à API. Lá você pode encontrar sua chave de API que usaremos em nosso sistema para fazer negócios. CERTIFIQUE-SE DE NÃO COMPARTILHAR ESTA CHAVE.
O código para isso é e todos os outros posts estão no github e você pode instalá-lo e executá-lo facilmente.
Atualização: Oanda lançou um novo mecanismo de execução (kickass) chamado v20 e eles lançaram uma nova (melhorada) API. Esta postagem foi atualizada para usar a nova API, mas se (por algum motivo) você quiser verificar o código antigo, ela está aqui. Você tem sorte!
Conectar-se ao Oanda precisa de um arquivo conf - que você pode gerar usando um script que o Oanda fornece aqui ou você pode simplesmente criá-lo você mesmo. Porque você iria querer aquilo? Primeiro de tudo, quando se trata de credenciais (e meu dinheiro), eu prefiro saber tudo o que está acontecendo. E eu não gosto de ter que instalar o PyYAML apenas para ler um arquivo conf. Sinta-se à vontade para usar um dos métodos.
Agora prepare-se para se surpreender. O código é direto. Nós inicializamos a API:
e agora vamos fazer um pedido (compre 5000 unidades de EURUSD)
Verifique o preço atual é tão fácil!
Super fácil. Não se preocupe com o que é o EURUSD ou quantas unidades estamos comprando ou o que é uma ordem de mercado. Por enquanto, nós colocamos nossa primeira negociação em nosso laptop e vamos construir nossa própria API para fazer negócios. Coisas emocionantes!
Você pode ler a documentação de Oanda aqui para ver o que mais você pode fazer com sua API e encontrar a biblioteca Python aqui. Um dos exemplos estão disponíveis na página do github de Oanda aqui.
A seguir, conectando-se a um sistema de algotrading real ao vivo, rodando a partir do meu RaspberryPI em casa.
Você poderá ver o programa (quase) final em execução e falaremos mais sobre Forex e estratégias.
Se você tiver mais comentários, envie-me um ping no jonromero ou inscreva-se no boletim informativo.
Outro Jurídico Este é um tutorial de engenharia sobre como construir uma plataforma de algotrading para experimentação e DIVERSÃO. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todo) dinheiro porque seguiu qualquer aviso de negociação ou implantou este sistema em produção, você não pode culpar esse blog aleatório (e / ou eu). Aproveite por sua conta e risco.
O sistema baseia-se na natureza média de reversão das flutuações de preços durante as horas noturnas (das 20:00 às 08:00 para EET). O backtest foi realizado a partir de 2005.
O EA coloca dois pedidos de limite em um período de tempo específico. Este sistema não utiliza técnicas de martingale / grid nem gerenciamento de hedge.
O robô de negociação usa:
EMA diário para determinação da tendência; Níveis de suporte e resistência do Canal de preços para posicionamento ideal de pedidos de limite; Filtro de Volatilidade; Time-stop e Stop-loss.
Prazo - M30. Moeda: GBP / USD. O EA pode ser backtested por barras ou por cada tick.
Lotes - tamanho do lote de negociação. OrderStepPip - passo entre dois pedidos de limite. TakeProfitPip - meta de lucro em pips (cotações de 4 dígitos) do preço de entrada. StopLossPip - stop-loss em pips (cotações de 4 dígitos) do preço de entrada. 0 desabilitado. PCH - período do canal de preços. Período EMA - EMA. OrderStartHour - hora em que o EA começará a encontrar pontos de entrada de compra / venda ideais. Se o ponto de entrada for encontrado, o EA colocará uma ordem de limite. OrderStopHour - hora em que o EA deixará de encontrar pontos de entrada de compra / venda ideais. TStopHour - hora em que o EA sairá de uma posição. UseMM_Balance - valor na moeda de depósito. Se esta opção estiver definida (ou seja, diferente de 0), então o lote de negociação é calculado por cada parte UseMM_Balance do depósito. Se definido como 0, o tamanho do lote de negociação é fixo e é igual a Lotes. Por exemplo, se Lots = 0.1 e UseMM_Balance = 300, quando o depósito for 300, o EA abrirá uma ordem de 0,1 lote, e quando o depósito for 600 - 0,2 lote, quando o depósito for 900 - 0,3 lote, etc. parâmetro é necessário para o reinvestimento.
Recursos EA.
Depósito mínimo - 100 $ Lote mínimo - 0,01 Tipos de contas recomendados - NDD e ECN.
Bons resultados na conta de demonstração. Desistências ocasionalmente - nem sempre - parecem um pouco grandes. Agora testando em pequena conta real. Edite a revisão em algumas semanas e informe sobre a estabilidade.
Editar 1: executando em conta ao vivo fornece resultados positivos. Negociação lenta (1-2 Trades / week no máximo) é verdadeira. Eu não me importo em negociar vagarosamente. Estabilidade é tudo ou nada. Assim, se ainda for lucrativo em algumas semanas, postarei a próxima edição.
Editar 2: Depois de algumas semanas, decidi não usá-lo na minha conta real. Houve muito zig-zag recentemente e a estabilidade nem sempre foi dada. Talvez seja devido a mercados em mudança, mas eu prefiro EAs que podem lidar com isso e são rentáveis a longo prazo.
Ainda assim, para ganhos de curto prazo, tudo bem, mas esse não é meu objetivo. Obrigado mesmo assim.
Robôs de construção com framboesa Pi e Python.
Introdução: Robôs de construção com Raspberry Pi e Python.
Etapa 1: lista de peças.
Neste tutorial, vamos usar os seguintes itens:
Etapa 2: Introdução ao Python.
Python é uma linguagem de programação de alto nível interpretada, interativa, orientada a objetos e de alto nível que foi criada por Guido van Rossum no final dos anos oitenta. O Python permite que os usuários escrevam código com sintaxe clara e legível, com um número crescente de bibliotecas de suporte para várias tarefas de código aberto e com uma comunidade baseada em seu desenvolvimento. Aqui estão alguns links úteis que podem ser úteis quando se inicia.
Etapa 3: Instalação e Configuração do Python.
Para que nossos programas em Python sejam executados, precisamos primeiro garantir que o Python esteja instalado em nosso sistema junto com as dependências adequadas e verificar a versão que estamos usando. Agora, se você estiver usando a imagem "2013-02-09-wheezy-raspbian. img" ou mais tarde no seu Raspberry Pi, o Python deve estar pré-instalado.
sudo chmod + x /home/pi/term. py.
sudo chmod + x /home/pi/Buttons. py.
E, por último, consulte o diagrama de fiação acima para configurar as conexões de energia para a base do robô.
Etapa 4: exemplos.
Eu escolhi alguns programas úteis e simples que podem ajudá-lo a começar a entender o Python e conectá-lo ao seu Arduino. Há muitos tutoriais úteis no Youtube e on-line que você deve investigar se quiser desenvolver um entendimento mais forte do Python. Eu só vou explicar brevemente a natureza do código, incluindo alguns comentários dentro do código. Então, se você está curioso sobre como o Python funciona ou suas regras, sintaxe, expressões. Você também pode experimentar alguns dos links abaixo.
Quando o programa é executado corretamente, podemos usar o teclado para enviar dados para o Arduino pela serial para controlar o nosso robô.
E o último programa é uma interface de botão simples que exibe botões clicáveis para enviar dados ao Arduino para conduzir o robô.
Você pode clicar duas vezes em Buttons. py ou usar o seguinte comando de terminal.
Etapa 5: Teleoperação
VNC (Virtual Network Computing) é uma forma de controlar e monitorar uma área de trabalho de computadores de outro computador em uma rede. Que no nosso caso será útil para teleoperação remota sem fio do robô e controle básico do Raspberry Pi. Para concluir esta tarefa, precisaremos de um roteador sem fio e de um dongle sem fio conectado ao PI Raspberry, além de um computador separado para controlar o robô por meio do VNC.
Analytics for robots python forex Adicionar à watchlist.
Melhor de robôs python forex em KeyOptimize (de 459 Mil em resultado | Última verificação 15 de julho de 2016)
Negociação com Python. Páginas. Quinta-feira, 12 de janeiro de 2012. Segunda-feira, 26 de dezembro de 2011. Quarta-feira, 14 de dezembro de 2011. Sexta-feira, 4 de novembro de 2011. Sexta-feira, 28 de outubro de 2011. segunda-feira, 17 de outubro de 2011. sábado, 15 de outubro de 2011. Por favor me ajude a melhorar o conte.
Bem-vindo a este site com nossos comentários honestos e resultados comprovados do BEST FOREX EA & # 39; S | CONSULTORES EXPERT FX PARA METATRADER MT4 | ROBÔS FOREX em 2015.
A Toptal permite que empresas iniciantes, empresas e organizações contratem freelancers de uma rede crescente de talentos de ponta no mundo. Encontre talentos de qualidade para trabalhar em tempo integral, meio expediente ou por hora, que se integrarão perfeitamente à sua equipe.
MQL5: linguagem de estratégias de negociação embutidas na Plataforma de Negociação MetaTrader 5, permite escrever seus próprios robôs de negociação, indicadores técnicos, scripts e bibliotecas de funções.
Estratégias de negociação algorítmica, backtesting e implementação com C ++, Python e pandas.
O GitHub reúne a maior comunidade mundial de desenvolvedores para descobrir, compartilhar e construir softwares melhores. De projetos de código aberto a repositórios de equipes particulares, somos sua plataforma completa para desenvolvimento colaborativo.
Curta os vídeos e músicas que você adora, faça o upload do conteúdo original e compartilhe tudo isso com amigos, familiares e o mundo no YouTube.
Tutoriais de programação em Python do iniciante ao avançado em uma variedade enorme de tópicos. Todos os vídeos e tutoriais de texto são gratuitos.
Posts mais recentes Últimas Open RNA-Seq ChIP-Seq Montagem SNP Tutoriais Ferramentas Empregos Fórum Planet All & raquo; Últimas Últimas Open RNA-Seq ChIP-Seq Montagem SNP Tutoriais Ferramentas Empregos Fórum Planet All & raquo; Home Entrar Bem vindo ao Biostar! sobre & amp; bull; faq & bull; .
Negociação com Python.
Sábado, 20 de maio de 2017.
Yahoo está morto, viva o Yahoo!
Nota: os dados fornecidos parecem ser ajustados para divisões, mas não para dividendos.
Sábado, 20 de fevereiro de 2016.
Uma borda estatística simples no SPY.
Ocorreu-me que na maioria das vezes que há muita conversa na mídia sobre a queda do mercado (depois de grandes perdas ao longo de vários dias de intervalo), uma recuperação bastante significativa às vezes acontece.
No passado cometi alguns erros ao fechar minhas posições para reduzir as perdas, apenas para perder uma recuperação nos dias seguintes.
Após um período de perdas consecutivas, muitos comerciantes liquidarão suas posições com medo de perdas ainda maiores. Muito desse comportamento é governado pelo medo, e não pelo risco calculado. Comerciantes mais espertos entram então para as barganhas.
Depois de 3 ou mais perdas consectivas, vá muito longe. Saia no próximo feche.
Isso não parece nada mau! Observando as taxas de sharpe, a estratégia obtém uma descida de 2,2 versus 0,44 para os B & amp; Na verdade, isso é muito bom! (não fique muito empolgado, pois não contei com custos de comissão, escorregões, etc.).
Embora a estratégia acima não seja algo que eu gostaria de negociar simplesmente por causa do longo período de tempo, a própria teoria provoca pensamentos adicionais que poderiam produzir algo útil. Se o mesmo princípio se aplica aos dados intradiários, uma forma de estratégia de escalpelamento poderia ser construída. No exemplo acima, simplifiquei um pouco o mundo contando apenas o * número * de dias de inatividade, sem prestar atenção à profundidade do rebaixamento. Além disso, a saída de posição é apenas um 'próximo dia de fechamento' básico. Há muito a melhorar, mas a essência na minha opinião é esta:
Segunda-feira, 17 de novembro de 2014.
Negociando o VXX com a previsão de vizinhos mais próximos.
Minha definição desses dois é:
prêmio de volatilidade = VIX-realizadoVol delta (inclinação da estrutura de prazo) = VIX-VXV.
Combinar tanto o prêmio quanto o delta em um modelo foi um desafio para mim, mas eu sempre quis fazer uma aproximação estatística. Em essência, para uma combinação de (delta, premium), gostaria de encontrar todos os valores históricos que estão mais próximos dos valores atuais e fazer uma estimativa dos retornos futuros com base neles. Algumas vezes comecei a escrever meus próprios algoritmos de interpolação de vizinhos mais próximos, mas toda vez tive que desistir. até me deparar com a regressão dos vizinhos mais próximos. Isso me permitiu construir rapidamente um preditor baseado em duas entradas e os resultados são tão bons que estou um pouco preocupado por ter cometido um erro em algum lugar.
criar um conjunto de dados de [delta, premium] - & gt; [Retorno do próximo dia VXX] (na amostra) cria um preditor do vizinho mais próximo com base no conjunto de dados acima da estratégia de negociação (fora da amostra) com as regras: go long if predicted return & gt; 0 vai curto se o retorno previsto & lt; 0.
Nos dois últimos gráficos, a estratégia parece realizar o mesmo dentro e fora da amostra. Relação de Sharpe é em torno de 2,3.
Estou muito satisfeito com os resultados e tenho a sensação de que só estive a arranhar a superfície do que é possível com esta técnica.
Quarta-feira, 16 de julho de 2014.
Módulo de backtesting simples.
Minha busca por uma ferramenta de backtesting ideal (minha definição de 'ideal' é descrita nos posts anteriores de 'dilemas de backtesting') não resultou em algo que eu pudesse usar imediatamente. No entanto, rever as opções disponíveis me ajudou a entender melhor o que eu realmente quero. Das opções que eu olhei, o pybacktest foi o que eu mais gostei por causa de sua simplicidade e velocidade. Depois de passar pelo código-fonte, tenho algumas ideias para simplificar e tornar um pouco mais elegante. A partir daí, foi apenas um pequeno passo para escrever meu próprio backtester, que agora está disponível na biblioteca TradingWithPython.
encontrar entrada e saídas - & gt; calcular pnl e fazer gráficos com backtester - & gt; dados de estratégia pós-processo.
Sábado, 7 de junho de 2014.
Aumentando o desempenho com o Cython.
5k amostras como dados de teste. Aí vem a versão original da minha função drawdown (como está agora implementada na biblioteca TradingWithPython)
Hmm 1,2 segundos não é muito rápido para uma função tão simples. Há algumas coisas aqui que podem ser uma ótima alternativa para o desempenho, como uma lista * highwatermark * que está sendo anexada em cada iteração de loop. Acessar Series por seu índice também deve envolver algum processamento que não seja estritamente necessário. Vamos dar uma olhada no que acontece quando esta função é reescrita para trabalhar com dados numpy.
Bem, isso é muito mais rápido que a função original, aproximadamente 40x de aumento de velocidade. Ainda há muito espaço para melhoria, movendo-se para código compilado com cython Agora eu reescrever a função dd de cima, mas usando dicas de otimização que eu encontrei no tutorial cython. Observe que esta é minha primeira tentativa de otimização de funções com o Cython.
Uau, esta versão corre em 122 micro segundos, tornando-a dez mil vezes mais rápida que a minha versão original! Devo dizer que estou muito impressionado com o que as equipes Cython e IPython alcançaram! A velocidade em comparação com a facilidade de uso é simplesmente incrível!
P. S. Eu costumava fazer otimizações de código no Matlab usando encapsulamento C e. mex puro, era tudo apenas uma dor na bunda em comparação com isso.
Terça-feira, 27 de maio de 2014.
Dilemas de backtesting: revisão de pyalgotrade.
Primeira impressão: ativamente desenvolvida, documentação muito boa, mais do que feautures suficiente (indicadores de TA, otimizadores etc). Parece bom, então eu continuei com a instalação que também correu bem.
O tutorial parece estar um pouco desatualizado, já que o primeiro comando yahoofinance. get_daily_csv () lança um erro sobre a função desconhecida. Não se preocupe, a documentação está atualizada e acho que a função ausente agora é renomeada para yahoofinance. download_daily_bars (símbolo, ano, csvFile). O problema é que essa função só faz o download de dados por um ano, em vez de tudo, desde aquele ano até a data atual. Tão bem inútil.
Depois que eu mesmo baixei os dados e os salvei no csv, eu precisei ajustar os nomes das colunas, porque aparentemente o pyalgotrade espera que Date, Adj Close, Close, High, Low, Open e Volume estejam no cabeçalho. Isso é tudo um pequeno problema.
Seguindo para o teste de desempenho em uma estratégia de SMA que é fornecida no tutorial. Meu conjunto de dados consiste em 5370 dias de SPY:
Isso é realmente muito bom para um framework baseado em eventos.
Mas tentei pesquisar a documentação para obter a funcionalidade necessária para fazer o backtest de spreads e vários portfólios de ativos e simplesmente não consegui encontrar nenhum. Então eu tentei encontrar uma maneira de alimentar o DataFrame pandas como uma entrada para uma estratégia e acontece de não ser possível, o que é novamente uma grande decepção. Eu não o afirmei como um requisito no post anterior, mas agora chego à conclusão de que o suporte a pandas é obrigatório para qualquer framework que trabalhe com dados de séries temporais. Pandas foi uma razão para eu mudar de Matlab para Python e eu nunca mais quero voltar.
Conclusão A pyalgotrade não atende ao meu requisito de flexibilidade. Parece que foi projetado com o TA clássico em mente e negociação de instrumento único. Eu não vejo isso como uma boa ferramenta para estratégias de backtesting que envolvem vários ativos, hedge etc.
Segunda-feira, 26 de maio de 2014.
Dilemas de backtesting.
Seja boa aproximação do mundo real. Este é obviamente o requisito mais importante. Permitir flexibilidade ilimitada: o ferramental não deve ficar no caminho de testar ideias prontas para uso. Tudo o que pode ser quantificado deve ser utilizável. Seja fácil de implementar & amp; manter. É tudo sobre produtividade e poder testar muitas ideias para encontrar uma que funcione. Permitir varreduras de parâmetros, testes de avanço e otimizações. Isso é necessário para investigar o desempenho e a estabilidade da estratégia, dependendo dos parâmetros da estratégia. O problema em satisfazer todos os requisitos acima é que os números 2 e 3 são conflitantes. Não há ferramenta que possa fazer tudo sem o custo de alta complexidade (= baixa manutenção). Normalmente, uma ferramenta point-and-click de terceiros limitará severamente a liberdade de teste com sinais personalizados e portfólios ímpares, enquanto no outro extremo do espectro uma solução diy personalizada precisará de dezenas ou mais horas para ser implementada, com grandes chances de terminando com código desordenado e ilegível. Então, na tentativa de combinar o melhor dos dois mundos, vamos começar de alguma forma no meio: use uma estrutura de backtesting existente e adapte-a ao nosso gosto.
Nos posts a seguir, eu vou ver três candidatos possíveis que encontrei:
Zipline é amplamente conhecida e é o motor por trás do PyPlotTub Quantopian parece ser ativamente desenvolvido e o pybacktest bem documentado é um framework baseado em vetores leve, que pode ser interessante por causa de sua simplicidade e desempenho. Eu vou estar olhando para a adequação dessas ferramentas comparando-as com uma estratégia de negociação hipotética. Se nenhuma dessas opções se encaixa nos meus requisitos, terei que decidir se quero investir na criação do meu próprio framework (pelo menos, observando as opções disponíveis, eu sei o que não funciona) ou manter o código personalizado para cada uma delas. estratégia.
O primeiro para a avaliação é Zipline.
Minha primeira impressão de Zipline e Quantopian é positiva. O Zipline é apoiado por uma equipe de desenvolvedores e é testado em produção, então a qualidade (bugs) deve ser ótima. Existe uma boa documentação no site e um exemplo de caderno no github.
Para pegar um jeito, baixei o caderno do exame e comecei a brincar com ele. Para minha decepção, rapidamente me deparei com o primeiro exemplo do Algoritmo de Zipline Mais Simples: Compre a Apple. O conjunto de dados tem apenas 3028 dias, mas a execução deste exemplo demorou uma eternidade. Aqui está o que eu medi:
Eu não esperava um desempenho estelar, já que o zipline é um backtester baseado em eventos, mas quase um minuto para 3000 samples é muito ruim. Esse tipo de desempenho seria proibitivo para qualquer tipo de varredura ou otimização. Outro problema surgiria quando se trabalha com conjuntos de dados maiores, como dados intradiários ou vários títulos, que podem conter facilmente centenas de milhares de amostras.
Infelizmente, eu terei que eliminar o Zipline da lista de backtesters utilizáveis, já que ele não atende ao meu requisito # 4 por uma margem de gordura.
No post seguinte, eu vou estar olhando para PyAlgotrade.
Nota: Meu sistema atual é um par de anos, rodando um AMD Athlon II X2 @ 2800MHZ com 3GB de RAM. Com backtesting baseado em vetor, eu estou acostumado a calcular tempos de menos de um segundo para um único backtest e um ou dois minutos para uma varredura de parâmetro. Um teste básico de caminhada com 10 passos e uma varredura de parâmetros para 20x20 resultaria em uma convulsiva 66 horas com tirolesa. Eu não sou tão paciente assim.
Комментариев нет:
Отправить комментарий