Ошибки, баги, вопросы - страница 304

 
Yedelkin:

Беру из раздела Справочник MQL5 / Основы языка / Функции вот эту функцию

 Но компилятор во второй строчке выдаёт:      '(' - semicolon is expected 

 Что это означает?

проверил по примеру из правки (с заменой первого передаваемого параметра). все ОК, ошибок не возникало не разу.

правильный пример для справки выглядит примерно так

//function linfunc
double linfunc(double a, double b)
{
return(a + b);
}

Такое сообщение как у Вас лично смогу получить только в одном тесте, когда заменил первую фигурную скобку на круглую. Тогда вылезло вот такое сообщение

'(' - semicolon is expected (ожидается точка с запятой)

Если количество круглых скобок (правых и левых) не совпадает то появляется предупреждение

';' - unexpected token
'}' - semicolon is expected

PS

Если пытаться компилировать текущий пример (с русской "а") компилятор как и положено выдает ошибку

'a' - undeclared identifier

 
Yedelkin:

Не стоит додумывать за других то, чего нет :) Символ исправлен был сразу в редакторе, как само собой разумеющееся. Ошибка выдаётся, когда курсор стоит  перед открывающей круглой скобкой, а не перед символом 'a'. Будучи человечески внимательным, Вы должны были это заметить в процитированном комментарии компилятора.

Вопрос остался: https://www.mql5.com/ru/forum/1111/page304#comment_48136 

 

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

Да у него ошибка, скорее всего не связанная с этим примером....

Нужно весь код смотреть...

 
Yedelkin:

Беру из раздела Справочник MQL5 / Основы языка / Функции вот эту функцию

 Но компилятор во второй строчке выдаёт:      '(' - semicolon is expected 

 Что это означает?

Букву в примере исправили, но именно такую ошибку получить не удалось. Можете предоставить полный код, чтобы мы могли воспроизвести?
 
Rosh:
Букву в примере исправили, но именно такую ошибку получить не удалось. Можете предоставить полный код, чтобы мы могли воспроизвести?

Благодарю всех за внимание к вопросу! Дело в том, что какого-то "полного кода", который мог бы инициировать ошибку - не существует. Я просто решил проверить утверждение из учебника по С++ о том, что значение внешней переменной, которая передаётся в функцию в качестве аргумента, не может быть изменено функцией (или что-то в этом роде - в общем, из области самообразования). Создал примитивную функцию для проверки - компилятор выдаёт ошибку. Обратился к справочнику, скопировал пример, исправил в примере символ - всё равно та же ошибка. Пробовал вставлять функцию и в шаблон скрипта, и в шаблон эксперта - ошибка не меняется. Фактически, "полный код" состоит только из функции из примера, которая вставлена в пустое тело функции  onTick() или onStart().

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

 
Rosh:
Букву в примере исправили, но именно такую ошибку получить не удалось. Можете предоставить полный код, чтобы мы могли воспроизвести?
void OnStart()
  {
   double                       // тип возвращаемого значения
   linfunc (double a, double b)  // имя функции и список параметров
     {
                               // составной оператор
      return (a + b);           // возвращаемое значение
     }
  }
Как-то так воспроизводится.
 
Swan:
Как-то так воспроизводится.

Ну так Вы пытаетесь определить одну функцию внутри другой - это недопустимо. В разделе Вызов функции об этом сказано явно:

Функция может быть объявлена или описана в любом месте программы на глобальном уровне, то есть, вне других функций. Функция не может быть объявлена или описана внутри другой функции.

 
Rosh:

Ну так Вы пытаетесь определить одну функцию внутри другой - это недопустимо. В разделе Вызов функции об этом сказано явно:

Спасибо за разъяснение! Именно мой случай.

Теретические знания ещё не гарантируют правильность их применения на практике :) Мой недочёт.

 

Build 392.

При удалении графика он не попадает в список удаленных. Получается, что пункт меню "Файл">"Открыть удаленный" не работает.

Случайно закрыл (вместо разворачивания) график, надеялся увидеть в удаленных, а тут ... 

 
Ashes:

Build 392.

При удалении графика он не попадает в список удаленных. Получается, что пункт меню "Файл">"Открыть удаленный" не работает.

Случайно закрыл (вместо разворачивания) график, надеялся увидеть в удаленных, а тут ... 

Поставьте галочку


 

Некоторые агенты удаленно не запускаются, вот лог:

LE      0       5.0.6.84        14:51:19        login (build 392)
HN      2       Tester  14:51:20        initial synchronization error
JF      2       5.0.6.84        14:51:20        send error 10038
LJ      0       Tester  14:51:20        tester agent shutdown
KO      0       5.0.6.84        15:25:41        login (build 392)
HD      2       Tester  15:25:42        initial synchronization error
NM      0       Tester  15:25:42        tester agent shutdown
HM      0       127.0.0.1       15:36:37        login (build 392)
FK      0       Network 15:36:38        2548 bytes of optimization passes loaded
HM      0       Network 15:36:38        16 bytes of input parameters loaded
HE      0       Network 15:36:38        3788 bytes of group info loaded
GP      0       Network 15:36:38        3358 bytes of tester parameters loaded
HG      0       Network 15:36:38        2948 bytes of input parameters loaded
KL      0       Network 15:36:38        671 bytes of selected symbols loaded
CD      0       Tester  15:36:38        expert file added: Experts\MyExperts\ExpCrossEMA.ex5. 133395 bytes loaded
QS      0       Tester  15:36:38        initial deposit 5000.00 USD, leverage 1:100
PJ      0       Tester  15:36:38        successfully initialized
NP      0       Network 15:36:38        146 Kb of total initialization data received
MG      0       Tester  15:36:38        optimization pass 393 started
LR      0       TesterAgent     15:36:38        Intel Core2 Duo  E8200 @ 2.66GHz, 2047 MB, PR49
DI      0       Symbols 15:36:40        EURUSD: symbol synchronized, 2904 bytes of symbol info received
QS      0       History 15:36:40        EURUSD: load 704 Kb of history data to synchronize
OF      0       History 15:36:40        EURUSD: history synchronized from 2009.01.02 to 2011.01.31
KK      0       History 15:36:42        EURUSD: contains 366322 M1 records of beginning data from 2009.01.02 10:00 to 2009.12.31 18:59
CH      0       History 15:36:42        EURUSD,M5: history cache reserved for estimated 150171 bars
JO      0       History 15:36:42        EURUSD,M5: history begins from 2009.01.02 10:00
NK      0       Tester  15:36:42        EURUSD,M5 (Alpari-Demo): every tick generating
KS      0       Tester  15:36:42        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
PN      0       Tester  15:36:42          Inp_Signal_CrossEMA_FastPeriod=30
GG      0       Tester  15:36:42          Inp_Signal_CrossEMA_SlowPeriod=18
DS      0       Tester  15:36:42          Inp_Expert_Title=ExpCrossEMA
MK      0       Tester  15:36:42          Inp_Money_FixLot_Percent=10
FM      0       Tester  15:36:42          Inp_Money_FixLot_Lots=0.1
GO      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   CSignalCrossEMA::ValidationSettings: period of slow EMA must be greater than period of fast EMA
RF      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   OnInit: error signal parameters
DM      2       Tester  15:36:42        tester stopped because OnInit failed
FG      0       Network 15:36:42        16 bytes of tester parameters received
PR      0       Tester  15:36:42        optimization pass 1817 started
FK      0       Tester  15:36:42        initial deposit 5000.00 USD, leverage 1:100
FL      0       Tester  15:36:44        EURUSD,M5 (Alpari-Demo): every tick generating
GE      0       Tester  15:36:44        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
GE      0       Tester  15:36:44          Inp_Signal_CrossEMA_FastPeriod=28
KM      0       Tester  15:36:44          Inp_Signal_CrossEMA_SlowPeriod=49
DJ      0       Tester  15:36:44          Inp_Expert_Title=ExpCrossEMA
IM      0       Tester  15:36:44          Inp_Money_FixLot_Percent=10
RF      0       Tester  15:36:44          Inp_Money_FixLot_Lots=0.1
GO      0       Tester  15:36:45        output to log disabled
IO      0       Tester  15:37:10        OnTester result 0

 

 Хотя через localhost этот агент локально работает.

В чем может быть причина?

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