Функция для mql4 возвращает суммарную потенциальную прибыль открытых позиций в валюте депозита.
//+----------------------------------------------------------------------------+
//| Описание : Возвращает суммарную потенциальную прибыль |
//| открытых позиций в валюте депозита. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
double GetPotentialLossInCurrency(string sy="", int op=-1, int mn=-1)
{
double pl=0;
double po, tv; // Пункт, спрэд и стоимость пункта
int i, k=OrdersTotal();
if(sy=="0")
sy=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn))
{
if((OrderType()==OP_BUY || OrderType()==OP_SELL) && (op<0 || OrderType()==op))
{
if(OrderTakeProfit()>0)
{
po=MarketInfo(OrderSymbol(), MODE_POINT);
if(po==0)
Print("В обзоре рынка отсутствует символ "+OrderSymbol()+". Точность расчётов не гарантируется!");
else
{
tv=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
if(OrderType()==OP_BUY)
{
pl+=(OrderTakeProfit()-OrderOpenPrice())/po*OrderLots()*tv;
}
if(OrderType()==OP_SELL)
{
pl+=(OrderOpenPrice()-OrderTakeProfit())/po*OrderLots()*tv;
}
pl+=OrderCommission()+OrderSwap();
}
}
else
{
pl=AccountBalance();
break;
}
}
}
}
}
return(pl);
}