| / | Форум |
|
DEan
12.08.2006 17:35
Немогу понять, где ошибка. Помогите люди добрые. Вот что выдает 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); } //=============================================================================================//
|
|
Бесплатная Groupware для групп разработчиков Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение. |
|
Integer
12.08.2006 18:31
или лишняя скобка где-то или не хватает. Комментируй логически
завершенные блоки кода и компилируй, пока не найдешь место.
|
3649 |
Renat
12.08.2006 19:20
Опубликуйте полный код, пожалуйста.
Все похоже на определение функции внутри другой функции. Где-то потеряли фигурную скобку. Обычная ситуация у программистов, игнорирующих структурное форматирование текста. |
|
DEan
12.08.2006 22:52
Integer писал (а): или лишняя скобка где-то или не хватает. Комментируй логически завершенные блоки кода и компилируй, пока не найдешь место. Большое спасибо. Нашел.. Пропустил } скобку в предыдущей поцедуре. |
|
Ibiss
26.09.2009 16:32
Люди добрые! Таже самая ошибка... не могу понять...помогите пожалуста! В нижних пяти строчках. 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(); } |
|
Svinozavr
26.09.2009 16:51
Могу предложить способ для локализации поиска таких ошибок. Берете функцию переносите ее в пустой заголовочный (необязательно) файл и компилите. Пройдет - не она. И т.д. Разумеется, если есть глоб. переменные, объявленные в заголовке и используемые в ф-ии, то переносить лучше всего код целиком, а потом уничтожать лишнее.
|
|
Svinozavr
26.09.2009 16:53
А в вашем коде в последнем цикле закрывающей фиг.скобки не хватат. Перед void start()
|
5187 |
granit77
26.09.2009 17:08
Двух. |
|
Svinozavr
26.09.2009 17:12
Ага. Двух. По ф-ии и циклу. Вообще, можно др. редактор использовать - любой, который умеет {} сворачивать, чтобы отследить такие ошибки. |
|
Ibiss
26.09.2009 20:07
спасибо!)
|
|
Choomazik
26.09.2009 21:07
|
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий