Funkcje własne:   IsPositionOpenedCurrentBar()

Funkcja bool IsPositionOpenedCurrentBar() sprawdza czy na bieżącej świecy była otwarta pozycji. Sprawdza zarówno pozycje zamknięte jak i jeszcze obecne na rynku. Ma następujące argumenty:

f_timeFrame - przedział czasowy. W przypadku PERIOD_CURRENT funkcja będzie analizować ten wykres notowań, gdzie program MQL4 zostanie uruchomiony.
f_symbol - nazwa instrumentu finansowego. W przypadku _Symbol funkcja będzie analizować ten wykres notowań, gdzie program MQL4 zostanie uruchomiony.
f_cmd - typ pozycji. Wartość domyślna = -1, tj. wszystkie pozycje typu OP_BUY i OP_SELL .
f_magic - identyfikator (magic number). Wartość domyślna = -1, tj. wszystkie otwarte pozycje.

f_timeFrame - przedział czasowy. W przypadku PERIOD_CURRENT funkcja będzie analizować ten wykres notowań, gdzie program MQL4 zostanie uruchomiony

f_symbol - nazwa instrumentu finansowego. W przypadku _Symbol funkcja będzie analizować ten wykres notowań, gdzie program MQL4 zostanie uruchomiony.

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

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

bool IsPositionOpenedCurrentBar(ENUM_TIMEFRAMES f_timeFrame=PERIOD_CURRENT, // przedział czasowy
                                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 false;
//---
   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(OrderOpenTime()>=iTime(f_symbol,f_timeFrame,0))
               return true;
//---
   for(int j=OrdersTotal()-1; j>=0; j--)
      if(OrderSelect(j,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()>=iTime(f_symbol,f_timeFrame,0))
               return true;
//---
   return false;
  }

Przykłady stosowania funkcji

1) Sprawdzić czy została otwarta pozycja na bieżącej świecy D1 dla EURUSD, na sprzedaż i z identyfikatorem 12345:

IsPositionOpenedCurrentBar(PERIOD_D1, "EURUSD", OP_SELL, 12345);

2) Sprawdzić czy została otwarta pozycja na bieżącej świecy M30 dla EURUSD, dowolnego typu i z identyfikatorem 12345:

IsPositionOpenedCurrentBar(PERIOD_M30, "EURUSD", -1, 12345);

3) Sprawdzić czy została otwarta pozycja na bieżącej świecy tego wykresu notowań, gdzie program MQL4 został uruchomiony, dla dowolnego instrumentu finansowego, na kupno i z dowolnym identyfikatorem:

IsPositionOpenedCurrentBar(PERIOD_CURRENT, "", OP_BUY);

4) Sprawdzić czy została otwarta pozycja na bieżącej świecy tego wykresu notowań, gdzie program MQL4 został uruchomiony, dla dowolnego instrumentu finansowego, dowolnego typu i z dowolnym identyfikatorem:

IsPositionOpenedCurrentBar();