Categorias

Informações do Mercado Financeiro em Tempo Real

ultima atualização: 23/02/2008

Com esta classe é possível resgatar os principais indicadores do mercado financeiro em tempo real (online).

A fonte utilizada para os dados é o site www.cma.com.br. Por esta razão as informações a veracidade das infomações são de responsabilidade do mesmo.

As informações do mercado disponíveis neste código são:

Indicadores (BOLSAS):
– Bovespa
– Dow Jones
– Nasdaq
– Merval
– Londres
– Paris
– Tóquio
– Frankfurt
Indicadores (MOEDAS):
– Dólar Comercial
– Dólar Médio Venda
– Dólar Paralelo
– Dólar Turismo
– Euro x Dólar
– Euro x Real
– Dólar Futuro
Indicadores (RISCO):
– Risco Brasil

IMPORTANTE: Pode ocorrer mudanças no site que serve de fonte para a extração dos dados isso acarretará em erro no código.

<%
'=======================================================
'CLASSE DOS INDICADORES FINANCEIROS
'=======================================================
Class IndicadoresFinanceiros
	'-----------------------------------------------------
	'Funcao: getIndicadoresFinanceiros()
	'Sinopse: Retorna Lista de Indicadores Financeiros
	'		  Indicadores (BOLSAS):
	'			- Bovespa (ID: BOVESPA)
	'			- Dow Jones (ID: DOWJONES)
	'			- Nasdaq (ID: NASDAQ)
	'			- Merval (ID: MERVAL)
	'			- Londres (ID: LONDRES)
	'			- Paris (ID: PARIS)
	'			- Tóquio (ID: TOQUIO)
	'			- Frankfurt (ID: FRANKFURT)
	'		  Indicadores (MOEDAS):
	'			- Dólar Comercial (ID: DOLARCOMERCIAL)
	'			- Dólar Médio Venda (ID: DOLARMEDIOVENDA)
	'			- Dólar Paralelo (ID: DOLARPARALELO)
	'			- Dólar Turismo (ID: DOLARTURISMO)
	'			- Euro x Dólar (ID: EURODOLAR)
	'			- Euro x Real (ID: EUROREAL)
	'			- Dólar Futuro (ID: DOLARFUTURO)
	'		  Indicadores (RISCO):
	'			- Risco Brasil (ID: RISCOBRASIL)
	'Retorno: Coleção (Scripting.Dictionary)
	'Autor: Gabriel Fróes - www.codigofonte.com.br
	'Ultima Atualização: 23 / 02 / 2008
	'-----------------------------------------------------
	Function getIndicadoresFinanceiros()
		'Declaração das variáveis/objetos
	    Dim Retorno
	    Dim URL
	    Dim posInicio
	    Dim posFim
	    Dim htmlInicioPadrao
	    Dim htmlFimPadrao
	    Dim htmlInicio
	    Dim htmlFim
	    Dim Indicador
	    Dim Nome
	    Dim Valor
	    Dim Percentual
	    Dim Hora
	    Dim Data
	    Dim objXmlHttp
	    Dim objColecao
	    'Inicialização dos objetos/variáveis
	    Set objXmlHttp	= Server.CreateObject("MSXML2.XMLHTTP")
	    Set objColecao	= Server.CreateObject("Scripting.Dictionary")
	    htmlInicioPadrao= "align=right class=""conteudo"">"
	    htmlFimPadrao	= ""
	    posInicio		= 1
	    posFim			= 1
	    'Consulta ao site com os indicadores
	    URL = "https://www.cma.com.br/mercadofinanceiro.asp"
		objXMLHttp.Open "GET", URL, False
		objXMLHttp.Send
		Retorno	= BinaryToString(objXmlHttp.ResponseBody)
		Set objXmlHttp	= Nothing
	    'Cortando a String para trabalhar com uma variável menor
	    htmlInicio	= "Bovespa"
	    htmlFim		= "
