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

MQL5 / Pozycja

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

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

Powiązane