Как одновременно запустить два советника

 

Подскажите пож-та, где капать?

Есть два советника, оба полностью одинаковые на основе стандартного MACD, выложенного на сайте.

Оба работают нормально в отдельности друг от друга. Как только запускаю оба советника одновременно на разных ваютах происходит следущее -

советник, сигнал к сделке по которомупоступил раньше начинает торговать, второй советник игнорирует сигналы и ошибки не выдает, как будто его и нет.

Посоветуйте как исправить

 

magic разный поставь

 
разные стоят, это первое что я сделал, столкнувшись с проблемой
 
ArTrader:
разные стоят, это первое что я сделал, столкнувшись с проблемой

Значит в коде нет проверки на магик, а есть только на открытые ордера. Сылку на код дай, раз он из CodeBase/
 
'MACD Sample' тут он, будьте добры разжуйте где грабли))
 
ArTrader:
'MACD Sample' тут он, будьте добры разжуйте где грабли))

Надо писать свою функцию, подсчитывающую количество открытых ордеров по Магику.
 total=OrdersTotal();
  if(total<1) 
.......
}

Вот этот кусок текста превращает всю возню с Магиками в бесмылицу.

На форуме во многих ветках, и Игоря Ким, и у других есть функции по работе с магиком. Можешь сходить на его (Игоря Кима) форум.

Заместо OrdersTotal() нужна функция, возвращаюшая количество ордеров по магику.

 
спасиб буду капать))
 
ArTrader:
спасиб буду капать))

Моя функция Вам в помощь... :-)

//+----------------------------------------------------------------------------+
//|  Возвращает количество позиций.                                            |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) sy=Symbol();
 
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }
        }
      }
    }
  }
  return(kp);
}
 
ArTrader:
спасиб буду капать))

Если будешь использовать Эту функцию, то нужно еще переделывать логику советника , ставить проверку на магик в самом цикле, ну и на инструмент тоже нужно проверять.
 
KimIV:

Моя функция Вам в помощь... :-)


Я очень часто любуюсь, красотой и эффективностью Ваших процедур. Поверьте очень приятно смотреть на качественную работу. Если вас не затруднит сделайте 1 страничку с пояснениями к каждой процедуре. Это кирпичики и часто очень хорошего качества, из них можно построить хороший дом. У каждого он будет конечно свой. Но вот многими Вашими кирпичиками я бы воспользовался с удовольстивем если Вы не против.
 
прочитал, попытался понять куда всё это вставить, неудачно, пошел читать статьи и инфу по языку)))