Criando minha própia Brapi #1
Introdução
Tudo começou comigo aceitando um frela que era: Buscar o preço-alvo de todas as ações da bolsa brasileira em 6 instituições financeiras
- XP
- Inter
- BTG Pactual
- Banco Safra
- Genial Investimentos
- Tranding View
e até ai tudo bem(dizia eu sem saber como faria um troço desses), orcei um preço super justo como qualquer desenvolvedor iniciante que era de 350 conto e fechamos acordo.
No começo foi um completo pesadelo, rodava perfeitamente em localhost mas na hora de subir sempre acontecia erro no docker e puppeteer, em grande parte provavelmente era porque era meu primeiro projeto usando docker e puppeteer. Mas hoje eu ouso dizer que, embora não seja muito, esse projeto é uma das minhas maiores conquistas no ramo de desenvolvimento.
O sistma/software/bot, ainda não sei como eu devo chamar, faz um Web Scraping diariamente nos sites das 6 instituições financeiras citadas anteriormente e me retorna essas informações:
- Preço-alvo
- Recomendação(compra, venda, outperform, etc.)
- Ticker/Ticket(ex.: PETR4, GGBR4, ALUP11)
E a ideia era mostrar as informações no frontend da aplicação, feita em NextJS, dessa forma
é eu sei, tá bem feinho, mas um dia eu melhoro
Proposta
A minha ideia é disponibilizar os dados obtidos diariamente no web-scaping para a comunidade por meio de uma api, eu não pretendo lucrar com isso e nem nada do gênero, meu objetivo é apenas aprender mais e é por isso que eu pretendo começar uma "série" falando minha experiência criando essa API e melhorando o sistema de scraping, já que o código tá bem complicado também.
Eu pretendo criar a API em NestJS, que é uma tecnologia que eu sempre quis aprender mas nunca tive o "incentivo".
A cada feat, fix e bug eu trarei aqui e eu gostaria que vocês me ajudassem dando feedback, dicas de código, conselhos de lógica, sempre estou aberto a sugestões.
Enfim, deixo aqui o link do projeto para quem quiser ir lá e ver com os própios olhos, lembrando que como tem que pagar para hospedar algum app backend, faz algum tempo que os dados não estão atualizados.
PS: Muita gente que eu mostrei o projeto reclamou da ser muito difícil criar uma senha forte, ela exige ter pelo menos 8 dígitos, um caracter especial, letra maiúscula E minúscula, e algum número.
To aqui trabalhando com Web Scraping e Puppeteer, e posso dizer que scraping consome muitos recursos. Você tem idéia de quanto você vai gastar com VPS pra isso rodar? Pergunto, pois você disse que vai deixar isso gratuito.
Amigo não quero ser chato, e espero muito que meu comentario mais te anime do quê desanime... Mas existe alguns detalhes no seu projeto que eu gostaria de apontar..
1 - Nenhuma dessas fontes que você quer usar faz cotação em tempo real. Infelizmente, a B3(nossa unica bolsa de valores, como você deve saber), até onde sei(ja fui investidor por um tempo) não fornece uma "api" publica, gratuita e em tempo real para usar. Ela tem sim um serviço, mas ele é consumido por bancos, empresas de investimento e empresas privadas.
2 - Para usar os serviços da B3 você precisa ser um Big Player(jargão do mercado para gente com MUITA grana, geralmente bancos) e cada requisição, cada mensagem enviada ao sistema gera um valor, um custo de corretagem, por isso o serviço fica para os bancos, pois eles fazem Milhares de requisições de compra/venda a cada hora. O preço pra eles é muito barato(pois fazem muitas), mas para nós sai caro(antes da pandemia girava entre 7, 10 ou mais, a depender do banco ou agencia).
MAAS, é possivel consultar o movimento financeiro das ações com um atraso(se não me engano, de no minimo 15 minutos). 15 minutos de atraso é tempo suficiente para perder uma fortuna ou a herança do seu avô kkkkkk. A maioria das fontes que você citou usam desses serviços, pois são muito baratos ou gratuitos, e servem como fonte de informação atraindo usuarios.
MAS, se me permite fazer algumas sugestões: A B3 disponibiliza o historico de ações(em excel ou csv, sei lá), você poderia fornecer isso! Do ponto de vista do investidor, passamos mais tempo olhando o historico de uma ação/empresa do que operando(lembre-se, operar é caro!). Investidores reais fazem um calculo antes de operar, visando uma margem de lucro(esse lucro tem que cobrir a corretagem ou é perda!) e para fazer isso é preciso comparar o historico com o movimento atual, fazer uma janela de tempo, aplicar indicadores, e etc, etc...
Se você construisse sua API nesse sentido poderia fazer sucesso! Inclusive você poderia já fornecer os indicadores(o básico, são muitos e muito complexo de calcular), mas indicadores envolvem muitas areas(fisica, matematica e por aí vai) e isso deixa o projeto muito complexo e dificil de codar(sem falar que precisaria de um frontend foda pra mostrar os graficos).
Faça um comparativo de ações: Compare os dados de duas ações atraves do tempo. É util para diversificação de carteira e um monte de coisas kkk deixa que o investidor se vire daí em diante.
hmmm não consigo mais pensar em outras coisas, mas tem! dá pra fazer muita coisa baixando os arquivos da B3. De um ponto de vista pratico, acho mais facil tratar os dados dos arquivos e fazer algo, que pega-los das fontes citadas e apenas redistribui-los, pois no fim, é praticamente isso(resultado igual, nivel de esforço diferente).
É isso, sucesso!