Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие начинающие MQL программисты. В данной статье мы с Вами рассмотрим одну из важных тем в MQL4 — массивы.
Что такое массивы в MQL4 и их разновидности
Итак, ранее мы с вами уже изучали переменные в MQL4. На всякий случай, напомню:
int x;
то есть, этой строкой мы объявили переменную. Имя у нее «x» и тип – int (целочисленная). Этим мы дали команду компьютеру зарезервировать одну ячейку для данной переменной x. Эта ячейка имеет определенный размер, соответствующий типу int.
Теперь перейдем к теме массивов. Массив в MQL4, в отличие от простых переменных, это уже целый набор из ячеек с одним именем и с одним типом. Например:
int x[10];
этой строкой мы с Вами объявили массив. Он имеет имя x, тип int, и состоит уже из 10 ячеек (в отличие от обычных переменных, которые состоят из 1 ячейки). Когда в памяти ПК используется 1 ячейка — это просто обычная переменная. Когда же несколько ячеек памяти — это уже массив.
Самый простой — это одномерный массив, собственно то, что мы рассматривали на примере выше. В этом примере он состоит из одной строки, в которой 10 ячеек, визуально это можно изобразить так:
Идем дальше — двумерный массив. Здесь, кроме строк добавляются еще и столбцы:
Двумерный массив в MQL4 записывается следующим образом:
int x[10,10];
этой строчкой мы с Вами объявили двумерный массив. Он состоит из десяти строк и десяти столбцов, то есть всего у нас получилось 100 ячеек.
Также, в 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 ячейки. Итого девять ячеек. Визуально это можно изобразить так:
Идем далее, присвоим каждой ячейки конкретное значение. При этом, координаты ячейки прописываем в квадратных скобках, а их значения после знака равно:
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