Получение в QLua(Lua) данных из графиков и индикаторов

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

QUIK-Qlua-poluchenie-dannyhЧтобы получить доступ к графику(не индикатору) какого-либо инструмента нужно создать источник данных при помощи функции CreateDataSource().
ВАЖНО!!! Для получения новых данных, кроме тех, что уже есть в открытом графике на текущий момент (тем более, если он не открыт), требуется использовать одну из следующих функций: SetUpdateCallback(), или SetEmptyCallback(), о которых будет написано ниже.

Описание функции CreateDataSource()
-- Функция предназначена для создания таблицы Lua и позволяет работать со свечами, полученными с сервера QUIK, а также реагировать на их изменение.
ds, Error = CreateDataSource (class_code, sec_code, interval [, param]);
   -- Параметры:
      -- class_code - (STRING) код класса, например "SPBFUT"
      -- sec_code   - (STRING) код бумаги, например "RIZ5"
      -- interval   - (NUMBER) константа, обозначающая тайм-фрейм графика, например INTERVAL_M5 (полный список: https://quikluacsharp.ru/qlua-osnovy/spisok-konstant-tajm-frejmov-grafikov/)
      -- param      - (STRING) необязательный параметр. Если параметр не задан, то заказываются данные на основании таблицы всех сделок, если задан – данные по этому параметру, например "BID" (возможные параметры смотрите ниже)
   -- Возвращаемые значения:
      -- ds         - (TABLE) таблица с данными по свечам графика
      -- Error      - (STRING) строка ошибки в случае неудачной попытки получить доступ к данным (тогда ds будет nil)
 
-- Если график, к которому нужно подключиться не открыт в терминале, то данные заказываются с сервера, на их получение нужно время,
-- по этому, рекомендуется добавлять вот такое ожидание, прежде, чем обращаться к ds:
-- Ждет, пока данные будут получены с сервера (на случай, если такой график не открыт)
while (Error == "" or Error == nil) and ds:Size() == 0 do sleep(1) end
if Error ~= "" and Error ~= nil then message("Ошибка подключения к графику: "..Error) end
 
-- Примеры (одновременно можно подключаться к нескольким источникам данных):
ds1 = CreateDataSource("SPBFUT", "RIU3", INTERVAL_M1, "last");
ds2 = CreateDataSource("QJSIM", "SBER", INTERVAL_M1);
ds3, Error = CreateDataSource("SPBFUT", "RIU3", INTERVAL_M1, "bid");
if ds3 == nil then message('Ошибка подключения: '..Error); end;
Смотреть полностью...

Список констант тайм-фреймов графиков

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

Qlua-основы

INTERVAL_TICK -- (0)       Тиковые данные
INTERVAL_M1   -- (1)       1 минута
INTERVAL_M2   -- (2)       2 минуты
INTERVAL_M3   -- (3)       3 минуты
INTERVAL_M4   -- (4)       4 минуты
INTERVAL_M5   -- (5)       5 минут
INTERVAL_M6   -- (6)       6 минут
INTERVAL_M10  -- (10)      10 минут
INTERVAL_M15  -- (15)      15 минут
INTERVAL_M20  -- (20)      20 минут
INTERVAL_M30  -- (30)      30 минут
INTERVAL_H1   -- (60)      1 час
INTERVAL_H2   -- (120)     2 часа
INTERVAL_H4   -- (240)     4 часа
INTERVAL_D1   -- (1440)    1 день
INTERVAL_W1   -- (10080)   1 неделя
INTERVAL_MN1  -- (23200)   1 месяц