Сервисные функции QLua(Lua)

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

Qlua-основы
isConnected()   - возвращает 1, если QUIK подключен к серверу и 0, если не подключен

getScriptPath()   - возвращает путь, по которому находится скрипт, без последнего обратного слэша ("\"), например, "C:\Program Files (x86)\Info\MyLua"

getInfoParam()   - возвращает значение параметра из окна:"Связь" -> "Информационное окно..."
Смотреть полностью...

Приведение типов в QLua(Lua)

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

Qlua-основы
Для приведения типов в QLua(Lua) служат всего 2 функции:

tostring()   - принимает любой параметр и конвертирует его в строку в подходящем формате, для применения конкретного формата, используйте функцию string.format

tonumber()   - пытается преобразовать переданный параметр в число, иначе возвращает nil

Демо-доступ QUIK для тестирования скриптов и роботов на QLua(Lua)

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

QUIK-demo-dostup
Для того, чтобы не заниматься отладкой и тестированием скриптов, или роботов на реальном счете, рекомендуется получить демо-доступ к терминалу QUIK.
Для этого, перейдите по этой ссылке на сайт разработчика. Впишите свои данные в форму, как показано на рисунке ниже:Смотреть полностью...

Получение данных из таблиц QUIK в QLua(Lua)

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

QUIK-Qlua-poluchenie-dannyh Для получения данных из таблиц терминала QUIK удобно пользоваться 3-мя функциями: getItem(), getNumberOf() и getParamEx().

Пример:

-- Перебирает строки таблицы "Позиции по клиентским счетам (фьючерсы)", ищет Текущие чистые позиции по инструменту "RIH5"
for i = 0,getNumberOf("FUTURES_CLIENT_HOLDING") - 1 do
   -- ЕСЛИ строка по нужному инструменту И чистая позиция не равна нулю ТО
   if getItem("FUTURES_CLIENT_HOLDING",i).sec_code == "RIH5" and getItem("FUTURES_CLIENT_HOLDING",i).totalnet ~= 0 then
      -- ЕСЛИ текущая чистая позиция > 0, ТО открыта длинная позиция (BUY)
      if getItem("FUTURES_CLIENT_HOLDING",i).totalnet > 0 then
         IsBuy = true;
         BuyVol = getItem("FUTURES_CLIENT_HOLDING",i).totalnet;	-- Количество лотов в позиции BUY
      else   -- ИНАЧЕ открыта короткая позиция (SELL)
         IsSell = true;
         SellVol = math.abs(getItem("FUTURES_CLIENT_HOLDING",i).totalnet); -- Количество лотов в позиции SELL
      end;
   end;
end;

Далее перечислены таблицы, их идентификаторы и поля, к которым можно обращаться:Смотреть полностью...

Получение стакана из QUIK в QLua(Lua)

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

QUIK-Qlua-poluchenie-dannyh
Для получения стакана в QLua(Lua) служит функция обратного вызова OnQuote(). Эта функция вызывается терминалом QUIK при получении изменения стакана котировок. Для получения данных самого стакана служит функция getQuoteLevel2().

В терминале должен быть открыт стакан по нужному инструменту!!!

 

Пример:Смотреть полностью...

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

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

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

 

Пример:Смотреть полностью...

Математические функции в QLua(Lua)

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

Qlua-основы
Стандартные арифметические операции:
"+" - сложение,
"-" - вычитание,
"/" - деление,
"*" - умножение,
"%" - остаток от деления (5%2 == 1).

   math.abs (x) -- Модуль x.

   math.acos(x) -- Возвращает арккосинус x

   math.asin(x) -- Возвращает арксинус x (в радианах).

   math.atan(x) -- Возвращает арктангенс x (в радианах).

   math.atan2(x, y) -- Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. (Также корректно обрабатывает случай когда y равен нулю.)Смотреть полностью...

Дата/время в QLua(Lua)

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

Qlua-основы
Материал статьи взят здесь: http://www.bot4sale.ru/blog-menu/qlua/spisok-statej/368-lua-time.html

Дата/время в QLua(Lua) может быть представлено либо в виде секунд, прошедших с полуночи 1 января 1970 года, либо в виде таблицы, имеющей следующие поля:

   year - год (четыре цифры)
   month - месяц (1 – 12)
   day - день (1 – 31)
   hour - час (0 – 23)
   min - минуты (0 – 59)
   sec - секунды (0 – 59)
   wday - день недели (1 - 7), воскресенью соответствует 1
   yday - день года
   isdst - флаг дневного времени суток, тип booleanСмотреть полностью...

Функции работы со строками в QLua(Lua)

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

Qlua-основы
string.byte

S = "Текст";
string.byte(S, i); -- Возвращает числовой код символа в строке по индексу i
   -- i (необязательный параметр) - начальный индекс (по умолчанию, 1)
S:byte(i); -- Эквивалентно
 
string.byte(S, 1); -- Вернет 210
string.byte(S, 2); -- Вернет 229
string.byte(S, 3); -- Вернет 234
string.byte(S, 4); -- Вернет 241
string.byte(S, 5); -- Вернет 242

Смотреть полностью...