Dostęp do danych historycznych:   SeriesInfoInteger()

Funkcja long SeriesInfoInteger() / bool SeriesInfoInteger() zwraca informację o stanie danych historycznych. Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

Skrypt do wyświetlenia ilości świec SERIES_BARS_COUNT dla bieżącego instrumentu finansowego _Symbol i bieżącego przedziału czasowego PERIOD_CURRENT .

#property strict
void OnStart()
  {
//---
   string                   symbolName = _Symbol;           // bieżący instrument finansowy
   ENUM_TIMEFRAMES          timeFrame  = PERIOD_CURRENT;    // bieżący przedział czasowy
   ENUM_SERIES_INFO_INTEGER propertyId = SERIES_BARS_COUNT; // identyfikator właściwości

//--- znaleźć ilość świec
   long result = SeriesInfoInteger(symbolName, timeFrame, propertyId);

//--- wyświetlić wynik
   Print("Dla bieżącego symbolu i timeframe-u jest ",result," świec.");
  }

Rys. 1. Przykład stosowania funkcji SeriesInfoInteger().


Przykład 2

Skrypt do wyświetlenia ilości świec, czasu otwarcia pierwszej świecy, czasu otwarcia ostatniej świecy i pierwszej daty w historii na serwerze dla GBPUSD i H1.

#property strict
void OnStart()
  {
//--- znaleźć ilość świec
   long     barsCount       = SeriesInfoInteger("GBPUSD", PERIOD_H1, SERIES_BARS_COUNT);
//--- znaleźć czas otwarcia pierwszej świecy
   datetime FirstDate       = (datetime)SeriesInfoInteger("GBPUSD", PERIOD_H1, SERIES_FIRSTDATE);
//--- znaleźć czas otwarcia ostatniej świecy
   datetime LastBarDate     = (datetime)SeriesInfoInteger("GBPUSD", PERIOD_H1, SERIES_LASTBAR_DATE);
//--- znaleźć pierwszą datę w historii na serwerze niezależnie od timeframe-u
   datetime serverFirstDate = (datetime)SeriesInfoInteger("GBPUSD", PERIOD_H1, SERIES_SERVER_FIRSTDATE);

//--- wyświetlić wynik
   Print("Dla GBPUSD, H1 jest ",barsCount," świec.");
   Print("Dla GBPUSD, H1 czas otwarcia pierwszej świecy = ",FirstDate);
   Print("Dla GBPUSD, H1 czas otwarcia ostatniej świecy = ",LastBarDate);
   Print("Dla GBPUSD, H1 pierwsza data w historii na serwerze = ",serverFirstDate);
  }

Rys. 2. Przykłady stosowania funkcji SeriesInfoInteger().


Przykład 3

Drugi wariant tej funkcji pozwala sprawdzić czy można zastosować wybraną właściwość i czy wartość została zapisana w zmiennej, zapisanej na miejscu 4 argumentu funkcji. Jeśli operacja się powiedzie funkcja zwróci true, jesli nie to false. Poniższy skrypt sprawdza czy do zmiennej longVar udało się zapisać ilość świec dla GBPUSD i H1.

#property strict
void OnStart()
  {
//--- zmienna, w której zostanie zapisany wynik
   long longVar;

//--- zapisać wynik operacji: true albo false
   bool isSucceed = SeriesInfoInteger("GBPUSD", PERIOD_H1, SERIES_BARS_COUNT, longVar);

//--- sprawdzić czy operacja się powiodła
   if(isSucceed == true)
     {
      Print("Operacja SeriesInfoInteger() powiodła się.");
      Print("Dla GBPUSD, H1 jest ",longVar," świec.");
     }
   else
     {
      Print("Operacja SeriesInfoInteger() nie powiodła się.");
      return;
     }
  }

Rys. 3. Przykład stosowania funkcji SeriesInfoInteger().