Как найти цену открытия последнего ордера?

 

Как найти цену открытия последнего ордера?

Сделал вот так, но при закрытии по close cерии ордеров, то цена выходит первого ордера из этой серии, но не последнего...

Есть ли еще способ определения последнего ордера?

for(int i=0;i<OrdersHistoryTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderCloseTime()!=0){ 
priceOpenHistory = OrderOpenPrice();
}}}
 
Вот функция
//---- Ищет последний ордера и возвращает его цену открытия----//
double Last_OrderOpPr(int type, int mn, string sym)
{
   datetime open_time = 0;
   int ticket;
   for(int i= OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(open_time < OrderOpenTime() && OrderMagicNumber() == mn && type == OrderType() && sym==OrderSymbol())
      {
         open_time = OrderOpenTime();
         ticket = OrderTicket() ;
      }
   }
   if(open_time==0) return(-1);
   if( OrderTicket() != ticket ) OrderSelect( ticket , SELECT_BY_TICKET);
   
   return(OrderOpenPrice());
}
Gun:

Как найти цену открытия последнего ордера?

Сделал вот так, но при закрытии по close cерии ордеров, то цена выходит первого ордера из этой серии, но не последнего...

Есть ли еще способ определения последнего ордера?

 
StatBars:
Вот функция

StatBars, спасибо!

Может кому еще пригодится, переделал функцию, теперь показывает цену открытия последнего закрытого ордера.

double History_OrderOpPr()
{
   datetime open_time = 0;
   int ticket;
   for(int i= OrdersHistoryTotal()-1;i>=0;i--)
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
     {
       if(open_time < OrderOpenTime() && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderCloseTime()!=0)
        {
         open_time = OrderOpenTime();
         ticket = OrderTicket() ;
        }
     }
  }  
  if(open_time==0) return(-1);
  if( OrderTicket() != ticket ) OrderSelect( ticket , SELECT_BY_TICKET);
   
return(OrderOpenPrice());}
 
Спасибо, очень помогло!
 
Gun:

Как найти цену открытия последнего ордера?

Сделал вот так, но при закрытии по close cерии ордеров, то цена выходит первого ордера из этой серии, но не последнего...

Есть ли еще способ определения последнего ордера?


Подскажите, пожалуйста, если ордер был закрыт в безубыток по стоплоссу, какой функцией следует возвращать из истории цену его закрытия - OrderClosePrice() или OrderStopLoss() ?
 
audibmw:

Подскажите, пожалуйста, если ордер был закрыт в безубыток по стоплоссу, какой функцией следует возвращать из истории цену его закрытия - OrderClosePrice() или OrderStopLoss() ?

Для любого рыночного ордера цена закрытия всегда OrderClosePrice(). При чем тут OrderStopLoss() ?
 
Vinin:

Для любого рыночного ордера цена закрытия всегда OrderClosePrice(). При чем тут OrderStopLoss() ?

Спасибо!