Найти в Дзене
MQL-программирование

Синтаксис языка программирования MQL. Переменные

Оглавление

Начиная с билда 600 язык программирования MQL4 полностью переработан и достиг уровня MQL5 - теперь писать торговых роботов на MQL4/MQL5 можно в единой среде разработке MetaEditor и используя единые стиль, библиотеки и инструменты отладки.

Синтаксис языка MQL подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков программирования.

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

Переменные

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

Константы - это также, как и переменные, именованные объекты, но они, в отличие от переменных, не могут изменять своего значения. Другими словами, присвоив один раз значение константе, это значение остается неизменным вплоть до завершения работы программы.

Давайте рассмотрим на примере, как можно объявить переменную в программе, и различные способы присвоения ей значений.

Рис. 1. Объявление переменных и присваивание им значений.
Рис. 1. Объявление переменных и присваивание им значений.

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

Имя переменной может состоять только из латинских букв, цифр и знака подчеркивания "_". Имя переменной не может начинаться с цифры. Регистр символов имеет значение, так, например, переменные TrendUp, trendUp и trendup - это три различные переменные.

Инициализация переменной - это присваивание значения переменной при ее объявлении. В нашем примере выше, переменные message и TendUp были инициализированы соответствующими значениями. Переменным count и currentPrice были присвоены значения позднее, по ходу выполнения программы.

Объявление и инициализация переменных может находиться в любом месте программы, но обязательно перед ее первым использованием в программы. Считается хорошим тоном программирования объявлять переменные непосредственно перед их использованием. Это позволяет избежать постоянного перемещения по коду программы с целью найти объявление переменной, и позволяет более эффективно использовать память компьютера.

Объявление константы отличается от объявления переменной тем, что перед типом данных указывается ключевое слово const и константа обязана быть проинициализированна при объявлении.

Рис. 2. Объявление константы.
Рис. 2. Объявление константы.

Комментарии

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

В программах используются два вида комментариев:

  • однострочные;
  • многострочные.

Однострочные комментарии начинаются с двух символов косой черты // и распространяют свое действие до конца текущей строки. Многострочные комментарии начинаются с символов косой черты и звездочки, без пробелов между ними /* и заканчиваются обратной последовательностью - звездочкой и символом косой черты: */

Рис. 3. Пример использования однострочных и многострочных комментариев.
Рис. 3. Пример использования однострочных и многострочных комментариев.

Переменные ложных типов данных

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

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

Специально для таких случаев был введен тип данных структура, который позволяет логически объединить несколько переменных различных типов в единое целое.

Рис. 4. Объявление переменной составного типа.
Рис. 4. Объявление переменной составного типа.

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

Также, как и с базовыми типами данных, переменных с типом объявленной структуры (экземпляров структуры) может быть в программе неограниченное количество.

Для получения доступа к переменным, объявленным внутри структуры (членам экземпляра структуры), используется символ точка, за которым без пробела указывается имя объявленной внутри структуры переменной.

Массивы

Если требуется использовать в программе множество значений одного типа данных (например, целочисленного или типа структуры), то вместо объявления множества переменных одного типа удобнее и более логично использовать массивы.

Массив - это именованная совокупность элементов одного типа.

Самым наглядным примером массивов можно назвать совокупность всех баров в окне терминала MetaTrader. Так как все бары имеют одни и те же значения - цену открытия, цену закрытия, максимум, минимум и объем, то целесообразно хранить информацию обо всех барах в одном массиве.

Рис. 5. Объявление массивов.
Рис. 5. Объявление массивов.

Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива начинается с 0. Последний элемент одномерного массива имеет номер на 1 меньший, чем размер массива, то есть обращение к последнему элементу массива из 50 целых чисел будет выглядеть как bars[49]. То же самое относится и к многомерным массивам – индексация одного измерения производится от 0 до размер измерения-1. Последний элемент двумерного массива из примера будет выглядеть как prices[4][9].

Заключение

Мы рассмотрели примеры объявления и инициализации переменных и констант базовых типов данных, создание и объявление переменных пользовательских составных типов, а также одно- и многомерных массивов.