Bars

Retorna o número de barras no histórico para um ativo e período específicos. Existe 2 variantes de chamada da função.

Solicita todas as barras do histórico

int  Bars(
   string           symbol_name,     // nome do ativo
   ENUM_TIMEFRAMES  timeframe        // período
   );

Solicita as barras do histórico no intervalo de tempo selecionado

int  Bars(
   string           symbol_name,     // nome do ativo
   ENUM_TIMEFRAMES  timeframe,       // período
   datetime         start_time,      // data e hora de início
   datetime         stop_time        // data e hora de término
   );

Parâmetros

symbol_name

[in]  Nome do ativo.

timeframe

[in]  Período.

start_time

[in]  Hora da barra correspondente ao primeiro elemento.

stop_time

[in]  Hora da barra correspondente ao último elemento.

Valor do Retorno

Se os parâmetros start_time e stop_time estiverem definidos, a função retorna o número de barras no intervalo de tempo especificado, caso contrário retorna o número total de barras.

Observação

Se os dados para a série de tempo com parâmetros especificados não estiverem formados no terminal na hora que a função Bars() for chamada, ou dados da série de tempo não estiverem sincronizados com um servidor de negociação no momento da chamada da função, a função retorna o valor zero.

Ao solicitar o número de barras, no intervalo estabelecido de datas, são levados em conta apenas as barras cujo tempo de abertura está dentro desse intervalo. Por exemplo, se o dia da semana é sábado, ao pedir o número de barras semanais indicando start_time=última_terça_feira e stop_time=última_sexta_feira, a função retorna 0, pois, por um lado, o tempo de abertura no timeframe semanal sempre coincide com um domingo e, por outro, não há nenhuma barra semanal que fique dentro do intervalo estabelecido.

Exemplo de solicitação do número de todas as barras no histórico:

   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("Number of bars in the terminal history for the symbol-period at the moment = ",bars);
     }
   else  //sem barras disponíveis
     {
      //--- dados sobre o ativo podem não estar sincronizados com os dados no servidor
      bool synchronized=false;
      //--- contador de loop
      int attempts=0;
      // faz 5 tentativas de espera por sincronização
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- sincronização feita, sair
            synchronized=true;
            break;
           }
         //--- aumentar o contador
         attempts++;
         //--- espera 10 milissegundos até a próxima iteração
         Sleep(10);
        }
      //--- sair do loop após sincronização
      if(synchronized)
        {
         Print("Number of bars in the terminal history for the symbol-period at the moment = ",bars);
         Print("The first date in the terminal history for the symbol-period at the moment = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("The first date in the history for the symbol on the server = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- sincronização dos dados não aconteceu
      else
        {
         Print("Failed to get number of bars for ",_Symbol);
        }
     }

Exemplo de solicitação do número de barras no intervalo estabelecido:

   int n;
   datetime date1 = D'2016.09.02 23:55'// sexta-feira
   datetime date2 = D'2016.09.05 00:00'// segunda-feira
   datetime date3 = D'2016.09.08 00:00'// quinta-feira
   //---
   n=Bars(_Symbol,PERIOD_H1,D'2016.09.02 02:05',D'2016.09.02 10:55');
   Print("Número de barras: ",n); // Mostra "Número de barras: 8", na contagem levará em conta a barra de 2 horas, enquanto a barra de 11 horas será excluída
   n=Bars(_Symbol,PERIOD_D1,date1,date2);
   Print("Número de barras: ",n); // Mostra "Número de barras: 1", pois o tempo de abertura de apenas uma barra diária - segunda-feira - entrou no intervalo
   n=Bars(_Symbol,PERIOD_W1,date2,date3);
   Print("Número de barras: ",n); // Mostra "Número de barras: 0", pois o tempo de abertura de nenhuma barra semanal entrou no intervalo estabelecido

Veja Também

Funções de Processamento de Eventos