Ошибка '(' - function definition unexpected.

 

Немогу понять, где ошибка. Помогите люди добрые.

Вот что выдает MetaEditor после компиляции:

'(' - function definition unexpected

а вот процедура на которую указывает ошибка:
//=============================================================================================//
   int Orders()
   {
    if(Symb=="*") SMB=Symbol(); else SMB=Symb;
     order=0; numord=0;
     for(i=0;i<OrdersTotal();i++) // проходим по всем существующим ордерам
      {
       OrderSelect(i, SELECT_BY_POS); // закрепляем очередной ордер для работы сним
       if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue; // Если не наш - смотрим следующий
       if(OrderType()==OP_BUY) {order=1; numord=i;} else  // если он открытый в покупку, то...
       if(OrderType()==OP_SELL) {order=-1; numord=i;} // если он открытый в продажу, то...
      }
   return (0);
   }
   //=============================================================================================//
 
или лишняя скобка где-то или не хватает. Комментируй логически завершенные блоки кода и компилируй, пока не найдешь место.
 
Опубликуйте полный код, пожалуйста.

Все похоже на определение функции внутри другой функции. Где-то потеряли фигурную скобку. Обычная ситуация у программистов, игнорирующих структурное форматирование текста.
 
Integer писал (а):
или лишняя скобка где-то или не хватает. Комментируй логически завершенные блоки кода и компилируй, пока не найдешь место.

Большое спасибо. Нашел.. Пропустил } скобку в предыдущей поцедуре.
 

Люди добрые!

Таже самая ошибка... не могу понять...помогите пожалуста!

В нижних пяти строчках.

extern double Lots               = 0.1;
double Points;
int init ()
  {
   Points = MarketInfo (Symbol(), MODE_POINT);
   return(0);
  }
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
   if(buys>0) return(buys);
   else       return(-sells);
  }
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();  
   int    losses=0;                 
   lot=NormalizeDouble(AccountFreeMargin()*0.02/1000.0,1);
   if(3>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/3,1);
     }
   if(lot<0.1) lot=0.1;
   return(lot);
  }
void CheckForOpen()
  {
double apglav1;
double apglav2;
double apsig1;
double apsig2;
int    res;
   if(Volume[0]>1) return;
   apglav1 =iCustom(NULL,0,"Caska",0,1); // первая линия на 1м баре
   apsig1 =iCustom(NULL,0,"Caska",1,1); // вторая линия на 1м баре   
   apglav2 =iCustom(NULL,0,"Caska",0,2); // первая линия на 2м баре
   apsig2 =iCustom(NULL,0,"Caska",1,2); // вторая линия на 2м баре
     if (apglav2<apsig2 && apglav1>apsig1)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,"",MAGICMA,0,Blue);
      return;
     }
     if (apglav2>apsig2 && apglav1<apsig1)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,"",MAGICMA,0,Red);
      return;
     }
  }
  void CheckForClose()
  {
double apglav1;
double apglav2;
double apsig1;
double apsig2;
   if(Volume[0]>1) return;
   apglav1 =iCustom(NULL,0,"Caska",0,1); // первая линия на 1м баре
   apsig1 =iCustom(NULL,0,"Caska",1,1); // вторая линия на 1м баре   
   apglav2 =iCustom(NULL,0,"Caska",0,2); // первая линия на 2м баре
   apsig2 =iCustom(NULL,0,"Caska",1,2); // вторая линия на 2м бар
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_BUY)
        {
        if(apglav2>apsig2 && apglav1<apsig1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
        break;
        }
   if(OrderType()==OP_SELL)
        {
        if(apglav2<apsig2 && apglav1>apsig1) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
        break;
        }
void start()
  {
   if(Bars<100 || IsTradeAllowed()==false) return;
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
  }
 
Могу предложить способ для локализации поиска таких ошибок. Берете функцию переносите ее в пустой заголовочный (необязательно) файл и компилите. Пройдет - не она. И т.д. Разумеется, если есть глоб. переменные, объявленные в заголовке и используемые в ф-ии, то переносить лучше всего код целиком, а потом уничтожать лишнее.
 
А в вашем коде в последнем цикле закрывающей фиг.скобки не хватат. Перед void start()
 
Svinozavr >>:
А в вашем коде в последнем цикле закрывающей фиг.скобки не хватат. Перед void start()

Двух.

 
granit77 >>:

Двух.

Ага. Двух. По ф-ии и циклу.

Вообще, можно др. редактор использовать - любой, который умеет {} сворачивать, чтобы отследить такие ошибки.

 
спасибо!)
 
Ibiss >>:
спасибо!)

Вставь свой код сюда, отформатируй, и все увидишь:


http://www.prettyprinter.de/
Причина обращения: