Как открывать ордера только по одной паре

 
Добрый день. 

Советник активирован на нескольких парах одновременно. Задача - запретить открывать ордера на других парах, если есть рыночный ордер на какой либо паре. 

Буду благодарен за подсказки в реализации
 
MaksGroup:
Добрый день. 

Советник активирован на нескольких парах одновременно. Задача - запретить открывать ордера на других парах, если есть рыночный ордер на какой либо паре. 

Буду благодарен за подсказки в реализации

Если на mql4 то

if(OrdersTotal() == 0)
 // открыть ордер

А на mql5 так

if(PositionsTotal() == 0
 // открыть позицию
 
Alexey Viktorov:

Если на mql4 то

А на mql5 так

Да, на mql4. Но задача в том, что если открыт ордер по EURUSD, то по этой паре можно открывать еще ордера, но по любым другим нельзя пока по евродоллар не закроется все ордера. 

 
MaksGroup:
Да, на mql4. Но задача в том, что если открыт ордер по EURUSD, то по этой паре можно открывать еще ордера, но по любым другим нельзя пока по евродоллар не закроется все ордера. 

Каков был вопрос, таков был и ответ.

В таком случае надо делать что-то экстра-ординарное.

Например: перед первым открытием проверка на OrdersTotal() == 0 и после открытия взвести какой-то флаг, что к этому символу запрет не относится.

Как-то так.

 
Alexey Viktorov:

Каков был вопрос, таков был и ответ.

В таком случае надо делать что-то экстра-ординарное.

Например: перед первым открытием проверка на OrdersTotal() == 0 и после открытия взвести какой-то флаг, что к этому символу запрет не относится.

Как-то так.

Почему экстраординарное? Очень даже обыденная задача:

bool IsNewOrderAllowed()
{
   for (int i = OrdersTotal() - 1; i >= 0; --i)
   {
      if (!OrderSelect(i, SELECT_BY_POS))
         continue;

      if (OrderSymbol() != Symbol())
         return false;
   }
  
   return true;
}
 
Alexey Viktorov:

Каков был вопрос, таков был и ответ.

В таком случае надо делать что-то экстра-ординарное.

Например: перед первым открытием проверка на OrdersTotal() == 0 и после открытия взвести какой-то флаг, что к этому символу запрет не относится.

Как-то так.

Спасибо
 
Ihor Herasko:

Почему экстраординарное? Очень даже обыденная задача:

Спасибо. Действительно все просто, а голову ломал. 
Буду пробовать. 
 
Ihor Herasko:

Почему экстраординарное? Очень даже обыденная задача:

Ну надо-же было напугать новичка.)))

 
MaksGroup:
Добрый день. 

Советник активирован на нескольких парах одновременно. Задача - запретить открывать ордера на других парах, если есть рыночный ордер на какой либо паре. 

Буду благодарен за подсказки в реализации

Как именно один советник активирован на нескольких парах? Простите за любопытство, но очень интересно. 

 
Алексей Тарабанов:

Как именно один советник активирован на нескольких парах? Простите за любопытство, но очень интересно. 

Открываете несколько пар на терминале и на каждую устанавливаете один и тот же советник. Все просто. 
 
В советнике есть функция учета позиций (должна быть), но она считает позиции только одного символа. Надо переделать ее, что бы считала и другие позиции. А какие - задавать в окне свойств строкой. В строке пары символ-магик через запятую, например так: EURUSD-12345, GBPUSD-3452... При запуске каждому советнику указать такие же данные.