Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Instrument

SYMBOL_VISIBLE

Czy instrument jest widoczny na liście w oknie Rynek. Widoczność i wybranie to dwie różne rzeczy, choć nazwy sugerują inaczej.

long SymbolInfoInteger(string symbol, SYMBOL_VISIBLE);

1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.

Symbol może być wybrany do obserwacji, a mimo to ukryty na liście — na przykład gdy używa go otwarta pozycja albo wykres.

Dlaczego to nie jest oczywiste

Widoczność i wybranie to dwie różne rzeczy, choć nazwy sugerują inaczej. SYMBOL_SELECT mówi, czy terminal pobiera dla instrumentu dane. SYMBOL_VISIBLE mówi tylko, czy widać go na liście.

Terminal potrafi sam wybrać instrument bez pokazywania go: dzieje się tak, gdy otwierasz na nim pozycję albo wykres. Próba usunięcia takiego symbolu przez SymbolSelect(symbol, false) zwróci fałsz — i to nie jest błąd, tylko ochrona przed utratą danych o otwartej pozycji.

Kod

SYMBOL_VISIBLE
bool wybrany = (bool)SymbolInfoInteger(symbol, SYMBOL_SELECT);
bool widoczny = (bool)SymbolInfoInteger(symbol, SYMBOL_VISIBLE);

if(wybrany && !widoczny)
   PrintFormat("%s jest obserwowany, ale ukryty na liscie "
               "- zapewne uzywa go pozycja albo wykres", symbol);

Powiązane