Monday, 23 October 2017

Baixando dados históricos do intraday do google com o python


Baixando dados históricos do Intraday do Google com o Python


19 de dezembro de 2017


Até agora, em minhas postagens anteriores, temos vindo a fazer o download de preços de ações DIÁRIAS dos sites conhecidos Yahoo e Google. Ambos os sites oferecem um acesso muito fácil a dados históricos diários gratuitos. Ambos os sites também oferecem gráficos agradáveis ​​dos preços das ações. Mas alguns de vocês podem ter notado que o Google gráficos não só os preços diários, mas também gráfico INTRADAY preços até a resolução de dois minutos. No entanto, não existem links publicados para obter os dados brutos utilizados para criar os gráficos. Vadio. Vamos investigar um pouco e ver o que podemos descobrir.


Para aqueles que usam o navegador Chrome excelente, ele tem um utilitário embutido para examinar praticamente todos os aspectos de uma página da web (ou site). Ele é chamado Developer Tools. Ele pode ser iniciado clicando no ícone de chave inglesa no canto superior direito, selecionando Ferramentas, depois Ferramentas de Desenvolvimento (ou simplesmente Ctrl + Shift + I). Este utilitário tem uma enorme quantidade de funcionalidade, mas estamos principalmente interessados ​​em qualquer tráfego de rede que uma página gera. Então, vamos começar por puxar a página de resumo do Google Finance para AAPL. Em seguida, inicie as ferramentas do desenvolvedor e clique na guia Rede. Finalmente, no gráfico para AAPL, clique no link 2min intervalo. Na parte inferior da página haverá uma lista de todas as solicitações de rede que foram geradas clicando no link 2min. Olhando para eles, há um chamado getprices. Isso parece promissor! Agora clique nesse link e então o 8220; response8221; Guia na parte superior para ver qual foi a resposta do servidor à solicitação. Aqui está o aspecto do meu navegador:


Os dados que nos interessam são:


Agora estamos chegando a algum lugar! Isso parece com certeza dados de preço e volume, juntamente com algum tipo de carimbo de data e hora e uma lista de deslocamentos. Aqui está o aspecto do link:


Se copiar esse link e colocá-lo diretamente na barra de url do nosso navegador, podemos obter o conjunto de dados completo. Parece ter alguns dados de cabeçalho seguido por uma lista de preços. As datas parecem consistir de um valor de tempo periódico seguido por uma série de deslocamentos.


Portanto, há duas coisas para descobrir. Primeiro precisamos decifrar a string de url exatamente como fizemos para os dados diários, e então precisamos decodificar os dados de carimbo de data / hora nos resultados retornados.


Deixa o tackle a corda do url primeiramente. Faremos isso como as outras duas tentativas anteriores. Terminamos com:


O URL de base é google / finance / getprices


Q é o símbolo (AAPL)


X é a troca (NASD)


I é o intervalo em segundos (120 = segundos = 2 minutos)


Sessões é a sessão solicitada (ext_hours)


P é o período de tempo (5d = 5 dias)


F é os campos solicitados (d, c, v, o, h, l)


Df. (Cpct)


Auto (1)


Ts é potencialmente um carimbo de data / hora (1324323553 905)


Mais uma vez, passei algum tempo brincando com os parâmetros de consulta e descobri que você pode fugir com apenas q, i, p e f. Um url simplificado (para obter 10 dias de dados AAPL 5 minutos) se parece com isto:


Vá em frente e clique no link para experimentá-lo. Agora podemos baixar dados intraday para um período específico no tempo. Pode haver uma maneira de obtê-lo entre duas datas, mas eu ainda não descobri isso. Se alguém sabe, eu certamente estaria interessado em descobrir como.


O próximo problema é descobrir como lidar com os formatos de data estranho. Em dados retornados do exemplo acima, eu tenho 8220; a13231818008221; No primeiro campo de data e movendo para baixo, o último 8220; a8221; O número prefixado exibido foi 8220; a13240458008221 ;. Aqueles olhar suspeitosamente como selos de tempo Unix para mim. Todas as principais linguagens de programação suportam-nos e são simplesmente o número de segundos desde 1/1/1970. Novamente, usando o meu amigo Google, eu encontrei um online Unix tempo carimbo conversor e ligado os números acima (sem o 8220; a8221;). Eu tenho: 8220; Tue, 06 Dez 2017 14:30:00 GMT8221; E 8220; sex, 16 Dez 2017 14:30:00 GMT8221; Para o segundo. Bingo! Eles são selos de tempo Unix. E os dados aparecem listados com o mais antigo primeiro. Assim, para obter a data de cada carimbo de data / hora, apenas precisamos converter qualquer 8220; a8221; Os tempos prefixados para o tempo Unix, então para cada tempo sucessivo, adicionamos o deslocamento multiplicado pelo número de segundos de intervalo para o último tempo Unix gravado até que obtemos um novo 8220; a8221; Prefixado. Parece muito mais complicado do que realmente é.


Desde que eu sou interessado somente nos valores de DOHLC, eu estou indo ignorar os campos do cabeçalho em nosso dataset. E uma vez que este post está ficando muito longo, vou apresentar a classe Python que escrevi para analisar os dados:


Deve ser bastante auto-explicativo. A principal diferença entre esta classe e os outros é que é leva um intervalo (em segundos) e um lookback (em dias) em vez de uma hora de início / fim. Eu ignorar os primeiros cinco campos de cabeçalho, em seguida, verificar para os campos de data prefixados com um 8220; a8221 ;. Eu acompanhar o deslocamento e calcular a data correta com a linha:


Há uma última parte complicada: Observe que os dados OHLC estão listados em um formato não padrão. Ele realmente é retornado como CHLO, não importa qual ordem os campos f são listados.


Deve-se notar que parece que há apenas os mais recentes 10-20 dias de intraday dados disponíveis a qualquer momento. Compre hey, o que você quer para nada! Mais tarde, vamos tentar encontrar algumas coisas interessantes para fazer com esses dados e essas limitações.


E, finalmente, um exemplo completo: google_intraday. py

No comments:

Post a Comment