Ajuste Diario do Ibovespa

 

Olá pessoal,

 

eu gostaria de saber se há alguma forma de obter o ajuste diário  do Ibovespa através do MQL5?

 

Abraço.

Evandro Teixeira.

 
Evandro Teixeira:

Olá pessoal, 

eu gostaria de saber se há alguma forma de obter o ajuste diário  do Ibovespa através do MQL5?

Abraço.

Evandro Teixeira.

Olá Evandro Teixeira,

De forma nativa, até onde me consta, infelizmente não.

Entretanto já vi alguns programadores emulando a metodologia de cálculo da BM&F Bovespa para antecipar o valor do ajuste via código.

Abraços,
Malacarne

 
Rodrigo Malacarne:

Olá Evandro Teixeira,

De forma nativa, até onde me consta, infelizmente não.

Entretanto já vi alguns programadores emulando a metodologia de cálculo da BM&F Bovespa para antecipar o valor do ajuste via código.

Abraços,
Malacarne

Olá Malacarne,

 esse cálculo eu achei bem complicado mas parece que o MQL5 tem uma função que deveria retornar esse valor, porém devido a um bug ou limitação da corretora (acredito mais nessa opção) o valor é sempre zero.

 SymbolInfoDouble(_Symbol,SYMBOL_SESSION_PRICE_SETTLEMENT)

Até um tempo atrás eu também conseguia puxar o valor do VWAP com SYMBOL_SESSION_AW porém agora só retorna o valor zero.

Abraço. 

 

Olá, procurei esta mesma informação e não consegui encontrar então usei a função WebRequest para consultar diretamente no site da B3...funcionou legal...após a consulta coloquei uma linha horizontal no gráfico com o valor do ajuste atual. Assim chamando a função com o índice e o vencimento... consultaAjuste("IND","J19");


void consultaAjuste(string indiceBusca,string vencimento){


string url="http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Ajustes1.asp";

string cookie=NULL,reference=NULL;

string headers;

int timeout=5000;

char post[];

char conteudo[];

int acesso;


   ResetLastError();

   acesso=WebRequest("GET",url,cookie,reference,timeout,post,0,conteudo,headers);

   if(acesso)Print("Sucesso");else Print("Falha");

   

   int size=ArraySize(conteudo);

   string concatena=NULL;

   

   for(int i=0;i<size;i++){

   

   concatena+=CharToString(conteudo[i]);

   

     

   }

   

   int indexInicio=StringFind(concatena,indiceBusca,0);

   int index01=StringFind(concatena,vencimento,indexInicio);

   int index02=StringFind(concatena,"right",index01);

   int index03=StringFind(concatena,"right",index02+7);

   

   string extraidoAnterior=StringSubstr(concatena,index02,100);

   string extraidoAtual=StringSubstr(concatena,index03,100);

   

   string ajusteAnterior=StringSubstr(extraidoAnterior,7,6);

   string ajusteAtual=StringSubstr(extraidoAtual,7,6);

   

   StringReplace(ajusteAnterior,".","");

   StringReplace(ajusteAtual,".","");

   

   double ajusteAnteriorDouble=StringToDouble(ajusteAnterior);

   double ajusteAtualDouble=StringToDouble(ajusteAtual);

      

   Print("Ajuste anterior: ",ajusteAnteriorDouble,"  Ajuste atual: ",ajusteAtualDouble);

   

   ObjectCreate(0,"AjusteAtual",OBJ_HLINE,0,0,ajusteAtualDouble);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_WIDTH,2);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_COLOR,clrBlack);

   

   

   }

Ajustes relativos ao Pregão
  • www2.bmf.com.br
(*) O PREÇO ANTERIOR JÁ ESTÁ CORRIGIDO PELA TAXA CETIP PARA DI1; PELA DIFERENÇA ENTRE TAXA CETIP E VARIAÇÃO DO DÓLAR PARA DDI; PELA DIFERENÇA ENTRE TAXA CETIP E VARIAÇÃO DO IGP-M; PARA DDM; PELA DIFERENÇA ENTRE TAXA CETIP E VARIAÇÃO DO...
 
valterblande:

Olá, procurei esta mesma informação e não consegui encontrar então usei a função WebRequest para consultar diretamente no site da B3...funcionou legal...após a consulta coloquei uma linha horizontal no gráfico com o valor do ajuste atual. Assim chamando a função com o índice e o vencimento... consultaAjuste("IND","J19");

   


Excelente ideia! Parabéns e obrigado por compartilhar o código!

 
valterblande:

Olá, procurei esta mesma informação e não consegui encontrar então usei a função WebRequest para consultar diretamente no site da B3...funcionou legal...após a consulta coloquei uma linha horizontal no gráfico com o valor do ajuste atual. Assim chamando a função com o índice e o vencimento... consultaAjuste("IND","J19");


Muito bom mesmo! Percebi que além do ajuste atual, é possível implementar ajustes anteriores, uma vez que a página Ajustes1.asp, pode receber na requisição a variável de data (ex: Ajustes1.asp?txtData=13/05/2019)... Logo que me sobrar um tempo, ainda vou trabalhar nisso. Por hora, obrigado e parabéns!

 
valterblande:

Olá, procurei esta mesma informação e não consegui encontrar então usei a função WebRequest para consultar diretamente no site da B3...funcionou legal...após a consulta coloquei uma linha horizontal no gráfico com o valor do ajuste atual. Assim chamando a função com o índice e o vencimento... consultaAjuste("IND","J19");


void consultaAjuste(string indiceBusca,string vencimento){


string url="http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Ajustes1.asp";

string cookie=NULL,reference=NULL;

string headers;

int timeout=5000;

char post[];

char conteudo[];

int acesso;


   ResetLastError();

   acesso=WebRequest("GET",url,cookie,reference,timeout,post,0,conteudo,headers);

   if(acesso)Print("Sucesso");else Print("Falha");

   

   int size=ArraySize(conteudo);

   string concatena=NULL;

   

   for(int i=0;i<size;i++){

   

   concatena+=CharToString(conteudo[i]);

   

     

   }

   

   int indexInicio=StringFind(concatena,indiceBusca,0);

   int index01=StringFind(concatena,vencimento,indexInicio);

   int index02=StringFind(concatena,"right",index01);

   int index03=StringFind(concatena,"right",index02+7);

   

   string extraidoAnterior=StringSubstr(concatena,index02,100);

   string extraidoAtual=StringSubstr(concatena,index03,100);

   

   string ajusteAnterior=StringSubstr(extraidoAnterior,7,6);

   string ajusteAtual=StringSubstr(extraidoAtual,7,6);

   

   StringReplace(ajusteAnterior,".","");

   StringReplace(ajusteAtual,".","");

   

   double ajusteAnteriorDouble=StringToDouble(ajusteAnterior);

   double ajusteAtualDouble=StringToDouble(ajusteAtual);

      

   Print("Ajuste anterior: ",ajusteAnteriorDouble,"  Ajuste atual: ",ajusteAtualDouble);

   

   ObjectCreate(0,"AjusteAtual",OBJ_HLINE,0,0,ajusteAtualDouble);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_WIDTH,2);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_COLOR,clrBlack);

   

   

   }

Olá amigos,

alguém sabe se tem o webservice para pegar as Ptax 1, 2, 3, 4 e final ?

 
Cláudio Müller:

Olá amigos,

alguém sabe se tem o webservice para pegar as Ptax 1, 2, 3, 4 e final ?

Olá Claudio, eu utilizo https://ptax.bcb.gov.br/ptax_internet/consultaBoletim.do?method=consultarBoletim&DATAINI="+dataini+"&DATAFIM=----------------------&ChkMoeda=61&RadOpcao=3.

onde dataini é a data que deseja.
 

Prezados,


