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

MQL5 / Transakcja

DEAL_REASON

Powód, dla którego transakcja powstała. To jedyny wiarygodny sposób, żeby odróżnić zamknięcie przez stop lossa od

long HistoryDealGetInteger(ulong bilet, DEAL_REASON);

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

Wartości od DEAL_REASON_CLIENT po DEAL_REASON_SPLIT, w tym _EXPERT, _SL, _TP, _SO, _ROLLOVER i _VMARGIN.

Dlaczego to nie jest oczywiste

To jedyny wiarygodny sposób, żeby odróżnić zamknięcie przez stop lossa od zamknięcia przez własny kod. Porównywanie ceny zamknięcia z zapamiętanym poziomem stopa nie działa: przy luce cenowej pozycja zamyka się w zupełnie innym miejscu, a przy poślizgu — o kilka punktów obok.

Warto znać też DEAL_REASON_SO: to zamknięcie przymusowe przy przekroczeniu poziomu stop out. Jeśli pojawia się w historii, żadna analiza strategii nie ma sensu, dopóki nie zostanie naprawione zarządzanie wielkością pozycji.

Kod

DEAL_REASON
long powod = HistoryDealGetInteger(bilet, DEAL_REASON);

switch((int)powod)
  {
   case DEAL_REASON_SL: Print("zamkniete przez stop lossa"); break;
   case DEAL_REASON_TP: Print("zamkniete przez take profit"); break;
   case DEAL_REASON_SO: Print("zamkniecie przymusowe: stop out"); break;
   case DEAL_REASON_EXPERT: Print("zamkniete przez eksperta"); break;
   default: Print("inne zrodlo");
  }

Powiązane