Прежде, чтобы обратиться к строкам таблицы, мы использовали номера строк, автоматически проставленные языком 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 – содержит количество лотов в заявке, указывается в строковом виде).

В результате получилась таблица следующего вида:

Первый столбец ключи строк, второй столбец значения строк.

Рассмотрим еще один способ назначения ключей к строкам и заполнение этих строк.

Заполнить строки таблицы и назначить ключи к строкам, можно при объявлении таблицы. Объявим новую таблицу с именем SendOrderSell, назначим строкам ключи и заполни строки значениями.

При данном виде назначения ключей к строкам обязательное условие присвоение любого значения в строку.

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

Для того чтобы изменить значение в строке таблицы, необходимо присвоить строке с определенным ключом новое значение, например:

SendOrderBuy.SECCODE = «GAZP»

Также можно присвоить строке значение из переменной, например:

Создадим переменную, содержащую код акций ОАО «НК «Роснефть»

local Instr = «ROSN»

Присвоим значение переменной Instr в строку с ключом «SECCODE», таблицы SendOrderBuy.

SendOrderBuy.SECCODE = Instr

Выведем на экран содержание строки с ключом «SECCODE» из таблицы SendOrderBuy.

print(«Торговый инструмент изменен на: «, SendOrderBuy.SECCODE)

Когда мы обращается к строке таблицы по ее ключу, то язык Lua проходит во всем строкам таблицы и находит указанный ключ, если указанного ключа в таблице нет, то возвращается значение nil. Таким образом, нет никакой разницы, в какой последовательности были записаны строки. Работа с таблицами и ключами к строкам является очень важным моментом при отправке заявок в терминал QUIK.

Вы можете получить готовые коды скриптов с этого сайта.
Не тратьте свое время на ввод символов с клавиатуры, потратьте его лучше на создание своих собственных торговых роботов из блоков уже готового кода.