Последний ордер

aspirine

Новичок форума
Здравствуйте!
такая ситуация: есть куча открытых рыночных и отложенных ордеров, бай и селл, как из них выбрать последний РЫНОЧНЫЙ ордер?
 

exhumer

Активный участник
я вот так решил эту задачку


PHP:
int GetLastOrder(string sym,int magic)
   {
   int ticket=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderType()>1) continue;
      if(OrderMagicNumber()!=magic) continue;
      if(OrderSymbol()!=sym) continue;
         ticket=OrderTicket();
     }
     //if(ticket==0) Alert("Its so strange... GetLastOrder return zero result!!!");
   
   return(ticket);
   }

возвращает тикет последнего ордера по заданному мейджику и символу. ищет только среди op_buy и op_sell (if(OrderType()>1) continue; ). если надо и среди отложек, то уберите эту строчку и все.
соответственно для себя подправите, если что.
 

aspirine

Новичок форума
у меня выбирает только первый ордер селл и бай, а дальше ступор при этом постоянно выдает ошибку 4107
 

exhumer

Активный участник
надо код смотреть... 4107 - это ERR_INVALID_PRICE_PARAM.
покажите кусок кода, где выбираетет ордера, может что проглядели.
 

exhumer

Активный участник
у меня выбирает только первый ордер селл и бай, а дальше ступор при этом постоянно выдает ошибку 4107
видимо после выбора ордера Вы с ним что-то делаете, раз он на цену ругается... ибо данная ошибка возникает в OrderClose, OrderModify, OrderSend когда неверно выбрана цена, например бид с аском перепутан.

Вы просто выбирайте OrderSelect-ом и параметры читайте, а с ордерами ничего не делайте.
Функция, которую я Вам показал должна работать, ибо я ее из своей вполне рабочей программы выдрал :)
 
Верх