Funkcja long SeriesInfoInteger() / bool SeriesInfoInteger() zwraca informację o stanie danych historycznych. Więcej informacji można znaleźć w specyfikacji MQL4.
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().
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().
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().