Скачать MetaTrader 5

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

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

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

"Значение по умолчанию -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);
}
khorosh
9044
khorosh  
Не надо удалять старые, чтобы открыть новые. Нужно просто модифицировать старые.
ALex
744
ALex  

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

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

TarasBY
1740
TarasBY  
ALex2008:

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

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

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

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

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

ir0407
239
ir0407  
ALex2008:

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

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

OrderOpenTime() вам в помощь... :)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий