Cara, cotação em tempo real intradia é uma coisa, e a cotação na abertura e fechamento do dia é outra. Você até encontra gratuitamente séries de abertura e fechamento do dia. Tem o Yahoo Finance, o próprio Google que dá para pegar isso em uma planilha do Google Sheets e muitas outras fontes, incluindo a própria CVM. Agora dados intradia são caros. Uma vez entrei em contato com fornecedores para pegar dados de ativos de renda variável intradia, dos últimos cinco anos, e o preço é o de um automóvel. Então esquece conseguir isso fácil de graça.
As corretoras, para conseguir esses dados, devem ter algum esquema de colocation onde eles têm a máquina na B3, ou acessam alguma API paga da B3 só para as corretoras. Isso com certeza é muito caro e está fora do alcance de pessoas físicas. Eu entrei em contato já com a B3 para ir atrás desses dados, mas eles não dão acesso a isso diretamente para pessoas físicas, eles sempre me mandaram para os "fornecedores" que cobram o olho da cara por estes dados. Como chuto que você deve estar pensando em criar um robô trader, e eu já tentei fazer isso, eu creio que o melhor caminho para você é: 1) utilizar uma plataforma paga de robôs que já vai te dar o acesso a esse sinal 2) utilizar o MetaTrader e coletar você mesmo os dados, a cada 5 minutos.
A segunda solução é a melhor porque você consegue coletar os dados você mesmo, em tempo real, e salva como quiser. Eu já fiz isso com sucesso e é totalmente possível e é gratuito. No meu caso particular eu usei o MetaTrader 4, rodando via wine no Linux e coletando os dados no meu próprio PC, sem instalar em um servidor. Utilizei a corretora XP Investimentos. Você tem que instalar o Metatrader na sua máquina, autorizar o acesso na sua corretora, e aí assim que entra no MetaTrader ele começa a pegar o sinal dos ativos que você selecionar. Aí você tem que fazer um script (MQT4/MQT5) para coletar e salvar as cotações a cada 5 minutos e salva em CSV em um diretório. Você consegue depois fazer a ingestão em um banco de dados. O mais robusto é você utilizar o Windows Server (ou linux e tenar virtualizar o Windows e etc), e deixar tudo configurado para fazer a coleta automaticamente. Deixa uns meses lá e você já terá os dados para ir treinando seus modelos.
Dá trabalho, mas é totalmente possível e eu já testei isso com sucesso. Mas lembre-se que a latência é alta e para botar um robô operando assim dá um trabalhinho. Mas, se você quiser implementar seus próprios modelos na linguagem que você quiser não tem muito jeito, tem que fazer algo assim.