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

Imagem

é 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.

Quando eu subi a primeira versão, foi no plano free do [render](https://dashboard.render.com/) e eu configurava cron jobs no frontend para fazer um HTTP POST no backend sempre no horário de fazer a busca, no caso as 2 da amanhã e funcionava, mas uma opção mais segura que também deu certo é na heroku usando plano basic mesmo, a questão é que como lá é by usage eu tive que melhorar e muito o código para não usar tanto os dynos, no fim a conta chegava sempre quase no limite(20$/ 22$).

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!

Antes de tudo eu gostaria de agradecer o tempo que dedicou para escrever isso, são ótimos pontos e eu espero esclarecer todos. > 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. Eu tenho noção disso, conseguir pegar o preço em tempo real parece uma tarefa bem difícil, eu tinha pesquisado como obter para ser uma feature no frela mas sem sucesso. No entanto, diferente da brapi, eu não pretendo fornecer o preço da ação, eu pretendo oferecer a recomendação das instituições financeiras citadas, vamos pegar de exemplo a ALUP11, cada uma das 6 instituições(XP, Inter, Safra, etc.) dão um preço-alvo e uma recomendação, inclusive eu acredito que no própio [frontend](https://ck-scrape-stocks.vercel.app/dashboard/stocks/alup11) tem um link que abre a fonte de cada informação. --- > 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. Então foi por isso que eu não achei nada sobre isso, eu não sabia disso mas faz sentido agora, obrigado pelo conhecimento. Felizmente eu não pretendo usar nenhum serviço diretamente da B3, a meta não é buscar o preço, mas sim o preço-alvo que os grandes banco oferecem. --- > 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). Eu adorei essa ideia mesmo e no futuro eu realmente pretendo fazer algo assim, já trabalhei fazendo isso mas era em um projeto que o "dono" parecia ser muito novo na área e não soube administrar por isso cancelamos, mas eu lembro de fazer muitas fórmulas no backend como Celling Price, Fair Price, Benjamin Graham, e eu não lembro o nome de mais nenhuma kkkk, mas seriam esse tipo de indicadores? --- > 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. Outra feat interessantíssima, ele poderia comparar e ainda com acesso as fórmulas, parece muito bom, mais uma vez obrigado pela sugestão. --- Eu não sou muito bom ainda escrevendo esse tipo de coisa então não sei se deu pra entender tudo perfeitamente, mas as ideias foram muito boas e eu com certeza pretendo trazer tudo por aqui. Vlw mesmo