В языке программирования Lua, массивы данных представлены в виде таблиц. Под массивом данных подразумевается совокупность данных объединенных по какому-то признаку. Например, график цены инструмента, это массив данных в котором содержаться данные Open, High, Low, Close расположенные в столбцы, а строки соответствуют времени. Таблицы в Lua – это обычная таблица, например, как в Excel, имеющая нумерацию столбцов и нумерацию строк, вместо номеров, столбцам и строкам могут быть присвоены имена.
Таблицы нам потребуются, когда мы будем работать с графиком цены инструментов. Все цены инструментов и значения индикаторов в торговом терминале QUIK, хранятся в таблицах. Создадим новый файл скрипта и именем «008 Таблицы цикл for.lua»Создадим пустую таблицу.
Таблица создается, так же как и переменная, за исключением того, что после имени следует знак присвоения и фигурные скобки.

Теперь у нас есть пустая таблица с именем «Table», не имеющая строк и столбцов, если обратиться к любой строке таблицы, получим результат nil.

Заполнить таблицу значениями, можно несколькими способами.

Первый способ. Объявим новую таблицу с именем «TableNum» и при объявлении таблицы поместить в ее ячейки нужные значения, например:

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

Первый столбец это индекс строки, второй столбец это значение в строке. Данная таблица имеет только один столбец. Мы везде будем использовать таблицы, состоящие из одного столбца. В языке Lua есть возможность создавать таблицы с несколькими столбцами, но нам это не пригодится в данном курсе.

Второй способ. При объявлении таблицы записать в ее ячейки значения переменных, например, добавим в наш код пять локальных переменных с именами «a»,»b», «c», «d», «e» и запишем значения переменных в таблицу TableVar.

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

Третий способ. Присвоить каждой строке таблицы определенные значения используя цикл for.

Числовой цикл for.

Числовой цикл for имеет вид:

for i = exp1, exp2, exp3 do

<код>

end

Переменная «i» в цикле for является управляющей переменной. Цикл будет выполнен от значения exp1 до значения exp2 с шагом значения exp3. Например, значение exp1 = 1, exp2 = 10, exp3 = 1, т.е. начальное значение i = 1, максимальное значение i = 10, после каждой итерации переменная «i» увеличивается на значение 1.

Создадим таблицу с именем TableFor и заполним ее строки значениями от 1 до 10, используя цикл for. Чтобы обратиться к определенной строке таблицы, необходимо обратиться к самой таблице и далее указать номер строки, к которой обращаемся, номер строки указывается в квадратных скобках [] после имени таблицы. Например, чтобы обратиться к строке 3 таблицы TableFor, следует записать код TableFor[3].

Разберем работу примера по шагам:

1.Строка for i = 1, 10, 1 do, переменная «i» имеет значение 1.

2.Выполнение кода переходит на строку TableFor[i] = i. В строку таблицы TableFor под номером «i» (TableFor[i]), присваивается значение переменной «i» (TableFor[i] = i, i = 1).

3.В цикле только одна строка и получается, что код в теле цикла for закончился, и цикл переходит снова на строку for i = 1, 10, 1 do, для увеличения переменной «i» на заданный шаг. После увеличения переменной «i» на шаг равный 1 переменная i = 2. Далее проверяется условие, меньше ли значение переменной «i», чем максимальное установленное значение 10. Условие выполняется 2 < 10 и цикл продолжает свою работу выполняя код в теле цикла.

4.Далее снова выполнение кода переходит на строку TableFor[i] = i. В строку таблицы TableFor под номером «i» (TableFor[i]), присваивается значение переменной «i» (TableFor[i] = i, i = 2).

5.Выполнение цикла прекращается, когда переменная «i» становиться равна 11, поскольку по условию в строке for i = 1, 10, 1 do переменная «i» не должна быть более 10.

В результате выполнения данного цикла, в таблице TableFor появятся десять строк содержащие значения от 1 до 10. Один проход цикла от начала до конца называется итерацией, в нашем примере было 10 итераций.

Проверим, как заполнилась таблица TableFor и выведем на экран значение в ячейках таблицы. В данном примере мы знаем количество строк в таблице, но чаще всего происходит так, что нам неизвестно точное количество строк, для того чтобы узнать количество строк в таблице используем оператор # (решетка), и далее имя таблицы.Выведем на экран количество строк в таблице TableFor. Запишем, в наш код строку с выводом количества строк в таблице.

Выполним скрипт.

Это ознакомительная часть курса, что бы просмотреть полный курс, пожалуйста оплатите подписку, подписка действует 2 года. Помимо доступа к полному тексту курса, предоставляются все коды скриптов и вспомогательные файлы. Первые три раздела предоставляются бесплатно в полном объеме. Всем кто ранее покупал коды скриптов доступ будет предоставлен бесплатно, пожалуйста пришлите запрос с Email на который Вам были направлены коды.