Funkcje własne:   PositionLastClosedBarIndex()

Funkcja int PositionLastClosedBarIndex() zwraca indeks świecy, na której została zamknięta ostatnia pozycja. Ma następujące argumenty:

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

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

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

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

f_tf - przedział czasowy. Wartość domyślna = PERIOD_CURRENT , tj. przedział czasowy tego wykresu notowań, gdzie program MQL4 zostanie uruchomiony.

Jeśli w historii konta nie ma żądanej pozycji, funkcja zwróci -1.

int PositionLastClosedBarIndex(string          f_symbol="",         // instrument finansowy
                               int             f_cmd=-1,            // typ pozycji
                               int             f_magic=-1,          // identyfikator
                               ENUM_TIMEFRAMES f_tf=PERIOD_CURRENT) // przedział czasowy
  {
   if(f_cmd==OP_BUYLIMIT || f_cmd==OP_SELLLIMIT ||
      f_cmd==OP_BUYSTOP  || f_cmd==OP_SELLSTOP)
      return -1;
//---
   datetime f_timeClose=0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
         if((f_symbol==OrderSymbol()      || f_symbol=="") &&
            (f_cmd   ==OrderType()        || f_cmd==-1)    &&
            (f_magic ==OrderMagicNumber() || f_magic==-1))
            if(OrderCloseTime()>f_timeClose)
               f_timeClose=OrderCloseTime();
//---
   if(f_timeClose==0)
      return -1;
   else
      return iBarShift(f_symbol,f_tf,f_timeClose,true);
  }

Przykłady stosowania funkcji

1) Znaleźć indeks świecy, na której została zamknięta ostatnia pozycja dla EURUSD, na sprzedaż, z identyfikatorem 12345 i dla przedziału czasowego H1:

PositionLastClosedBarIndex("EURUSD", OP_SELL, 12345, PERIOD_H1);

2) Znaleźć indeks świecy, na której została zamknięta ostatnia pozycja dla EURUSD, dowolnego typu, z identyfikatorem 12345 i dla przedziału czasowego M15:

PositionLastClosedBarIndex("EURUSD", -1, 12345, PERIOD_M15);

3) Znaleźć indeks świecy, na której została zamknięta ostatnia pozycja dla EURUSD, dowolnego typu, z dowolnym identyfikatorem i dla bieżącego przedziału czasowego:

PositionLastClosedBarIndex("EURUSD");

4) Znaleźć indeks świecy, na której została zamknięta ostatnia pozycja wśród wszystkich instrumentów finansowych, dowolnego typu, z identyfikatorem 12345 i dla bieżącego przedziału czasowego:

PositionLastClosedBarIndex("", -1, 12345);

5) Znaleźć indeks świecy, na której została zamknięta ostatnia pozycja wśród wszystkich instrumentów finansowych, dowolnego typu, z dowolnym identyfikatorem i dla bieżącego przedziału czasowego:

PositionLastClosedBarIndex();