Bars

Retourne le nombre de barres dans l'historique pour le symbole et la période spécifiés. Il existe 2 variantes d'appel à la fonction.

Demande toutes les barres de l'historique

int  Bars(
   string           symbol_name,     // nom du symbole
   ENUM_TIMEFRAMES  timeframe        // période
   );

Demande les barres de l'historique pour l'intervalle de temps donné

int  Bars(
   string           symbol_name,     // nom du symbole
   ENUM_TIMEFRAMES  timeframe,       // période
   datetime         start_time,      // date et heure de début
   datetime         stop_time        // date et heure de fin
   );

Parameters

symbol_name

[in]  Nom du symbole.

timeframe

[in]  Période.

start_time

[in]  Heure de la barre correspondant au premier élément.

stop_time

[in]  Heure de la barre correspondant au dernier élément.

Valeur de Retour

Si les paramètres start_time et stop_time sont définis, la fonction retourne le nombre de barres dans l'intervalle spécifié, sinon elle retourne le nombre total de barres.

Note

Si les données des timeseries avec les paramètres spécifiés ne sont pas formés dans le terminal au moment de l'appel à la fonction Bars(), ou que les données des timeseries ne sont pas synchronisées avec le serveur de trades au moment de l'appel à la fonction, la fonction retourne 0.

Lors de la demande du nombre de barre dans un intervalle de temps spécifié, seules sont considérées les barres dont l'heure d'ouverture est dans l'intervalle. Par exemple, si le jour courant de la semaine est un samedi et que la requête est faite pour le nombre de barres W1 avec start_time=Last_Tuesday et stop_time=Last_Friday, la fonction retournera 0, puisque l'heure d'ouverture de la période W1 est toujours le dimanche et qu'aucune barre W1 ne tombe dans l'intervalle spécifié.

Exemple d'appel pour obtenir le nombre total de barres dans l'historique :

   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("Nombre de barres dans l'historique du terminal pour le symbole et la période à ce moment = ",bars);
     }
   else  // aucune barre n'est disponible
     {
      //--- les données du symbole ne sont peut être pas synchronisées avec les données du serveur
      bool synchronized=false;
      //--- compteur de boucle
      int attempts=0;
      // effectue 5 tentatives pour attendre la synchronisation
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- synchronisation terminée, sortie
            synchronized=true;
            break;
           }
         //--- augmente le compteur
         attempts++;
         //--- attends 10 millisecondes jusqu'à la prochaine itération
         Sleep(10);
        }
      //--- sort de la boucle après la synchronisation
      if(synchronized)
        {
         Print("Nombre de barres dans l'historique du terminal pour le symbole et la période à ce moment = ",bars);
         Print("La première date dans l'historique du terminal pour le symbole et la période à ce moment = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("La première date dans l'historique pour le symbole sur le serveur = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- la synchronisation des données ne s'est pas produite
      else
        {
         Print("Echec de l'obtention du nombre de barres pour ",_Symbol);
        }
     }

Exemple d'appel pour obtenir le nombre de barres dans l'intervalle spécifié :

   int n;
   datetime date1 = D'2016.09.02 23:55'// Vendredi
   datetime date2 = D'2016.09.05 00:00'// Lundi
   datetime date3 = D'2016.09.08 00:00'// Jeudi
   //---
   n=Bars(_Symbol,PERIOD_H1,D'2016.09.02 02:05',D'2016.09.02 10:55');
   Print("Nombre de barres : ",n); // Sortie : "Nombre de barres : 8", la barre H2 est prise en compte dans le calcul, alors que H11 ne l'est pas
   n=Bars(_Symbol,PERIOD_D1,date1,date2);
   Print("Nombre de barres : ",n); // Sortie : "Nombre de barres : 1", puisque l'heure d'ouverture d'une barre D1 (lundi) tombe dans l'intervalle
   n=Bars(_Symbol,PERIOD_W1,date2,date3);
   Print("Nombre de barres : ",n); // Sortie : "Nombre de barres : 0", puisqu'aucune heure d'ouverture d'une barre W1 ne tombe dans l'intervalle spécifié

Voir aussi

Fonctions de Gestion d'Evènement