Ошибки: '}' - unexpected end of program

 

Решил сделать советника под себя на основе примера из справочника mql4. Но ув. вечно какие-то ошибки выдает, уже неделю с ним парюсь ничего не выходит.

Посмотрите скажите что не так может что-то убрать или изменить нужно помимо скоб.

Ошибки:

'}' - unexpected end of program expert.mq4 218 3

'{' - unbalanced parentheses expert.mq4 23 2


Файлы:
expert.mq4  9 kb
 

Это пример как не надо писать был наверное )))

Там куча ошибок, знаки препинания где не надо, скобки фигурные не подсчитаны, имена переменных повторяются, много переменных вообще не объявлено, много чего. Полностью пересмотрите свой код.

Да, задавать один и тот же вопрос сразу в нескольких ветках - дурной тон.

 

ык попробуйте перевести то что написано в ошибках. по моему это самый просто способ узнать причину ошибки

вот это чего в старте делает?

#property indicator_level1 20 // Задаём верхний уровень                             
#property indicator_level2 80 // Задаём нижний уровень 

у Вас же эксперт а не индюк.

 DPeriod,      // "Redline" индикатора StochRSI.mq4 
 DPeriod=Bid;   // Запрашивем значение "Redline"

почему тип не задан?

  return;      // Выход из start()

а где закрывающая скобка?

 };

а это чего еще за новость?

покажите где в примере это написано?

bool Ans =false,  // Ответ сервера после закрытия
bool Cls_B=false,

почему запятая стоит в конце а не точка с запятой? зачем два раза одно и то же писать?

ставите запятую пишите так:

bool Ans =false,  // Ответ сервера после закрытия
 Cls_B=false, // Критерий для закрытия Buy
 Cls_S=false, // Критерий для закрытия Sell
 Opn_B=false, // Критерий для открытия Buy
 Opn_S=false; // Критерий для открытия Sell

что такое:

[1]Close

Дальше смотреть не стал, устал,

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

 
Vladon:

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

почему тип не задан?

return; // Выход из start()


Я ошибки не виню. Просто решил узнать на форуме что не так, т.к не понимаю половины.

дк и в примере не задан тип

 
evillive:

Это пример как не надо писать был наверное )))

Там куча ошибок, знаки препинания где не надо, скобки фигурные не подсчитаны, имена переменных повторяются, много переменных вообще не объявлено, много чего. Полностью пересмотрите свой код.

Да, задавать один и тот же вопрос сразу в нескольких ветках - дурной тон.


петросян, воздух гонять иди в другое место если пальчиком показать не можешь. И так понятно что всякой фигни понаписал в советнике
 
Kutuzov:

петросян, воздух гонять иди в другое место если пальчиком показать не можешь. И так понятно что всякой фигни понаписал в советнике
Тебе там чуть выше показали пальчиком, так это даже не половина и кто после этого петросян? Гонор плохой помощник, мозги включай.
 
evillive:
Тебе там чуть выше показали пальчиком, так это даже не половина и кто после этого петросян? Гонор плохой помощник, мозги включай.


no coment -__-
 
Kutuzov:

no coment -__-
А и не надо коментов, исправляй ошибки, их тебе Владислав указал более чем конкретно. Там ещё, кроме синтаксических, логические ошибки есть, так что успехов.
 

Здравствуйте господа программисты.
Помогите пожалуйста разобраться.
Я в этом деле совсем новичёк.
Хочю кусок кода который отвечяет за информативность вставить в эксперт.
Но мне почему то компилятор выдает такую ошибку:

'}' - unexpected end of program

'{' - unbalanced parentheses

что сделано не так ? помогите разобраться пожалуйста !

Вот сам кусок кода:


#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


extern bool ShowInfo = TRUE;
extern int Magic = 1122;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   if ((!IsOptimization() && !IsTesting() && !IsVisualMode()) || (ShowInfo && IsTesting() && !IsOptimization()))
   {
      DrawStats();
      DrawLogo();
   }
   
