Вопрос о циклах - страница 2

 
Alexey Viktorov:

Ну если буква r пропущена только здесь? в этом сообщении, то это "Очевидное не вероятное" у всех работает, а у тебя нет... Так не бывает.

аа ну да. Ночь, внимание уже не то
 
Evgeniy Zhdan:

Спасибо всем.

OderClosePrice() терминал не распознает.

Ему и не надо. Серверу передаётся цена, по которой должен быть закрыт ордер. 

...

В логах этого не написано. И  OrderClose не возвращает ошибок, а лишь true/false.

Зато сервер или тестер возвращают всегда код ошибки, даже когда ошибки нет, вернёт 0. Всегда нужно анализировать код возврата торгового сервера, его самое последнее значние хранится в _LastError.
 

Всем спасибо за участие. Данный ниже код проверен на реале. Работает идеально. Его можно адаптировать под открытие ордеров или модификацию.

   if(ProfitPoints<=pointsSell)
     {
      bool del=false;
      while(!del && !IsStopped())
        {
         for(int i=OrdersTotal()-1; i>=0; i--)
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
              {
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
                 {
                  if(OrderType()==OP_SELL && ProfitPoints<=pointsSell)
                    {
                     bool err=true;
                     err=OrderClose(OrderTicket(),OrderLots(),SymbolInfoDouble(OrderSymbol(),SYMBOL_ASK),30,Red);
                     if(!err)
                       {
                        Print("Ошибка закрытия ордеров: ",GetLastError());
                       }
                    }
                 }
              }
           }
         if(CountTrades(OP_SELL,Magic)==0) { PlaySound("ok.wav"); del=true; }
        }
     }
Причина обращения: