Массивы — это одна из основ программирования. Они широко используются при работе с графиками и индикаторами. Давайте разберемся, что такое массивы и чем они могут быть полезны в 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.
Существует несколько способов заполнения массива значениями. Наиболее популярными являются ручной и использование циклов (например, 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]); } }
Результат выполнения скрипта выглядит следующим образом: