Como recurerar os papeis com maior alta e maior baixa do dia do IBOV?

 

Senhores, tentei com a função abaixo recuperar a maior alta  e a maior baixa do dia, porém além de demorar demais para carregar o histórico (atrasando o backtest) ainda está retornando alguns papeis errados.

Não fiz ainda, mas já pensei até em fazer um script pegando os valores de um site como https://economia.uol.com.br/cotacoes/bolsas/ e salvando em um arquivo para o EA ir lá e recuperar esses papéis.

Alguém teria uma ideia melhor de como fazer isso?

const string SYMBOLS[] = {"ABEV3","AZUL4","B3SA3","BBAS3","BBDC3","BBDC4","BBSE3","BPAC11","BRAP4","BRDT3","BRFS3","BRKM5","BRML3","BTOW3","CCRO3","CIEL3","CMIG4","COGN3","CRFB3","CSAN3","CSNA3","CVCB3","CYRE3","ECOR3","EGIE3","ELET3","ELET6","EMBR3","ENBR3","EQTL3","FLRY3","GGBR4","GNDI3","GOAU4","GOLL4","HAPV3","HGTX3","HYPE3","IGTA3","IRBR3","ITSA4","ITUB4","JBSS3","KLBN11","LAME4","LREN3","MGLU3","MRFG3","MRVE3","MULT3","NTCO3","PCAR3","PETR3","PETR4","QUAL3","RADL3","RAIL3","RENT3","SANB11","SBSP3","SMLS3","SULA11","SUZB3","TAEE11","TIMP3","TOTS3","UGPA3","USIM5","VALE3","VIVT4","VVAR3","WEGE3","YDUQ3"};

struct VariacoesDoDia{
   string maior_alta;
   string maior_baixa;
};

VariacoesDoDia VerificarVariacoesDoDia(){

   string symbol_maior_alta;
   string symbol_maior_baixa;
   double porc_maior_alta = 0;
   double porc_maior_baixa = 0;
   double porcentagem;
   
   int len = ArraySize(SYMBOLS);
   
   //for ( int i = 0 ; i < SymbolsTotal(false) ; i++) {
   for ( int i = 0 ; i < len ; i++) {
   
      //string symbol = SymbolName(i, false);
      string symbol = SYMBOLS[i];

      double fechamento = iClose(symbol, PERIOD_D1, 1);
      double bid = SymbolInfoDouble(symbol, SYMBOL_BID);
      
      if(fechamento==0) continue;
      
      if(fechamento>bid){
         //movimento de baixa
         porcentagem = (1-(bid/fechamento))*100;
         
         if(porc_maior_baixa == 0){
         
            porc_maior_baixa = porcentagem;
            symbol_maior_baixa = symbol;
            
         } else if(porcentagem>porc_maior_baixa){
         
            porc_maior_baixa = porcentagem;
            symbol_maior_baixa = symbol;
         }
         
      } else {
         //movimento de alta
         porcentagem = ((bid/fechamento)-1)*100;
         
         if(porc_maior_alta == 0){
         
            porc_maior_alta = porcentagem;
            symbol_maior_alta = symbol;
            
         } else if(porcentagem>porc_maior_baixa){
         
            porc_maior_alta = porcentagem;
            symbol_maior_alta = symbol;
         }
         
      }   
     
   } 
   
   VariacoesDoDia variacoes;
   variacoes.maior_alta = symbol_maior_alta;
   variacoes.maior_baixa = symbol_maior_baixa;  
   
   Print("alta: ", symbol_maior_alta, "baixa: ", symbol_maior_baixa);
   
   return variacoes;
}
UOL Economia
UOL Economia
  • economia.uol.com.br
Veja a cotação do dia: Dólar, Euro, outras moedas, BM&F Bovespa, outras bolsas de valores, ações e índices econômicos. Veja também o conversor de moedas