Скачать MetaTrader 5

Несколько вопросов навичка по програмированию MQL4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrei Savelyeu
11
Andrei Savelyeu  

Доброго времени суток уважаемые форумчане.
Недавно начал изучение MQL4.
При создании первой программы по уроку:
https://book.mql4.com/ru/programm/execution
Вылезло несколько ошибок и вопросов:
1. функция init в уроке выглядит следующим образом:

int init()                             // Специальная функция inint()
  {
   Alert("Сработала функция init() при запуске");        // Сообщение
   return(0);                                         // Выход из init()
  }

Однако при компиляции возникает такая ошибка: 'return' - function must return a value

Так и должно быть, получается в книге в примере указан ошибочный код?
Я обошел это сделав: 

return(0);
Но как по мне это костыльно. Из-за чего возникает такая ошибка? И как ее избежать?
2. Прикрепил этот "советник" к окну терминала, но кириллическая часть сообщения выводится в виде вопросов:

Сохранял файл как Unicode(Save As Unicode) не помогло.
Как сделать так что б кириллические символы отображались нормально?
3. Что не так в этой пользовательской функции(взята тоже из учебника - https://book.mql4.com/ru/programm/samples):
int myFunction()                // Описание пользовательской функции
  {
   Count++;                                         // Счетчик тиков
  }
Переменная Count объявлена глобальной в самом начале:
int Count=0;
При компиляции возникает следующая ошибка: '}' - not all control paths return a value learnEx 2 UserFunction.mq4 39 3 39 строка - закрывающаие фигурные скобки
Спасибо за помощь )
Vitalie Postolache
12315
Vitalie Postolache  

Этот учебник уже старенький, читайте Документацию или встроенную справку МЕ.

1. Это не костыльно, это нормально, чтобы функция что-то возвращала по окончании работы. Если не нужно возвращать результат работы, есть void.

2. Проблема в убунте, наcтройте её, раз уж от виндовса воротит.

3. Опять же, функции, кроме типа войд, обязаны возвращать результат вычислений (return(Count)), об этом компилятор и пишет. А так, если переменная глобальна, то вполне можно обойтись войдом и ничего не возвращать:

int Count=0;
void myFunction()                // Описание пользовательской функции
  {
   Count++;                                         // Счетчик тиков
  }
Andrei Savelyeu
11
Andrei Savelyeu  
Спасибо, советы очень помогли. Сейчас все работает должным образом.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий