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

MQL5 / Pozycja

POSITION_MAGIC

Numer magiczny eksperta, który otworzył pozycję. Pozycja otwarta ręcznie ma numer magiczny równy zeru — a zero jest też

long PositionGetInteger(POSITION_MAGIC);

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

Liczba doklejona do zlecenia w chwili otwarcia, służąca do rozpoznania własnych pozycji wśród cudzych.

Dlaczego to nie jest oczywiste

Pozycja otwarta ręcznie ma numer magiczny równy zeru — a zero jest też wartością domyślną niewypełnionego pola w zapytaniu. Ekspert z numerem pozostawionym na zerze uzna więc wszystkie ręczne pozycje użytkownika za swoje i zacznie nimi zarządzać. Przy trailing stopie oznacza to przesuwanie stopów na pozycjach, których nigdy nie otwierał.

Druga rzecz: funkcja zwraca long, a numer w parametrach eksperta zwykle jest typu ulong. Porównanie bez rzutowania daje ostrzeżenie, a przy dużych numerach — nieprawidłowy wynik.

Kod

POSITION_MAGIC
if(!PositionSelectByTicket(bilet))
   return;

//--- rzutowanie jawne, bo funkcja zwraca long, a parametr jest ulong
if(PositionGetInteger(POSITION_MAGIC) != (long)Magic)
   return;

//--- sam numer nie wystarcza: filtrujemy takze po instrumencie
if(PositionGetString(POSITION_SYMBOL) != _Symbol)
   return;

Powiązane