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
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");
}