Несколко советников на один счет (МТ4) - страница 3

 
Filya1212:
open и close
Что бы не вдаваться в подробности, если по сигналу есть открытие ордера, а дальше игнор, то всё-таки перебор ордеров некорректный. 
 
Filya1212:
перебор открытых ордеров происходит только в случае включенного трала и включенного закрытия по сигналам, но в моем случае все это отключено. 
Ограничений по кол-ву ордеров нет? Например: если открыт 1 бай, то больше открытий бай нет, сигналы далее игнорируются. Типа того))
 
Natalya Dzerzhinskaya:
Что бы не вдаваться в подробности, если по сигналу есть открытие ордера, а дальше игнор, то всё-таки перебор ордеров некорректный. 
думал об этом, но у сигналов в разных советниках разные значения, ограничений нет
 
Filya1212:
думал об этом, но у сигналов в разных советниках разные значения, ограничений нет

Измените в своем советнике, символы явно прописанные  "EURGBP" на  _Symbol или  Symbol(),

и я уверен будет вам щястье  

 

Возможно в начале кода где-то используется 

if(OrdersTotal()==0) {
... ну и дальше основной код
 
Filya1212:

//первый сигнал
while((Price<MA) && (Price1>MA_1))
        {
         chk=9;
         Print("Позиция возможна SELL EURGBP!");
         break;
        }

      if(chk==9)
        {
//второй сигнал и открытие      
         if((iStochastic("EURGBP",0,K,D,Slow,MODE_SMA,0,MODE_MAIN,1)>iStochastic("EURGBP",0,K,D,Slow,MODE_SMA,0,MODE_SIGNAL,1)) && (iStochastic("EURGBP",0,K,D,Slow,MODE_SMA,0,MODE_MAIN,0)<iStochastic("EURGBP",0,K,D,Slow,MODE_SMA,0,MODE_SIGNAL,0)))
           {
          
          
           {
            ticket=OrderSend("EURGBP",OP_SELL,Lot,NormalizeDouble(Bid,Digits),3,NormalizeDouble(Bid+StopLoss*Point,Digits),NormalizeDouble(Bid-TakeProfit*Point,Digits),
            "EMA position:",16385,0,Red);
            if(ticket>0)
              {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                  Print("Открыт ордер SELL EURGBP: ",OrderOpenPrice());
                   Time_open = TimeCurrent()-Time[0]; //вводим новую строку (запоминаем интервал от времени открытия бара, на котором был вход, до момента входа)
              Time_bar = Time[0];
               chk=0;
              }
            else
              {
               Print("Ошибка открытия SELL ордера EURGBP: ",GetLastError());
               return(0);
              }
           }
           }
           return(0);
           }

Код некорректен, какой Ask, Bid, если идёт обращение к конкретной паре? SymbolInfoDouble есть для того. Или MarketInfo.

Если весь советник написан в том же духе, то надо править всё.