//---
 
void DrawStats() {

   double drlog = GetProfitForDay(0);
   string statname = eiles + "1";
   if (ObjectFind(statname) == -1) {
      ObjectCreate(statname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(statname, OBJPROP_CORNER, 1);
      ObjectSet(statname, OBJPROP_XDISTANCE, 10);
      ObjectSet(statname, OBJPROP_YDISTANCE, 15);
   }
   ObjectSetText(statname, "Заработок сегодня: " + DoubleToStr(drlog, 2), 10, "Courier New", Yellow);
   
         drlog = GetProfitForDay(1);
         statname = eiles + "2";
   if (ObjectFind(statname) == -1) {
      ObjectCreate(statname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(statname, OBJPROP_CORNER, 1);
      ObjectSet(statname, OBJPROP_XDISTANCE, 10);
      ObjectSet(statname, OBJPROP_YDISTANCE, 30);
   }
   ObjectSetText(statname, "Заработок вчера: " + DoubleToStr(drlog, 2), 10, "Courier New", Yellow);
   
         drlog = GetProfitForDay(2);
         statname = eiles + "3";
   if (ObjectFind(statname) == -1) {
      ObjectCreate(statname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(statname, OBJPROP_CORNER, 1);
      ObjectSet(statname, OBJPROP_XDISTANCE, 10);
      ObjectSet(statname, OBJPROP_YDISTANCE, 45);
   }
   ObjectSetText(statname, "Заработок позавчера: " + DoubleToStr(drlog, 2), 10, "Courier New", Yellow);
   
   statname = eiles + "4";
   if (ObjectFind(statname) == -1) {
      ObjectCreate(statname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(statname, OBJPROP_CORNER, 1);
      ObjectSet(statname, OBJPROP_XDISTANCE, 10);
      ObjectSet(statname, OBJPROP_YDISTANCE, 75);
   }
   ObjectSetText(statname, "Баланс: " + DoubleToStr(AccountBalance(), 2), 12, "Courier New", Yellow);
}

void DrawLogo() {

   string logoname = eiles + "L_1";
   if (ObjectFind(logoname) == -1) {
      ObjectCreate(logoname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(logoname, OBJPROP_CORNER, 0);
      ObjectSet(logoname, OBJPROP_XDISTANCE, 390);
      ObjectSet(logoname, OBJPROP_YDISTANCE, 10);
   }
   ObjectSetText(logoname, "------------", 28, "Arial", DarkTurquoise);
   
          logoname = eiles + "L_2";
   if (ObjectFind(logoname) == -1) {
      ObjectCreate(logoname, OBJ_LABEL, 0, 0, 0);
      ObjectSet(logoname, OBJPROP_CORNER, 0);
      ObjectSet(logoname, OBJPROP_XDISTANCE, 382);
      ObjectSet(logoname, OBJPROP_YDISTANCE, 50);
   }
   ObjectSetText(logoname, "-----------", 16, "Arial", Gold);
}

double GetProfitForDay(int valdas) {
   double petras = 0;
   for (int antanas = 0; antanas < OrdersHistoryTotal(); antanas++) {
      if (!(OrderSelect(antanas, SELECT_BY_POS, MODE_HISTORY))) break;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         if (OrderCloseTime() >= iTime(Symbol(), PERIOD_D1, valdas) && OrderCloseTime() < iTime(Symbol(), PERIOD_D1, valdas) + 86400)
         petras = petras + OrderProfit() + OrderCommission() + OrderSwap();
   }
   return (petras);
}

 
Правых скобок больше, чем левых. Всё. 
 
Алексей Тарабанов #:
Правых скобок больше, чем левых. Всё. 

Что вы имеете в виду, правых скобок больше, чем левых ?

Каких, где, может точнее подскажите пожалуйста  а то я никак не пойму ?

Причина обращения: