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

MQL5 / Pozycja

POSITION_SYMBOL

Instrument, na którym otwarta jest pozycja. Porównanie z `_Symbol` jest poprawne tylko wtedy, gdy ekspert pracuje

string PositionGetString(POSITION_SYMBOL);

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

Pełna nazwa instrumentu, dokładnie taka, jaka widnieje w oknie Rynek.

Dlaczego to nie jest oczywiste

Porównanie z _Symbol jest poprawne tylko wtedy, gdy ekspert pracuje wyłącznie na instrumencie własnego wykresu. W kodzie wielosymbolowym ten warunek po cichu odrzuca wszystko, co dotyczy pozostałych instrumentów.

Do tego dochodzą przyrostki brokera: ta sama para bywa nazwana EURUSD, EURUSD.m albo EURUSDpro. Porównywanie z nazwą wpisaną na sztywno działa u jednego brokera i milczy u drugiego. Sposób na wyznaczenie przyrostka opisaliśmy przy SYMBOL_PATH.

Kod

POSITION_SYMBOL
//--- zliczamy pozycje osobno dla kazdego instrumentu
for(int i = PositionsTotal() - 1; i >= 0; i--)
  {
   ulong bilet = PositionGetTicket(i);
   if(bilet == 0 || !PositionSelectByTicket(bilet))
      continue;

   string symbol = PositionGetString(POSITION_SYMBOL);
   double wolumen = PositionGetDouble(POSITION_VOLUME);

   PrintFormat("%s: %.2f lota, wynik %.2f",
               symbol, wolumen, PositionGetDouble(POSITION_PROFIT));
  }

Powiązane