Desculpem minha ignorância, mas esse código abaixo eu incorporo no metatrader 5 de que forma? Abro o MetaEditor, novo Script, e colo ele para compilar?


Sou novo no assunto, mas fiz exatamente isso (metaeditor > novo > script > colei o código abaixo e compilei) e deu o erro ao compilar:

'consultaAjuste' - function declarations are allowed on global, namespace or class scope only


Ai estou na dúvida sobre o que fiz de errado. Alguém pode me dar um norte, por favor?


Agradecido!



valterblande:

Olá, procurei esta mesma informação e não consegui encontrar então usei a função WebRequest para consultar diretamente no site da B3...funcionou legal...após a consulta coloquei uma linha horizontal no gráfico com o valor do ajuste atual. Assim chamando a função com o índice e o vencimento... consultaAjuste("IND","J19");


void consultaAjuste(string indiceBusca,string vencimento){


string url="http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Ajustes1.asp";

string cookie=NULL,reference=NULL;

string headers;

int timeout=5000;

char post[];

char conteudo[];

int acesso;


   ResetLastError();

   acesso=WebRequest("GET",url,cookie,reference,timeout,post,0,conteudo,headers);

   if(acesso)Print("Sucesso");else Print("Falha");

   

   int size=ArraySize(conteudo);

   string concatena=NULL;

   

   for(int i=0;i<size;i++){

   

   concatena+=CharToString(conteudo[i]);

   

     

   }

   

   int indexInicio=StringFind(concatena,indiceBusca,0);

   int index01=StringFind(concatena,vencimento,indexInicio);

   int index02=StringFind(concatena,"right",index01);

   int index03=StringFind(concatena,"right",index02+7);

   

   string extraidoAnterior=StringSubstr(concatena,index02,100);

   string extraidoAtual=StringSubstr(concatena,index03,100);

   

   string ajusteAnterior=StringSubstr(extraidoAnterior,7,6);

   string ajusteAtual=StringSubstr(extraidoAtual,7,6);

   

   StringReplace(ajusteAnterior,".","");

   StringReplace(ajusteAtual,".","");

   

   double ajusteAnteriorDouble=StringToDouble(ajusteAnterior);

   double ajusteAtualDouble=StringToDouble(ajusteAtual);

      

   Print("Ajuste anterior: ",ajusteAnteriorDouble,"  Ajuste atual: ",ajusteAtualDouble);

   

   ObjectCreate(0,"AjusteAtual",OBJ_HLINE,0,0,ajusteAtualDouble);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_WIDTH,2);

   ObjectSetInteger(0,"AjusteAtual",OBJPROP_COLOR,clrBlack);

   

   

   }

 

Boa noite, Muito bom esse conteúdo. Acabei usando tanto o ajusto como ptax. 


Estou precisando agora pegar uma informação que é a quantidade de contratos de gringos no dolar. 


Ate achei a informação em --->   http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-tipo-de-participante-ptBR.asp


mas nao consegui colocar a data retroativa diretamente no endereço pra fazer a busca e alimentar um BD. Alguem poderia dar uma luz ?


Obrigado !!!


Adiel 

 
edilsonbigaton:

Prezados,


Desculpem minha ignorância, mas esse código abaixo eu incorporo no metatrader 5 de que forma? Abro o MetaEditor, novo Script, e colo ele para compilar?


Sou novo no assunto, mas fiz exatamente isso (metaeditor > novo > script > colei o código abaixo e compilei) e deu o erro ao compilar:

'consultaAjuste' - function declarations are allowed on global, namespace or class scope only


Ai estou na dúvida sobre o que fiz de errado. Alguém pode me dar um norte, por favor?


Agradecido!




Boa noite. 

Voce abre como falou acima. Script e cola o codigo. 

Verifica se vc colou o codigo abaixo da ultima chave que fecha a função OnStart()


E dentro da função OnStart()   voce chama a função que vc colou com   -->>       consultaAjuste("DOL","X19");

Razão: