Профит открытых позиций в пунктах

Функция возвращает профит всех открытых позиций в пунктах.

Параметры:

_order_type — операция (-1 — любая позиция)
_magic — MagicNumber (-1 — любой магик)

 

//+----------------------------------------------------------------------------+
//|  Description:  суммарный профит открытых позиций в пунктах                 |
//+----------------------------------------------------------------------------+
//|  Parameters:                                                               |
//|    _order_type - операция          (-1   - любая позиция)                  |
//|    _magic - MagicNumber            (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int ProfitPips(int _order_type=-1, int _magic=-1) 
{
  double _point;
  int    i, _ototal = OrdersTotal(), _profit=0;

  for (i = 0; i < _ototal; i++) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
    {
      if ((OrderSymbol() == Symbol()) && (_order_type < 0 || OrderType() == _order_type)) 
      {
        if (_magic < 0 || OrderMagicNumber() == _magic) 
        {
           _point = MarketInfo(OrderSymbol(), MODE_POINT);
           if (_point == 0) 
           {
              if (StringFind(OrderSymbol(), "JPY") < 0) 
                 _point = 0.0001; 
              else _point = 0.01;
           }   
           if (OrderType() == OP_BUY) 
           {
              _profit += int((MarketInfo(OrderSymbol(), MODE_BID) - OrderOpenPrice())/_point);
           }
           if (OrderType()==OP_SELL) 
           {
              _profit += int((OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK))/_point);
           }
         }
      }
    }
  }
  return(_profit);
}
//+----------------------------------------------------------------------------+

Written by 

Добавить комментарий