Закрытие ордеров по нескольким магикам внутри одного советника

 
Добрый день. Подскажите какую функцию можно добавить в готовый советник, который торгует, например по трем сигналам. По каждому сигналу нужен отдельный контроль количества отложенных ордеров для их закрытия. Допустим, если выставить количество 2, то функция будет отслеживать по каждому сигналу отдельно, чтобы отложенные ордера не превышали двух и будет удалять старые при появлении новых сигналов. Уже открытие ордера не трогаются. Заранее спасибо.
 
Попробуйте функцию NumberOfOrders().
 

Спасибо Игорь, изучаю..

"Значение по умолчанию -1 - означает любой ордер."  Любой и даже открытый? Или только стоп ордера и лимитники?

 NumberOfOrders(NULL, -1, 111111);

Как теперь эти выбранные ордера можно закрывать(удалять), точнее самый старый из них? До этого момента пользовался функцией OrderDelete(Ticket). По магику не удалял ни разу. 

 Наверное так?  через DellAllOrders()...

if(NumberOfOrders(NULL, -1, magic)>=Ord) DellAllOrders();

  

//-------Удаление старых ордеров, открытых иили отложенных, т.к. поступил новый сигнал.
void DellAllOrders(){
      if(WorkOrders())OrderDelete(Ticket);
}
  
//-------Поиск ордера текущей пары
bool WorkOrders(){
      for (int i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i,SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderMagicNumber()!=magic)      continue;
      //OpenPrise=OrderOpenPrice();
      //Type     =OrderType();
      Ticket   =OrderTicket();
      return(true);}
return(false);
}
 
Не надо удалять старые, чтобы открыть новые. Нужно просто модифицировать старые.
 

Не думал об этом.... Надо подумать и вспомнить про модификацию)

Как можно модифицировать бай ордер в сел? по моему нельзя... Сигналы же разносторонние... У меня же по 2 ордера минимум одновременно висят. Бай может смениться селом, а может и снова новым баем.

 
ALex2008:

Не думал об этом.... Надо подумать и вспомнить про модификацию)

Как можно модифицировать бай ордер в сел? по моему нельзя... Сигналы же разносторонние... У меня же по 2 ордера минимум одновременно висят. Бай может смениться селом, а может и снова новым баем.

"Пол" (тип) ордеру не поменяешь, а вот цену открытия, SL и TP запросто.
 

Я про закрытие этих ордеров, а не про замену им "пола")

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

 
ALex2008:

Я про закрытие этих ордеров, а не про замену им "пола")

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

OrderOpenTime() вам в помощь... :)
Причина обращения: