Uma das maiores dificuldades de quem quer fazer suas próprias análises sobre mercado acionário, é fazer a extração das cotações das ações da bolsa de valores.
As maneiras mais comuns de fazer a extração do histórico de cotações que vêm sendo apresentadas em tutorais na internet são os métodos estáticos, e por web scraping.
O método estático extrai o histórico em um ou mais arquivos para depois serem carregados na ferramenta de análise. Está opção não tem praticidade e precisa de trabalho manual para fazer atualização.
Web scraping é mais interessante, mas é preciso estar atendo com os termos de uso do site onde se quer fazer a extração, podendo haver complicações legais.
Além desses problemas, também é preciso ter bom senso ao usar o web scraping ao programar a frequência de atualização da qual pretende fazer, pois você pode ser visto como uma ameaça e precisa estar atento para não ter problemas.
Portanto, mesmo que não seja muito comum ouvir casos de pessoas que receberam algum tipo de prejuízo jurídico ou financeiro por isso, saiba que você pode estar exposto caso não se atente a essa questão.
A extração por API
Neste posto apresentamos uma abordagem mais víavel, que é o uso de API para fazer isso. API, nada mais é do que um canal para transição de informação entre sistemas. Como a própria descrição diz, ela é feita com objetivo específico de transito de dados e os requisitos e políticas de uso estão geralmente descritos na sua documentação de uso.
A extração por API é a mais indicada, pois tende a ser mais performática, evita problemas legais e são feitas propriamente para dar acesso aos usuários destinadas.
Extração na prática com Power BI.
No primeiro vídeo, apresento uma maneira muito interessante de se extrair gratuitamente as cotações das ações por API. Nesta abordagem, a API é fornecida pelo site da Alpha Vantage. Já o segundo vídeo nasceu a partir das dúvidas que surgiram do primeiro. Aproveite para se inscrever no nosso canal no Youtube e acompanhar outras análises e dicas.
Vídeo prático:
Como dito, provavelmente você vai precisar desse vídeo review para resolver e entender algumas questões que foram levantadas nos comentários do Youtube e precisavam de uma explanação.
Vídeo Review:
A empresa fornecedora da API diz fornecer até 20 anos de histórico de cotações das ações e também de indicadores técnicos. Se a análise for de ações das empresas americanas, ainda tem opção de ver dados fundamentalista como DRE e Fluxo de caixa.
Recursos extras
Existe a opção paga para ter disponível em tempo real as cotações das ações americanas e criptomoedas, mas esse serviço é oferecido por um site parceiro da Alpha Vantage que fornece apenas um cupom de desconto para usar nesse site parceiro.
Curtiu?
Quer saber mais sobre o assunto? Gostaria de ver mais informações voltadas para dados e mercado financeiro? Então, deixe seu comentário, ele é muito importante para a melhoria do conteúdo.
Entre em contato, e vamos descomplicar as coisas. Também participamos de parcerias em projetos!
Que tal acelerar o desenvolvimento do seu projeto em andamento ou já começar um novo do jeito certo?
Entre em contato, e vamos descomplicar as coisas. Também participamos de parcerias em projetos!
Bom dia, professor, estou aprendendo PBI WebScrapping e encontrei seu tutorial como extrair dados de ações B3. Você explica com clareza e segue um exemplo completo. Mas, confesso que fica difícil copiar algumas instruções passadas ao Power Query, porque não consigo ver os caracteres no vídeo. Pergunto se seria possível (recortando a parte do seu código API, claro) copiar o texto da linguagem M que acessou as tabelas do site, incluindo o acesso através de uma função, que é completamente novo para mim. Fico grato pelo que puder ajudar. Abraços.
José, segue o código já com o ajuste para aguardar 15 segundos a cada carga de ação para não estourar a API.
(papel as text) =>
let
Fonte = Json.Document(Web.Contents(“https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=”&papel&”.SA&apikey=###########ALTERAR AQUI#####################”)),
#”Time Series (Daily)” = Fonte[#”Time Series (Daily)”],
#”Convertido para Tabela” = Record.ToTable(#”Time Series (Daily)”),
#”Value Expandido1″ = Function.InvokeAfter(()=>Table.ExpandRecordColumn(#”Convertido para Tabela”, “Value”, {“1. open”, “2. high”, “3. low”, “4. close”, “5. volume”}, {“1. open”, “2. high”, “3. low”, “4. close”, “5. volume”}), #duration(0,0,0,15))
in
#”Value Expandido1″
Observei que o retorno é limitado a cinco AÇÕES (TICKERS).
Existe alguma configuração para aumentar a quantidade de ações lidas de cada vez, por favor?
Olá, José. Tudo bem?
Encontrei uma forma para driblar isso sem usar a API paga.
No Query Editor onde criamos a função, na última etapa antes do “in” use a função Function.InvokeAfter() para dar um tempo de espera entre cada ação, assim podemos programar para que nunca rode mais do que 5 ações no mesmo minuto, no caso, fiz com 15 segundos por garantia, mas pode ser um pouco menos.
O código completo dessa linha vai ficar assim: #”Value Expandido1″ = Function.InvokeAfter(()=>Table.ExpandRecordColumn(#”Convertido para Tabela”, “Value”, {“1. open”, “2. high”, “3. low”, “4. close”, “5. volume”}, {“1. open”, “2. high”, “3. low”, “4. close”, “5. volume”}), #duration(0,0,0,15))
Boa tarde!
Primeiramente obrigado por compartilhar o conhecimento.
No caso do Power BI, o Function.InvokeAfter 15s acrescentou algumas ações além das 5 possíveis (umas 3 ou 4), mas ainda seria legal uma lista um pouquinho maior… Tentei no excel também, mas neste trouxe exatamente os 5 e nada além.
E se tentássemos um loop para lotes de 5 em 5? (sem querer abusar mais ainda da sua ajuda)…
Já me tornei seguidor do Canal Ed, e creio que esse tipo de assunto cativa muita gente.
De qualquer forma, novamente, obrigado por compartilhar te conhecimento.
Olá,Andre! Desculpe a demora para responder. Nesse final de semana eu tentei fazer de várias maneiras diferentes uma chamada com mais de uma ação por vez, mas parece que realmente cada chamada só recebe uma ação. Agora o fato de ter ido apenas 3 ou 4 ações a mais para você, pode ter sido o fato de ter alguma ação no meio da sua lista que não está contemplada nessa API. Por não ser uma API nacional, ela tem uma abrangência menor das ações do Brasil. Você pode ver qual ação estaria dando erro na terceira etapa (se não me engano) do Power Query, que na sua lista de ações mostra quem gera erro na etapa anterior a expansão das tabelas