Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Shiryayev
2510
Andrey Shiryayev  

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

Сделал вот так, но при закрытии по 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();
}}}
Artem Titarenko
4025
Artem Titarenko  
Вот функция
//---- Ищет последний ордера и возвращает его цену открытия----//
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ерии ордеров, то цена выходит первого ордера из этой серии, но не последнего...

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

Andrey Shiryayev
2510
Andrey Shiryayev  
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());}
ivasiv.a
6
ivasiv.a  
Спасибо, очень помогло!
Andrey
6
Andrey  
Gun:

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

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

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


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

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

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

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

Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий