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
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;