Одновременный запуск более одного эксперта - страница 4

 
Sneck55: Он должен уменьшаться, если закрывает ордер, чтобы соответствовать тому, что происходит в пуле, но не уменьшаться, если ордер не закрыт. Если он уменьшается без закрытия ордера, то он попадает в бесконечный цикл.
Вы можете привести лошадь к воде...
 
Sneck55:
Ему нужно уменьшаться, если он закрывает ордер, чтобы соответствовать тому, что происходит в пуле, но не уменьшаться, если он не закрывает ордер. Если он уменьшается без закрытия ордера, он попадает в бесконечный цикл.

Если бы вы не вызывали OrdersTotal() постоянно, у вас не было бы этой проблемы. Вызовите общую сумму один раз. Поместите его в int. Используйте этот int в цикле for.

Вы вообще читали мой предыдущий ответ? Весь этот цикл - пустая трата времени. Посмотрите на свой код. Как вы думаете, какое значение уже имеет SellTicket?

         if(SellTicket!=0)
            {
            if(SmallMA>MediumMA)
            {
            for(Counter=0;Counter<=OrdersTotal()-1;Counter++)
               {
               SelectedOrder = OrderSelect(Counter,SELECT_BY_POS);
               if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderType()==OP_SELL)
                  {
               //   while(IsTradeContextBusy()) Sleep(10);
                  Closed=OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),Slippage,Red);
                  if(Closed) SellTicket=0;
                  else Alert("Symbol: ",Symbol()," Ticket: ",SellTicket," unable to close sell order(s): sell ma convergence close routine");                  
                  }
            Counter--;               
                }
            }
            }
 
И это будет потреблять энергию процессора с течением времени.
 

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