Funkcje własne:   PositionLastOpenedProfit()

Funkcja double PositionLastOpenedProfit() zwraca bieżący zysk/stratę ostatniej otwartej pozycji. Ma następujące argumenty:

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja zwróci bieżący zysk/stratę 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 otwarte pozycje.

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja zwróci bieżący zysk/stratę 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 otwarte pozycje.

Jeśli żądana pozycja nie istnieje, funkcja zwróci wartość stałej DBL_MAX , tj. 1.7976931348623158e+308.

double PositionLastOpenedProfit(string f_symbol="", // instrument finansowy
                                int    f_cmd=-1,    // typ pozycji
                                int    f_magic=-1)  // identyfikator
  {
   if(f_cmd==OP_BUYLIMIT || f_cmd==OP_SELLLIMIT ||
      f_cmd==OP_BUYSTOP  || f_cmd==OP_SELLSTOP)
      return DBL_MAX;
//---
   datetime f_timeOpen=0;
   double   f_profit=DBL_MAX;
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if((f_symbol==OrderSymbol()      || f_symbol=="") &&
            (f_cmd   ==OrderType()        || f_cmd==-1)    &&
            (f_magic ==OrderMagicNumber() || f_magic==-1))
            if(OrderOpenTime()>f_timeOpen)
              {
               f_timeOpen=OrderOpenTime();
               f_profit=OrderProfit();
              }
   return f_profit;
  }

Przykłady stosowania funkcji

1) Znaleźć bieżący zysk/stratę ostatniej otwartej pozycji dla EURUSD, na sprzedaż i z identyfikatorem 12345:

PositionLastOpenedProfit("EURUSD", OP_SELL, 12345);

2) Znaleźć bieżący zysk/stratę ostatniej otwartej pozycji dla EURUSD, dowolnego typu i identyfikatorem 12345:

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

3) Znaleźć bieżący zysk/stratę ostatniej otwartej pozycji dla EURUSD, dowolnego typu i z dowolnym identyfikatorem:

PositionLastOpenedProfit("EURUSD");

4) Znaleźć bieżący zysk/stratę ostatniej otwartej pozycji wśród wszystkich instrumentów finansowych, dowolnego typu i identyfikatorem 12345:

PositionLastOpenedProfit("", -1, 12345);

5) Znaleźć bieżący zysk/stratę ostatniej otwartej pozycji wśród wszystkich instrumentów finansowych, dowolnego typu i z dowolnym identyfikatorem:

PositionLastOpenedProfit();