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

MQL5 / Transakcja

DEAL_MAGIC

Numer magiczny eksperta, którego zlecenie dało tę transakcję. Transakcje wygenerowane przez serwer — zamknięcie przez stop lossa, take

long HistoryDealGetInteger(ulong bilet, DEAL_MAGIC);

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

Numer dziedziczony ze zlecenia. Pozwala policzyć wynik konkretnej strategii wśród transakcji całego rachunku.

Dlaczego to nie jest oczywiste

Transakcje wygenerowane przez serwer — zamknięcie przez stop lossa, take profit albo stop out — dziedziczą numer magiczny pozycji. To dobrze: raport strategii obejmuje również wyjścia, których ekspert nie zlecał świadomie.

Gorzej z operacjami bilansowymi: mają numer zero, tak samo jak transakcje ręczne i jak ekspert z niewypełnionym polem. Filtr po numerze magicznym równym zeru zbiera wtedy wpłatę, wypłatę i wszystko, co użytkownik zrobił ręcznie.

Kod

DEAL_MAGIC
//--- wynik jednej strategii, z pominieciem wpisow niehandlowych
double WynikStrategii(const ulong magic, const int dni)
  {
   if(!HistorySelect(TimeCurrent() - dni * 86400, TimeCurrent()))
      return 0.0;

   double suma = 0.0;

   for(int i = 0; i < HistoryDealsTotal(); i++)
     {
      ulong t = HistoryDealGetTicket(i);
      if(t == 0)
         continue;

      long typ = HistoryDealGetInteger(t, DEAL_TYPE);
      if(typ != DEAL_TYPE_BUY && typ != DEAL_TYPE_SELL)
         continue;
      if(HistoryDealGetInteger(t, DEAL_MAGIC) != (long)magic)
         continue;

      suma += HistoryDealGetDouble(t, DEAL_PROFIT)
            + HistoryDealGetDouble(t, DEAL_COMMISSION)
            + HistoryDealGetDouble(t, DEAL_SWAP);
     }

   return suma;
  }

Powiązane