Dostęp do danych handlowych:   SymbolInfoInteger()

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:

  • zwrócenie wartości,
  • zwrócenie true lub false w zależności od wykonanej operacji.

Zwrócenie wartości


Przykład 1

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().


Zwrócenie true lub false w zależności od wykonanej operacji


Przykład 2

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.