Вопрос знатокам MQL - страница 15

 

благодарю, Zhunko и TheXpert !

В ваших вариантах этот вид ошибки устраняется!

 

добрый день!

Подскажите, что может означать предупреждение при компиляции индикатора в обновленной мт4:

not all control paths return a value S_Е_v.mq4 181 1
0 error(s), 1 warning(s) 1 2

 
Rita:

Подскажите, что может означать предупреждение при компиляции индикатора в обновленной мт4:

Это значит, что в функции которая возвращает значение есть случай, когда ничего не возвращается и это плохо.
 

Программеры, выручайте: нужно по заданному времени на часовом ТФ определить смещение бара. Штатная процедура (из учебника) выдает 0. Ткните носом, где я ошибаюсь...

 datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Nesradamus:

Программеры, выручайте: нужно по заданному времени на часовом ТФ определить смещение бара. Штатная процедура (из учебника) выдает 0. Ткните носом, где я ошибаюсь...

"EUROUSD"

Есть такой символ?

 

Добрый день.

После последнего обновления мт4 и компиляции советника имеются предупреждения в трех строках 101-106-109, см. рис:

Пож. подскажите, - как исправить, вот код этой функции :

(и нужно ли исправлять?)

int init()
{
 ExpertBars = Bars;
//-----------------------------------------------------------
gbNoInit=False; if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
//------------------
}
 
Rita:

Добрый день. После последнего обновления мт4 и компиляции советника имеются предупреждения в трех строках 101-106-109, см. рис:

Пож. подскажите, - как исправить, вот код этой функции :

(и нужно ли исправлять?)

У вас init() имеет тип int, а это значит, что нужно вернуть значение. Перед последней закрывающей скобкой впишите

return(INIT_SUCCEEDED);

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

 
Вот код
artmedia70:

.Перед последней закрывающей скобкой впишите .....

Функции вы не показали - поищите сами в тех функциях где возможен уход на последнюю закрывающую скобку.


Благодарю. Исправила return(INIT_SUCCEEDED);.

Вот код этой непоказанной функции по двум другим оставшимся предупреждениям:

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);}

.

 
Rita:
Вот код

Благодарю. Исправила.

Вот код этой функции по двум другим предупреждениям:

1. Скорее всего у вас deinit() тоже int, а return(0) в ней не вписано

2. Эта функция void и return`ом в ней служит закрывающая скобка. В ней всё норм.

 

deinit() - У меня нет вовсе её.

Исправила по двум оставшимся предупреждениям return на return(0) и код скомпелировался без замечаний.

Спасибо.