Funkcje własne:   PositionTicketMaxLoss()

Funkcja int PositionTicketMaxLoss() zwraca ticket otwartej pozycji z maksymalną bieżącą stratą. Uwzględnia się strata, prowizja i swap. Ma następujące argumenty:

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja zwróci ticket pozycji dla instrumentu finansowego tego wykresu notowań, gdzie program MQL4 zostanie uruchomiony.
f_cmd - typ pozycji. Wartość domyślna = -1, tj. wszystkie otwarte pozycje typu OP_BUY i OP_SELL .
f_magic - identyfikator (magic number). Wartość domyślna = -1, tj. wszystkie pozycje.

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja zwróci ticket pozycji dla instrumentu finansowego tego wykresu notowań, gdzie program MQL4 zostanie uruchomiony.

f_cmd - typ pozycji. Wartość domyślna = -1, tj. wszystkie otwarte pozycje typu OP_BUY i OP_SELL .

f_magic - identyfikator (magic number). Wartość domyślna = -1, tj. wszystkie pozycje.

Jeśli żądana pozycja nie istnieje, funkcja zwróci -1.

int PositionTicketMaxLoss(string f_symbol="", // instrument finansowy
                          int    f_cmd=-1,    // typ pozycji
                          int    f_magic=-1)  // identyfikator
  {
   int    f_ticket=-1;
   double f_max=0;
//---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         int f_type=OrderType();
         if(f_type==OP_BUYLIMIT || f_type==OP_SELLLIMIT ||
            f_type==OP_BUYSTOP  || f_type==OP_SELLSTOP)
            continue;
         //---
         if((f_symbol==OrderSymbol()     || f_symbol=="") && 
            (f_cmd==OrderType()          || f_cmd==-1)    && 
            (f_magic==OrderMagicNumber() || f_magic==-1))
           {
            double f_profit=OrderProfit()+OrderCommission()+OrderSwap();
            if(f_profit<f_max)
              {
               f_max=f_profit;
               f_ticket=OrderTicket();
              }
           }
        }
   return f_ticket;
  }

Przykłady stosowania funkcji

1) Znaleźć ticket otwartej pozycji z maksymalną bieżącą stratą dla EURUSD, na sprzedaż i identyfikatorem 12345:

PositionTicketMaxLoss("EURUSD", OP_SELL, 12345);

2) Znaleźć ticket otwartej pozycji z maksymalną bieżącą stratą dla EURUSD, dowolnego typu i identyfikatorem 12345:

PositionTicketMaxLoss("EURUSD", -1, 12345);

3) Znaleźć ticket otwartej pozycji z maksymalną bieżącą stratą dla EURUSD, dowolnego typu i dowolnym identyfikatorem:

PositionTicketMaxLoss("EURUSD");

4) Znaleźć ticket otwartej pozycji z maksymalną bieżącą stratą wśród wszystkich instrumentów finansowych, dowolnego typu i identyfikatorem 12345:

PositionTicketMaxLoss("", -1, 12345);

5) Znaleźć ticket otwartej pozycji z maksymalną bieżącą stratą wśród wszystkich instrumentów finansowych, dowolnego typu i dowolnym identyfikatorem:

PositionTicketMaxLoss();