Массивы в MQL4: что они из себя представляют?

Массивы — это одна из основ программирования. Они широко используются при работе с графиками и индикаторами. Давайте разберемся, что такое массивы и чем они могут быть полезны в MQL4. Чтобы понять концепцию массива, вы уже должны хорошо разбираться в переменных, типах данных и операторах.

Массивы являются индексированными последовательностями данных одного типа.

Это могут быть:

  • Массив целочисленных данных — 1, 2, 3, 4, 5, 6, 7, 8, 9.
  • Массив строковых данных — «a», «b», «c», «d», «e», «f» или «Александр», «Иван», «Андрей», «Петр».

Поскольку массивы являются переменными, их необходимо объявить. Для этого нужно добавить квадратные скобки после имени переменной. К примеру, [i], где i — размер массива, то есть, сколько элементов он содержит. Например:

  • int i [5] — массив, который содержит до 5 целых чисел.
  • string s [10] — массив, который содержит до 10 строк.

Элементы идентифицируются в массиве с помощью индекса. Поначалу это может сбивать с толку, но вам нужно привыкнуть к этому, поскольку большинство языков программирования используют один и тот же принцип: массивы начинают отсчитывать свои элементы от 0. Первый элемент массива расположен с индексом 0. В массиве с десятью элементами последний элемент будет расположен в позиции 9.

массивы в MQL4

Существует несколько способов заполнения массива значениями. Наиболее популярными являются ручной и использование циклов (например, for или while).

Мы можем вручную вставлять значения в массив, записав последовательность значений между {} и разделив каждое значение с помощью запятой как в этом примере:

int i [10] = {4,6,8,10,13,17,23,42,88,64};

Мы также можем вставить одно значение в определенную позицию, используя индекс и значение:

i [5] = 88 — мы записываем значение 88 в массиве по индексу 5 (помните, индекс 5 — это 6-я позиция).

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

Посмотрим на простой пример, где мы сканируем строковый массив и печатаем его значения.

//+------------------------------------------------------------------+
//|                                                        Test1.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Александр Паркер."
#property link      "https://traderblog.net/"
#property version   "1.00"
#property strict
 
string s[10]={"Александр", "Иван", "Андрей", "Патер", "Дмитрий", "Сергей", "Константин", "Михаил", "Николай", "Евгений"};
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   //Мы определяем цикл for, где мы прописываем, что для значения i, которое идет от 0 до 9, мы выводим значения s в индексе i
   //s увеличивается на 1 при каждом выполнении
   for(int i=0; i<=9; i++)
   {
      Alert(s[i]);
   }
 
}

Результат выполнения скрипта выглядит следующим образом:

пример работы массива в MQL4