Прежде, чтобы обратиться к строкам таблицы, мы использовали номера строк, автоматически проставленные языком Lua. В языке Lua существует возможность дать каждой строке таблицы уникальное имя. Имя, присваиваемое строке, называется ключ строки. Обратившись к строке таблицы по ее ключу, мы получим содержимое данной строки. Данная возможность потребуется, когда мы будем работать с заявками в терминале QUIK. Для подачи и снятия заявки в системе QUIK, необходимо отправить в терминал таблицу с определенными именами строк, каждая строка должна содержать определенное значение. Рассмотрим пример создания таблицы с ключами строк. Таблица будет содержать строки необходимые для отправки заявки в систему QUIK. Подробная работа с заявками будет рассмотрена позже. Создадим новый скрипт с именем «010 Таблицы с текстовым ключом.lua».
Создадим пустую таблицу с именем SendOrderBuy.
local SendOrderBuy = {}
Для того чтобы присвоить ключ строке таблицы, достаточно записать строку с именем таблицы далее поставить символ точку «.» и далее прописать ключ строки. Например: SendOrderBuy.ACTION.
Заполним строки таблицы и одновременно присвоим каждой строке ключ.
SendOrderBuy.ACTION = «NEW_ORDER»
Строке назначается ключ «ACTION» и присваивается строковое значение «NEW_ORDER» (строка ACTION – действие, которое необходимо выполнить терминалу QUIK, содержание строки — NEW_ORDER, указывает, что будет подана новая заявка).
SendOrderBuy.SECCODE = «SBER»
Строке назначается ключ «SECCODE» и присваивается строковое значение «SBER» (строка SECCODE – код бумаги в торговой системе, содержание строки – SBER, код бумаги акций ПАО «Сбербанк России»).
SendOrderBuy.OPERATION = «B»
Строке назначается ключ «OPERATION» и присваивается строковое значение «B» (строка OPERATION – содержит указание на вид операции покупка «B», продажа «S»).
SendOrderBuy.PRICE = «120» Строке назначается ключ «PRICE» и присваивается строковое значение «140» (строка PRICE – содержит цену инструмента, по которой будет выставлена заявка, не смотря на то, что цена имеет числовое значение, она записывается в таблицу как строковое значение – таковы требования терминала QUIK, преобразование числа в строку и наоборот рассмотрим чуть позднее).
SendOrderBuy.QUANTITY = «100»
Строке назначается ключ «QUANTITY» и присваивается строковое значение «100» (строка QUANTITY – содержит количество лотов в заявке, указывается в строковом виде).