Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие начинающие MQL программисты. В данной статье мы с Вами рассмотрим одну из важных тем в MQL4 — массивы.

 

Что такое массивы в MQL4 и их разновидности

Итак, ранее мы с вами уже изучали переменные в MQL4. На всякий случай, напомню:

int x;

то есть, этой строкой мы объявили переменную. Имя у нее «x» и тип – int (целочисленная).  Этим мы дали команду компьютеру зарезервировать одну ячейку для данной переменной x. Эта ячейка имеет определенный размер, соответствующий типу int.

Теперь перейдем к теме массивов. Массив в MQL4, в отличие от простых переменных, это уже целый набор из ячеек с одним именем и с одним типом. Например:

int x[10];

этой строкой мы с Вами объявили массив. Он имеет имя x, тип int, и состоит уже из 10 ячеек (в отличие от обычных переменных, которые состоят из 1 ячейки). Когда в памяти ПК используется 1 ячейка — это просто обычная переменная. Когда же несколько ячеек памяти — это уже массив.

Самый простой — это одномерный массив, собственно то, что мы рассматривали на примере выше. В этом примере он состоит из одной строки, в которой 10 ячеек, визуально это можно изобразить так:Одномерный массив в MQL4

 

Идем дальше — двумерный массив. Здесь, кроме строк добавляются еще и столбцы:

двумерный массив

 

Двумерный массив в MQL4 записывается следующим образом:

int x[10,10];

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

Также, в MQL4 имеются еще и многомерные массивы:

Многомерный массив в MQL4

 

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

 

Практическое применение одномерных и двумерных массивов

Давайте создадим (объявим) в «шапке» советника одномерный массив int с именем mass. Он у нас будет состоять из двух ячеек:

int Mass[2];

 

Теперь идем в блок OnTick и присвоим нулевой (первой) ячейке значение 1, а первой (второй) ячейке значение 2:

Mass[0]=1;
Mass[1]=2;

 

Почему я так пишу — нулевой (первой), первой (второй)? Потому что это у людей по логике счет начинается с 1: 1, 2, 3. А в программировании, и в том числе в MQL4 – счет начинается с 0. То есть — 0, 1, 2, 3. Этот момент очень важно запомнить раз и навсегда.

Итак, возвращаемся к нашему примеру — выведем наш массив через функцию Comment() в том же блоке OnTick:

Comment (
"ячейка 1 - ",Mass[0],"\n"
"ячейка 2 - ",Mass[1]
);

 

Компилируем. Что у нас по логике должно сейчас получиться? У нас должен Сomment вывести 1 и 2, потому что мы нулевой ячейке задавали значение 1, а первой ячейке задавали значение 2. Смотрим:

вывод значений одномерного массива в терминале

 

Теперь давайте изменим значения ячеек на 5  и 10:

Mass[0]=5;
Mass[1]=10;

 

Компилируем, смотрим что получилось на графике:

вывод значений одномерного массива в терминале

 

Мы с Вами рассмотрели одномерный массив в MQL4. Теперь давайте рассмотрим двумерный:

int Mass2[3,3];

Что мы сейчас сделали? Мы объявили целочисленный массив. Имя: Mass2. Он двумерный, потому что в квадратных скобках через запятую заданы два числа. То есть, наш массив имеет три строчки, а в каждой строчке у нас по 3 ячейки. Итого девять ячеек. Визуально это можно изобразить так:

Двумерный массив MQL4

 

Идем далее, присвоим каждой ячейки конкретное значение. При этом, координаты ячейки прописываем в квадратных скобках, а их значения после знака равно:

Mass2[0,0]=1;
Mass2[0,1]=2;
Mass2[0,2]=3;
Mass2[1,0]=4;
Mass2[1,1]=5;
Mass2[1,2]=6;
Mass2[2,0]=7;
Mass2[2,1]=8;
Mass2[2,2]=9;

Все это теперь выведем через Comment:

программирование двумерного и одномерного массивов

 

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

глобальное объявление переменной массива

 

Компилируем, проверяем результат:

отображение одномерного и двухмерного массивов на графике

 

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

 

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

 

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

 

На этом в данной статье, все. Благодарю за внимание. В следующей статье мы рассмотрим оператор принудительного окончания циклов в MQL4 — break.

Другие статьи по теме Программирование на MQL4 Вы можете просмотреть в данном содержании практических уроков по MQL.

 

Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

 

С уважением, Антон.

Обучающий Форекс портал SanGReal Invest



Вам это может быть интересно. Другие статьи нашего обучающего портала: