Профит последнего открытого ордера в пунктах
Профит или убыток последнего открытого ордера (который еще в рынке и не закрыт) в пунктах можно узнать с помощью нижеприведенной mql4-функции.
Здесь:
- Sy — символ;
- op — тип ордера OP_BUY или OP_SELL;
- mn — магик.
double ProfitPointLastOrder(string sy,int op,int mn)
{
datetime t;
double ocp,osl;
int dg,i,j=-1,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=="")
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(t<OrderOpenTime())
{
t=OrderOpenTime();
j=i;
}
}
}
}
}
}
//+——————————————————————+
//| |
//+——————————————————————+
if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
{
double pr=0;
double p=MarketInfo(OrderSymbol(),MODE_POINT);
if(p==0) if(StringFind(OrderSymbol(),"JPY")<0) p=0.0001; else p=0.01;
if(OrderType()==OP_BUY)
{
pr+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/p;
}
if(OrderType()==OP_SELL)
{
pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/p;
}
return(pr);
}
return(-1);
}