Funkcje własne:   HowManyPositions()

Funkcja uint HowManyPositions() zwraca ilość otwartych pozycji. Ma następujące argumenty:

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja obliczy ilość otwartych 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_openTime - czas, po którym pozycje zostały otwarte. Wartość domyślna = 0, tj. wszystkie pozycje.

f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja obliczy ilość otwartych 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_openTime - czas, po którym pozycje zostały otwarte. Wartość domyślna = 0, tj. wszystkie pozycje.

uint HowManyPositions(string   f_symbol="",  // instrument finansowy
                      int      f_cmd=-1,     // typ pozycji
                      int      f_magic=-1,   // identyfikator
                      datetime f_openTime=0) // czas, po którym otwarto pozycje
  {
   uint f_total=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)  &&
            (f_openTime<=OrderOpenTime() || f_openTime==0))
            f_total++;
        }
//---
   return f_total;
  }

Przykłady stosowania funkcji

1) Policzyć ilość wszystkich otwartych pozycji:

HowManyPositions();

2) Policzyć ilość wszystkich pozycji dla bieżącego instrumentu finansowego:

HowManyPositions(_Symbol);

3) Policzyć ilość pozycji dla wszystkich instrumentów finansowych na kupno:

HowManyPositions("", OP_BUY);

4) Policzyć ilość pozycji dla EURUSD, na sprzedaż i z identyfikatorem 12345:

HowManyPositions("EURUSD", OP_SELL, 12345);

5) Policzyć ilość wszystkich pozycji otwartych po 1 grudniu 2016 r. po 00:00:

HowManyPositions("", -1, -1, D'2016.12.01 00:00');