Funkcja long / bool SymbolInfoInteger() zwraca odpowiednią właściwość wybranego instrumentu finansowego. Identyfikator właściwości może być jednym z wartości ENUM_SYMBOL_INFO_INTEGER . Więcej informacji można znaleźć w specyfikacji MQL4.
Istnieje 2 warianty funkcji:
Skrypt do wyświetlenia czasu przyjścia ostatniego tick-u SYMBOL_TIME, dokładności notowania ceny w punktach SYMBOL_DIGITS i poziomu zamrożenia zlecenia w punktach SYMBOL_TRADE_FREEZE_LEVEL dla EURUSD. Poziom zamrożenia to odległość od ceny otwarcia oczekującego zlecenia lub otwartej pozycji do bieżącej ceny, kiedy to takie zlecenie/pozycja nie może zostać zmodyfikowane, anulowane lub zamknięte.
#property strict
void OnStart()
{
//--- znaleźć wartości
long time_EURUSD = SymbolInfoInteger("EURUSD", SYMBOL_TIME);
long digits_EURUSD = SymbolInfoInteger("EURUSD", SYMBOL_DIGITS);
long freeze_EURUSD = SymbolInfoInteger("EURUSD", SYMBOL_TRADE_FREEZE_LEVEL);
//--- wyświetlić wyniki
Print("EURUSD: czas przyjścia ostatniego tick-u = ",(datetime)time_EURUSD);
Print("EURUSD: dokładność notowania ceny = ",digits_EURUSD);
Print("EURUSD: ilość punktów zamrożenia = ",freeze_EURUSD);
}
Rys. 1. Przykład stosowania funkcji SymbolInfoInteger().
W odróżnieniu od powyższego przykładu, znalezioną wartość funkcja przypisuje trzeciemu argumentowi i zwraca true jeśli operacja się powiodła lub false jeśli nie. Poniższy skrypt wyświetli czas przyjścia ostatnich tick-ów dla wybranych instrumentów finansowych.
#property strict
void OnStart()
{
//---
long time_EURUSD;
long time_GOLD;
long time_NoSymbol;
//---
if(SymbolInfoInteger("EURUSD", SYMBOL_TIME, time_EURUSD) == true)
Print("EURUSD: czas przyjścia ostatniego tick-u = ",(datetime)time_EURUSD);
else
Print("Nie udało się znaleźć czas tick-u dla EURUSD. Błąd = ",GetLastError());
//---
if(SymbolInfoInteger("GOLD", SYMBOL_TIME, time_GOLD) == true)
Print("GOLD: czas przyjścia ostatniego tick-u = ",(datetime)time_GOLD);
else
Print("Nie udało się znaleźć czas tick-u dla GOLD. Błąd = ",GetLastError());
//---
if(SymbolInfoInteger("NoSymbol", SYMBOL_TIME, time_NoSymbol) == true)
Print("NoSymbol: czas przyjścia ostatniego tick-u = ",(datetime)time_NoSymbol);
else
Print("Nie udało się znaleźć czas tick-u dla NoSymbol. Błąd = ",GetLastError());
}
Rys. 2. Przykład stosowania funkcji SymbolInfoInteger().
Jeśli trzeba uzyskać dane ostatniego tick-u, to lepiej używać funkcję SymbolInfoTick() , ponieważ podczas jednego wywołania tej funkcji od razu można uzyskać wartości Ask, Bid, Last, Volume i Time ostatniego tick-u.