Dostęp do danych handlowych:   SymbolSelect()

Funkcja bool SymbolSelect() wybiera instrument finansowy w oknie "Rynek" (MarketWatch) lub usuwa go z tego okna. Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

Skrypt do umieszczenia GOLD i NoSymbol w oknie "Rynek" i usunięcia USDCHF.

#property strict
void OnStart()
  {
//--- umieścić GOLD w oknie Rynek
   bool switchOn_GOLD = SymbolSelect("GOLD", true);
//---
   if(switchOn_GOLD == true)
      Print("Udało się umieścić GOLD w oknie Rynek.");
   else
      Print("Nie udało się umieścić GOLD w oknie Rynek!",
      " Błąd = ",GetLastError());

//--- umieścić NoSymbol w oknie Rynek
   bool switchOn_NoSymbol = SymbolSelect("NoSymbol", true);
//---
   if(switchOn_NoSymbol == true)
      Print("Udało się umieścić NoSymbol w oknie Rynek.");
   else
      Print("Nie udało się umieścić NoSymbol w oknie Rynek!",
      " Błąd = ",GetLastError());

//--- usunąć USDCHF z okna Rynek
   bool switchOff_USDCHF = SymbolSelect("USDCHF", false);
//---
   if(switchOff_USDCHF == true)
      Print("Udało się usunąć USDCHF z okna Rynek.");
   else
      Print("Nie udało się usunąć USDCHF z okna Rynek.",
      " Błąd = ",GetLastError());
  }

Na rys. 1 widoczne jest okno "Rynek" bez GOLD i NoSymbol, ale z USDCHF jeszcze przed uruchomieniem powyższego skryptu. Na rys. 2, po uruchomieniu skryptu, w oknie "Rynek" pojawi się GOLD, zostanie usunięty USDCHF, a w logach terminala będzie m.in. informacją o błędzie umieszczenia NoSymbol (4220).

Rys. 1. Przykład stosowania funkcji SymbolSelect(). Okno "Rynek" przed uruchomieniem skryptu.

Rys. 2. Przykład stosowania funkcji SymbolSelect(). Okno "Rynek" po uruchomieniu skryptu.

W praktyce funkcja SymbolSelect() sprawdza obecność lub brak instrumentu finansowego w oknie "Rynek". Jeśli zostanie podjęta próba umieszczenia instrumentu, który i tak tam znajduje się, to nie zostanie on tam umieszczony po raz drugi, a funkcja zwróci true. W przypadku proby usunięcia instrumentu, którego nie ma w oknie "Rynek", funkcja również zwróci true.

Za pomocą tej funkcji nie można usunąć taki instrument finansowy, dla którego jest otwarte okno notowań. Instrument można usunąć dopiero po 10 minutach po zamknięciu okna notowań lub od momentu ostatniego zwrócenia się do historii tego instrumentu, tj. od momentu ostatniego wywołania funkcji typu iOpen() , CopyTime() itd.

W przypadku jeśli trzeba uzyskać dane dla instrumentu finansowego za pomocą funkcji typu timeseries, taki instrument należy wcześniej umieścić w oknie "Rynek" (MarketWatch).