" posInicio = Instr(1, Retorno, htmlInicio) posFim = Instr(posInicio, Retorno, htmlFim) Retorno = Mid(Retorno, posInicio, posFim - posInicio) posInicio = 1 'B O V E S P A htmlInicio = "Bovespa" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "BOVESPA" Nome = "Bovespa" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'D O W J O N E S htmlInicio = "Dow Jones" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "DOWJONES" Nome = "Dow Jones" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'N A S D A Q htmlInicio = "Nasdaq" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "NASDAQ" Nome = "Nasdaq" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'M E R V A L htmlInicio = "Merval" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "MERVAL" Nome = "Merval" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'L O N D R E S htmlInicio = "Londres" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "LONDRES" Nome = "Londres" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'P A R I S htmlInicio = "Paris" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "PARIS" Nome = "Paris" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'T O Q U I O htmlInicio = "Frankfurt" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "FRANKFURT" Nome = "Frankfurt" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'D O L A R C O M E R C I A L htmlInicio = "Brasil" htmlFim = "" posInicio = Instr(1, Retorno, htmlInicio) Indicador = "RISCOBRASIL" Nome = "Risco Brasil" htmlInicio = htmlInicioPadrao htmlFim = htmlFimPadrao Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno) Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data)) 'Retornando a função Set getIndicadoresFinanceiros = objColecao End Function '----------------------------------------------------- 'Funcao: cutIndicador(ByVal htmlInicio, ByVal htmlFim, ByRef posInicio, ByVal Texto) 'Sinopse: Retorna Lista de Indicadores Financeiros 'Parâmetros: ' htmlInicio: String inicio para o corte ' htmlFim: String fim para o corte ' posInicio: Posição início para o corte ' Texto: Texto que será cortado 'Retorno: String 'Autor: Gabriel Fróes - www.codigofonte.com.br '----------------------------------------------------- Private Function cutIndicador(ByVal htmlInicio, ByVal htmlFim, ByRef posInicio, ByVal Texto) posInicio = Instr(posInicio, Texto, htmlInicio) + Len(htmlInicio) posFim = Instr(posInicio, Texto, htmlFim) cutIndicador= Mid(Texto, posInicio, posFim - posInicio) End Function '----------------------------------------------------- 'Funcao: addIndicador(ByVal Nome, ByRef Valor, ByVal Percentual, ByVal Hora, ByVal Data) 'Sinopse: Gera um novo objeto Indicador 'Parâmetros: ' Nome ' Valor ' Percentual ' Hora ' Data 'Retorno: Indicador 'Autor: Gabriel Fróes - www.codigofonte.com.br '----------------------------------------------------- Private Function addIndicador(ByVal Nome, ByRef Valor, ByVal Percentual, ByVal Hora, ByVal Data) Set addIndicador = New Indicador addIndicador.Nome = Nome addIndicador.Valor = Valor addIndicador.Percentual = Percentual addIndicador.Hora = Hora addIndicador.Data = Data End Function Private Function BinaryToString(xBinary) Dim Binary Dim RS, LBinary If VarType(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary Const adLongVarChar = 201 Set RS = CreateObject("ADODB.Recordset") LBinary = LenB(Binary) If LBinary>0 Then RS.Fields.Append "mBinary", adLongVarChar, LBinary RS.Open RS.AddNew RS("mBinary").AppendChunk Binary RS.Update BinaryToString = RS("mBinary") Else BinaryToString = "" End If Set RS = Nothing End Function Private Function MultiByteToBinary(MultiByte) Dim RS, LMultiByte, Binary Const adLongVarBinary = 205 Set RS = CreateObject("ADODB.Recordset") LMultiByte = LenB(MultiByte) If LMultiByte>0 Then RS.Fields.Append "mBinary", adLongVarBinary, LMultiByte RS.Open RS.AddNew RS("mBinary").AppendChunk MultiByte & ChrB(0) RS.Update Binary = RS("mBinary").GetChunk(LMultiByte) End If Set RS = Nothing MultiByteToBinary = Binary End Function End Class '----------------------------------------------------- 'Classe com os Atributos do Indicador Financeiro '----------------------------------------------------- Class Indicador Public Nome Public Valor Public Percentual Public Hora Public Data End Class '----------------------------------------------------- 'EXEMPLO DE CHAMADA '----------------------------------------------------- Dim objIndFin Dim objCol Set objIndFin = New IndicadoresFinanceiros Set objCol = Server.CreateObject("Scripting.Dictionary") 'Pegando os indicadores financeiros Set objCol = objIndFin.getIndicadoresFinanceiros() Response.Write "Indice: " & objCol("RISCOBRASIL").Nome & "
" Response.Write "Valor: " & objCol("RISCOBRASIL").Valor & "
" Response.Write "
" Response.Write "Indice: " & objCol("DOLARFUTURO").Nome & "
" Response.Write "Valor: " & objCol("DOLARFUTURO").Valor & "
" Set objCol = Nothing Set objIndFin = Nothing %>