Bem pessoal estamos aqui novamente nesse post mostrando como consultar a bolsa de valores ou melhor uma avito na bolsa de valores “Bovespa” com PHP, quem acompanha “consulta” este blog já deve ter visto um post mostrando como fazer a consulta a principal diferença entre o anterior e esse, é que nessa consulta não é utilizada serviços de terceiros e sim uma consulta direto na Bovespa, no artigo anterior foi mostrado como consultar um serviço criado por mim que consultava o Infomoney, que provavelmente consultava a bolsa de valores, mas pelos comentários daquele post então resolvi mostrar como faz uma consulta direto.
Então abaixo existe uma classe bastante intuitiva para usar basta carrega a classe e invocar o método estático find pronto sua consulta já foi feita.
<?php
/** Este programa é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opnião) qualquer versão.
*
* @author Theoziran Lima<theoziran@gmail.com>
* http://blog.theoziran.com.br/2009/12/15/consulta-bolsa-de-valores-direto-na-bovespa-com-php/
*
**/
class CotacaoBovespaException extends Exception {
}
class CotacaoBovespa {
const URL = "http://www.bmfbovespa.com.br/cotacoes2000/formCotacoesMobile.asp";
private $_codigo;
private $_descricao;
private $_ibovespa;
private $_delay;
private $_data;
private $_hora;
private $_oscilacao;
private $_ultimoValor;
private $_quatidadeNegoc;
private $_mercado;
public function __get($var) {
$var = "_".$var;
return $this->$var;
}
public static function find($codigo) {
$content = self::connect($codigo);
if($content) {
$xml = simplexml_load_string($content);
if(!$xml->NUMERO_DO_ERRO) {
$obj = new CotacaoBovespa();
$obj->codigo = $xml->PAPEL["CODIGO"];
$obj->descricao = $xml->PAPEL["DESCRICAO"];
$obj->ibovespa = $xml->PAPEL["IBOVESPA"];
$obj->delay = $xml->PAPEL["DELAY"];
$obj->data = $xml->PAPEL["DATA"];
$obj->hora = $xml->PAPEL["HORA"];
$obj->oscilacao =$xml->PAPEL["OSCILACAO"];
$obj->ultimoValor = $xml->PAPEL["VALOR_ULTIMO"];
$obj->quantidadeNegoc = $xml->PAPEL["QUANT_NEG"];
$obj->mercado = $xml->PAPEL["MERCADO"];
return $obj;
}else throw new CotacaoBovespaException("Código não encontrado");
}else throw new CotacaoBovespaException("Não houve resposta do servidor");
}
private static function connect($codigo) {
return file_get_contents(self::URL."?codsocemi=".$codigo);
}
}
//Consulta um ativo da Petrobrás
CotacaoBovespa::find("petr4");
?>
10 Responses to “Consulta bolsa de valores direto na Bovespa com PHP”
Olá Theoziran,
Tentei utilizar o código porém o objeto voltou vazio. Ao que tudo indica funcionou porque ao consultar um ativo inexistente, o programa me retorna a mensagem de erro, porém ao consultar um código de um ativo existente, como o citado “petr4″, o programa não acusa erro, porém o objeto retorna vazio.
Você sabe se só é possível a consulta na hora que o pregão está operando?
Leandro.
Theoziran,
Tá tudo funcionando ok, eu que estava cometendo um equivoco com relação ao retorno da função.
Muito bom o post, Parabéns.
Leandro.
Perfeito, simples e funcional
Parabéns
Oi desculpem, eu sou meio novo com PHP, eu programo em C++ e uso classes, mas não to conseguindo pegar o retorno da função numa variável pra imprimir ai, eu coloquei a classe em um php separado e dei um include, ai faço $cotacao = CotacaoBovespa::find(“petr4″); mas não consigo imprimir, como eu tenho q usar???
Valeu ai gente!
Ótimo post!
Anderson, tudo bem?
Seguinte, esse método estático retorna um objeto do tipo CotacaoBovespa que você pode acessar as variáveis privadas invocando os métodos gets
$cotacao = CotacaoBovespa::find(“petr4?);
$cotacao->oscilacao;
Todas propriedades privadas pode ser acessada dessa forma porque está usando um método mágico
http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members
Valeu cara, muito bom o site!!!
eu não tava mesmo entendendo pra q servia esse método get hheheheheh
eu só comecei a aprender php a 1 mes
abraço!!!
Estou começando no PHP e gostaria de pegar cotações da bovespa. Testei seu código mas não tá retornando os valores, não fiz nenhuma modificação no código. Como devo fzr para mostrar qualquer uma das variáveis da função. Devo colocar um ECHO $variável? Grato!!
Pra mostra algum valor usa-se o echo mesmo, tem um getting started no php.net seria bom pra você que está começando.
Olá Theoziran, tudo bem?
parabéns pelo post. Você tem algum código q faça uma consulta na bovespa enviando o dia, o ativo, e o script retornando preço de abertura, fechamento, máximo e mínima do ativo? Agradeceria mto se tivesse algo assim.
Estou montando um projeto grande sobre bovespa e tenho dificuldade em fazer isso. Obrigado.
Oi Filipe, tudo bem?
Seguinte nesse blog mostra duas formas de consultar e uma delas consulta direto da Bovespa, acredito que esse serviço que consulta direto delay menor, então pra ter esses dados você teria que implementar um sistema para ficar coletando esses dados, então sua primeira coleta seria tua cotação de abertura da mesma forma a última coleta seria o último valor do dia, esses webservices não te fornecem essas informações elas teriam que ser tratadas pelo “consumidor” do webservice.