Чтобы получить доступ к графику(не индикатору) какого-либо инструмента нужно создать источник данных при помощи функции CreateDataSource().
ВАЖНО!!! Для получения новых данных, кроме тех, что уже есть в открытом графике на текущий момент (тем более, если он не открыт), требуется использовать одну из следующих функций: SetUpdateCallback(), или SetEmptyCallback(), о которых будет написано ниже.
-- Функция предназначена для создания таблицы 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; |
-- Функция предназначена для создания таблицы 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;