Bars

Restituisce il numero di barre contate nello storico di un simbolo e periodo specificati. Ci sono 2 varianti di chiamate funzioni.

Richiedi tutte le barre dello storico

int  Bars(
   string           symbol_name,     // nome simbolo
   ENUM_TIMEFRAMES  timeframe        // periodo
   );

Richiede le barre dello storico per l'intervallo di tempo selezionato

int  Bars(
   string           symbol_name,     // nome simbolo
   ENUM_TIMEFRAMES  timeframe,       // periodo
   datetime         start_time,      // data e tempo di inizio
   datetime         stop_time        // data ed ora di fine
   );

Parametri

symbol_name

[in] Nome del Simbolo.

timeframe

[in] Periodo.

start_time

[in] Orario barra corrispondente al primo elemento.

stop_time

[in]  Orario barra corrispondente all'ultimo elemento.

Valore restituito

Se i parametri start_time e stop_time sono definiti, la funzione restituisce il numero di barre nell'intervallo di tempo specificato, in caso contrario restituisce il numero totale di barre.

Nota

Se i dati per le timeseries con parametri specificati non sono formati nel terminale al momento della chiamata di funzione Bars(), o i dati delle timeseries non sono sincronizzati con un trade server al momento della chiamata di funzione, la funzione restituisce un valore pari a zero.

Quando si richiede il numero di barre in un intervallo di tempo specificato, solo le barre con un tempo aperto che rientrano nell'intervallo vengono considerate. Ad esempio, se l'attuale giorno della settimana è Sabato e la richiesta è fatta per il numero di W1 barre con start_time=last_tuesday e stop_time=last_friday, la funzione restituirà 0 poiché il tempo di apertura di un lasso di tempo W1 è sempre Domenica e non una singola barra W1 rientra nell'intervallo specificato.

Richiesta di esempio per il numero di tutte le barre dello storico:

   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("Numero di barre nello storico del terminale per il simbolo-periodo al momento= ",bars);
     }
   else  //non ci sono barre disponibili
     {
      //--- i dati sul simbolo possono non essere sincronizzati con i dati sul server
      bool synchronized=false;
      //--- contatore del ciclo
      int attempts=0;
      // fa 5 tentativi di attesa per la sincronizzazione
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- sincronizzazione eseguita, uscita
            synchronized=true;
            break;
           }
         //--- incrementa il contatore
         attempts++;
         //--- attende 10 millisecondi fino alla prossima iterazione
         Sleep(10);
        }
      //--- esce dal loop dopo la sincronizzazione
      if(synchronized)
        {
         Print("Numero di barre nello storico del terminale per il simbolo-periodo, al momento = ",bars);
         Print("La prima data nello storico del terminale per il simbolo-periodo al momento = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("La prima data nello storico per il simbolo sul server = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- la sincronizzazione dei dati non è avvenuta
      else
        {
         Print("Fallimento nell'ottenere il numero di barre per ",_Symbol);
        }
     }

Richiesta di campione per il numero di barre nell'intervallo specificato:

   int n;
   datetime date1 = D'2016.09.02 23:55'// Friday
   datetime date2 = D'2016.09.05 00:00'// Monday
   datetime date3 = D'2016.09.08 00:00'// Thursday
   //---
   n=Bars(_Symbol,PERIOD_H1,D'2016.09.02 02:05',D'2016.09.02 10:55');
   Print("Numero di barre: ",n); // Output: "Numero di barre: 8", la barra H2 è considerata per il calcolo, mentre quella H11 non lo è
   n=Bars(_Symbol,PERIOD_D1,date1,date2);
   Print("Numero di barre: ",n); // Output: "Numero di barre: 1", giacchè una barra aperta di una singola barra D1(Monday) cade dentro l'intervallo
   n=Bars(_Symbol,PERIOD_W1,date2,date3);
   Print("Numero di barre: ",n); // Output: "Numero di barre: 0", giacchè nemmeno una singolo tempo aperto di barra W1 cade nell'intervallo

Vedi anche

Funzioni di elaborazione di Eventi