Чт. Ноя 21st, 2024

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

Глобальные переменные:

double profit_buys=0, profit_sells=0;

Функция:

//+------------------------------------------------------------------+
 //| Calculate profit points positions                  |
 //+-----------------------------------------------------------------+
 void CalculateProfitPointsPositions()
   {
    profit_buys=0;
    profit_sells=0;
    double p=0;
    for(int i=PositionsTotal()-1; i>=0; i--)
      {
       if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         {
          if(m_position.Symbol()==_Symbol && m_position.Magic()==Magic)
            {
             p=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
             if(p==0)
               {
                if(StringFind(_Symbol, "JPY")<0)
                   p=0.0001;
                else
                   p=0.01;
               }
             if(m_position.PositionType()==POSITION_TYPE_BUY)
                profit_buys+=(SymbolInfoDouble(_Symbol,SYMBOL_BID)-m_position.PriceOpen())/p;
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                profit_sells+=(m_position.PriceOpen()-SymbolInfoDouble(_Symbol,SYMBOL_ASK))/p;
            }
         }
      }
    return;
   }

Вызов функции:

CalculateProfitPointsPositions();

Пункты профита открытых позиций будут находиться в переменных profit_buys и profit_sells.

от drivermql

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

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.