POSITION_REASON
Źródło, z którego pozycja została otwarta. To jest drugi, niezależny sposób odróżnienia własnych pozycji od cudzych —
long PositionGetInteger(POSITION_REASON);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Pięć wartości: POSITION_REASON_CLIENT (terminal), _MOBILE, _WEB, _EXPERT i _SL lub _TP dla pozycji powstałych z aktywacji zlecenia.
Dlaczego to nie jest oczywiste
To jest drugi, niezależny sposób odróżnienia własnych pozycji od cudzych — obok numeru magicznego. Przydaje się dokładnie tam, gdzie numer magiczny zawodzi: przy pozycjach otwartych ręcznie przez użytkownika, które mają numer równy zeru, czyli taki sam jak ekspert z niewypełnionym polem.
Ekspert zarządzający wyłącznie własnymi pozycjami powinien sprawdzać oba warunki. Sam numer magiczny nie wystarcza, jeśli jest zerem.
Kod
if(!PositionSelectByTicket(bilet))
return;
long zrodlo = PositionGetInteger(POSITION_REASON);
long magic = PositionGetInteger(POSITION_MAGIC);
bool nasza = (zrodlo == POSITION_REASON_EXPERT && magic == (long)Magic);
if(!nasza)
{
PrintFormat("pozycja %I64u nie jest nasza (zrodlo %d, magic %I64d)",
bilet, (int)zrodlo, magic);
return;
}