Найти самый дальний ордер от рыночной цены.

 

Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.

Спасибо.

 
Igor Zenchenko:

Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.

Спасибо.

перебрать все ордера и сравнить цену открытия ордера с рыночной.

кстати, дальний селл - это одно, а дальний бай - совсем другое.

 
Renat Akhtyamov:
перебрать все ордера и сравнить цену открытия ордера.
Логика ясна как дважды два. Перебрать ордера, сравнить цену, какая цена будет дальше от рыночной цены того ордера узнать тикет. Если бы мне было так просто написать код такой простой логики, то я бы не просил помощи. У меня сложности с кодом. 
 
Igor Zenchenko:
Логика ясна как дважды два. Перебрать ордера, сравнить цену, какая цена будет дальше от рыночной цены того ордера узнать тикет. Если бы мне было так просто написать код такой простой логики, то я бы не просил помощи. У меня сложности с кодом. 
      int i;
      double sMax=0;
      double bMin=10000;
      int ticketBuy=0,ticketSell=0;
      double BID=MarketInfo(Symbol(),MODE_BID);
      double ASK=MarketInfo(Symbol(),MODE_ASK);
      for(i=OrdersTotal()-1; i>=0; i--)
         {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {                 
                  if(OrderType()==OP_BUY && bMin>OrderOpenPrice() && OrderOpenPrice()<BID)
                     {
                         bMin=OrderOpenPrice();
                         ticketBuy=OrderTicket();//тикет минимального BUY
                     }
                  if(OrderType()==OP_SELL && sMax<OrderOpenPrice() && OrderOpenPrice()>ASK)
                     {
                         ticketSell=OrderTicket();//тикет максимального SELL
                         sMax=OrderOpenPrice();
                     }
               }
         }
     if(ticketBuy!=0)
         {
             //здесь Ваши действия
         }
     if(ticketSell!=0) 
         {
             //здесь Ваши действия
         }

 
Renat Akhtyamov:
Ну вообще-то топикстартер ищет "самый дальний ордер от цены".
А не "самый нижний Бай из тех что ниже текущей цены, и самый верхний Селл из тех что выше текущей цены".

Ведь если существует ордер Бай выше текущей цены на большом расстоянии, то Ваш код его не найдёт. А возможно именно его ищет ТС.
 
Andrei Fandeev:
Ну вообще-то топикстартер ищет "самый дальний ордер от цены".
А не "самый нижний Бай из тех что ниже текущей цены, и самый верхний Селл из тех что выше текущей цены".

Ведь если существует ордер Бай выше текущей цены на большом расстоянии, то Ваш код его не найдёт. А возможно именно его ищет ТС.

Дальний куда?

Дальше разберется без фрилансеров, 4 года на форуме болтается как никак...

Сам не сможет - допишу сюда же, проблем нет.
 
Igor Zenchenko:

Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.

Спасибо.

int f_FindTicket()
{
   double MaxDist=0;
   int ticket=0;
   double BID=MarketInfo(Symbol(),MODE_BID);
   double ASK=MarketInfo(Symbol(),MODE_ASK);
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {                 
         if(OrderType()==OP_BUY && MaxDist<MathAbs(OrderOpenPrice()-BID))
         {
             MaxDist=MathAbs(OrderOpenPrice()-BID);
             ticket=OrderTicket();
         }
         if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK))
         {
             MaxDist=MathAbs(OrderOpenPrice()-ASK);
             ticket=OrderTicket();
         }
      }
   }
   return(ticket);
}  
 
Andrei Fandeev:

сверху или снизу значит не важно?

Ок...

А если бай и селл будут находится на одном расстоянии от рыночной?

Тогда уж и тип ордера не нужно анализировать...

 
Renat Akhtyamov:

сверху или снизу значит не важно?

Ок...

Я так понял фразу "самый дальний от цены".
Ну да ладно.
Услышим Спасибо - Хорошо, не услышим - побежим дальше работать ))) Отдохнули чуток тут )))
 
Andrei Fandeev:
Я так понял фразу "самый дальний от цены".
Ну да ладно.
Услышим Спасибо - Хорошо, не услышим - побежим дальше работать ))) Отдохнули чуток тут )))

не, не отдохнул. Эта правка моего кода и в первую очередь самореклама.

Лично мне не приятно.

Свой пишите в следующий раз.

 
Renat Akhtyamov:

не, не отдохнул. Эта правка моего кода и самореклама.

Лично мне не приятно.

Свой пишите в следующий раз.

А разве цикл перебора ордеров уже имеет авторские права?
По моему так пишется в 99% случаев.