Получение обезличенных сделок из QUIK в QLua(Lua)

Автор записи: Дмитрий (Admin)

QUIK-Qlua-poluchenie-dannyh   Для получения обезличенных сделок в QLua(Lua) служит функция обратного вызова OnAllTrade(). Эта функция вызывается терминалом QUIK каждый раз при получении новой обезличенной сделки по инструменту, на который есть подписка. Чтобы сделать подписку на нужные инструменты, необходимо пройти: "Связь" -> "Заказ всех сделок...". В окне "Выбор инструментов для заказа всех сделок" выбрать нужные инструменты и нажать кнопку "Сохранить". Так же,  в терминале должно быть открыто окно "Таблицы" -> "Таблица всех сделок", в котором должно быть настроено отображение нужных инструментов (правой кнопкой мыши в окне -> "Редактировать таблицу").

 

Пример:

-- При вызове в функцию передается новая строка таблицы, которая имеет следующие поля:
trade_num   -- Номер сделки в торговой системе (NUMBER)
flags       -- Набор битовых флагов  (NUMBER)
price       -- Цена  (NUMBER)
qty         -- Количество бумаг в последней сделке в лотах  (NUMBER)
value       -- Объем в денежных средствах  (NUMBER)
accruedint  -- Накопленный купонный доход (NUMBER)
yield       -- Доходность  (NUMBER)
settlecode  -- Код расчетов  (STRING)
reporate    -- Ставка РЕПО (%)  (NUMBER)
repovalue   -- Сумма РЕПО  (NUMBER)
repo2value  -- Объем выкупа РЕПО  (NUMBER)
repoterm    -- Срок РЕПО в днях  (NUMBER)
sec_code    -- Код бумаги заявки  (STRING)
class_code  -- Код класса  (STRING)
datetime    -- Дата и время  (TABLE)
period      -- Период торговой сессии (NUMBER)
   -- Возможные значения:
      "0" -- Открытие
      "1" -- Нормальный
      "2" -- Закрытие
 
--- Функция вызывается терминалом QUIK при получении обезличенной сделки
function OnAllTrade(alltrade)
   -- Если сделка по инструменту RTS-6.15(RIM5), то
   if alltrade.sec_code == "RIM5" then
      -- создает строку информации о сделке
      DealStr = tostring(alltrade.trade_num)
              ..";"
	      ..tostring(alltrade.datetime.year)
	      .."-"
	      ..tostring(alltrade.datetime.month)
	      .."-"
	      ..tostring(alltrade.datetime.day)
	      .." "
	      ..tostring(alltrade.datetime.hour)
	      ..":"
	      ..tostring(alltrade.datetime.min)
	      ..":"
	      ..tostring(alltrade.datetime.sec)
	      .."."
	      ..tostring(alltrade.datetime.mcs)
	      ..";"
	      ..tostring(alltrade.price)
	      ..";"
	      ..tostring(alltrade.qty)
	      ..";"
	      ..tostring(alltrade.flags); -- "1" - ПРОДАЖА, "2" - КУПЛЯ
   end;
end;
-- В результате, при каждой новой сделке по RTS-6.15 в переменной DealStr будет строка, следующего вида:
   -- "1074452502;2015-3-24 16:19:55.710000;85940;1;2"
   -- Такую строку удобно, в последствии, передавать в C# и разделять на элементы

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!