Скачать MetaTrader 5

Прошу помочь

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Что происходит в MQL5.community? Раздел Стена ответит на этот вопрос!
Владимир
31
Владимир 2014.05.27 13:45 

Всем здравствуйте. 

Подскажите пожалуйста как найти время и цену определенного выставленного или существующего  ордера? Тобишь ордеров много выставляется а мне нужно конкретно одного. Заранее спасибо.! Или узнать время и цену обьекта , к примеру горизонтальной линии.

Dmitry Fedoseev
42875
Dmitry Fedoseev 2014.05.27 14:26  

Определенного как? 

Вообще есть два способа выделить ордер: по номеру и по тикету (см. описание функции OrderSelect()).

Если нужно выделить оредр по какому-то другому признаку, то надо перебирать все ордера, выделять из по номеру и проверять на соответствие признаку. 

Владимир
31
Владимир 2014.05.27 14:33  
Integer:

Определенного как? 

Вообще есть два способа выделить ордер: по номеру и по тикету (см. описание функции OrderSelect()).

Если нужно выделить оредр по какому-то другому признаку, то надо перебирать все ордера, выделять из по номеру и проверять на соответствие признаку. 

 


Спасибо за ответ. Читал про OrderSelect но никак толком не могу вникнуть в суть его работы, как он работает?  откуда взять номер ордера?

Dmitry Fedoseev
42875
Dmitry Fedoseev 2014.05.27 14:42  
kasperva:


Спасибо за ответ. Читал про OrderSelect но никак толком не могу вникнуть в суть его работы, как он работает?  откуда взять номер ордера?


Номер ордера от нуля до количества ордеров. Количество опредлеляется функцией OrdersTotal().

 

int t=OrdersTotal();

for(int i=0;i<t;i++) {
   ...

}
Владимир
31
Владимир 2014.05.27 15:01  
Integer:


Номер ордера от нуля до количества ордеров. Количество опредлеляется функцией OrdersTotal().

 


А этот номер) Это я знаю спасибо) Попробую спросить по другому.

Вот дано: 

double OOP;                                                                              

  int orders = OrdersTotal()-1;

    if(OrderSelect(orders, SELECT_BY_POS)==true)OOP=OrderOpenPrice();   

    else OOP = 0; 

Вот здесь я так понимаю он просто выдаёт мне цену любого или последнего ордера, потому что нету никакого выбора. Вот как здесь начать выбирать по определенным параметрам а именно валютной паре или хотя бы Magicu  и после этого выбора как узнать цену открытия именно этого выбранного ордера?)

извиняюсь за непонятные выражения) мозг кипит)  

Dmitry Fedoseev
42875
Dmitry Fedoseev 2014.05.27 15:15  
В цикле проходим по всем ордерам, выделяем, а дальше проверяем на соответсвие всем нужным параметрам: OrderSymbol(), OrderMagicNumber() и пр.
Владимир
31
Владимир 2014.05.27 15:22  
Integer:
В цикле проходим по всем ордерам, выделяем, а дальше проверяем на соответсвие всем нужным параметрам: OrderSymbol(), OrderMagicNumber() и пр.

Чисто теоритически это понятно) Добрый человек, не затруднит ли вас написать наглядно)) Может я конечно обнаглел, но прошу вашей помощи)
Dmitry Fedoseev
42875
Dmitry Fedoseev 2014.05.27 15:33  
В терминале есть советник Moving Average, посмотрите в нем функцию CalculateCurrentOrders().
Владимир
31
Владимир 2014.05.27 15:39  
Integer:
В терминале есть советник Moving Average, посмотрите в нем функцию CalculateCurrentOrders().

Спасибо)
Владимир
31
Владимир 2014.05.27 16:31  
Integer:
В терминале есть советник Moving Average, посмотрите в нем функцию CalculateCurrentOrders().

double OOP1()                                                                         
  
{
double X = 0;
   for(int trade1=OrdersTotal()-1; trade1>=0; trade1--)
   
   {
   
   OrderSelect(trade1, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol() == Symbol() && OrderMagicNumber()== Magic1)
      
      {
     
     X=OrderOpenPrice();  
     
      }

   }
return(X);

}

 Вроде правильно верно?) 

 

 

Dmitry Fedoseev
42875
Dmitry Fedoseev 2014.05.27 16:50  

В общем-то да, правильно. Дальше смотрите, подходит ли для решения поставленой задачи? 

Еще бы делать проверку результата OrderSelect(). 

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