1

Тема: Функция CreateDataSource

Всех приветствую, подскажите с помощью функции CreateDataSource - возможно ли получать данные о свечах любых доступных торговых инструментов неоткрывая их график?
А проблема такова что я использовал данную функцию в скрипте и обнаружил что для того чтобы эта функция получала данные по инструменту его график должен быть открыт, если график неоткрыт то функция ничего не получает
В Система/Настройки/Основные настройки/Программа-получение данных
Сначала стояла опция - "Исходя из из настроек открытых пользователем таблиц"
Я ее переключил в - "С учетом настроек, выбранных через пункт меню "Система/Заказ данных/Поток котировок"
и поставил галочку "Обновлять все данные после расширения списка получаемых инструментов и параметров"
Там, допустим меня интересуют акции, включил фильтр инструментов и там добавил в список получаемых ценных бумаг все имеющиеся доступными акции
Но ничего не изменилось - CreateDataSource по прежнему получает данные с открытых графиков, даже терминал перезапустил - также не помогло, пробовал и Система/Заказ данных/Перезаказать данные, со всеми галочками, перезапустил терминал - ничего не изменилось

2 (2019-01-10 10:27:02 отредактировано swerg)

Re: Функция CreateDataSource

В справке написано так:

Особенности получения значений Таблицы текущих торгов

Получение значений параметров Таблицы текущих торгов выполняется функцией getParamEx() или getParamEx2(). Актуальные значения параметров можно получить, если выполнен заказ данных. Способы выполнения заказа данных:

  • Вручную, выбрав пункт меню Рабочего места QUIK Система / Заказ данных / Поток котировок...и указав необходимые параметры и инструменты на классе;

  • При включенной настройке Рабочего места QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных») и открытой Таблице текущих торгов с необходимыми параметрами и инструментами на классе;

  • Автоматически из скрипта Lua с помощью функций ParamRequest или CreateDataSource, при включенной настройке Рабочего места QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»).

Я думаю, что подчеркнутое - это тот момент, который для вас важен.

3

Re: Функция CreateDataSource

Вот еще, кстати, нюанс про получение данных при использовании CreateDataSource:

Для получения данных через CreateDataSource необходимо, чтобы
либо был открыт соответствующий график,
либо был осуществлен заказ (данных) через вызов функции ds:SetEmptyCallback().

Т.е. просто так волшебно данные при вызове CreateDataSource не будут поступать. Конечно же, можно вызвать не только ds:SetEmptyCallback(), но и назначит полноценный callback для получения данных, если такой вариант пригодится для работы скрипта.

Обратите внимание на наличие sleep(100) в скрипте. Это указание на то, что данные "мгновенно" приходить не начнут сразу после вызова ds:SetEmptyCallback(), требуется некоторое время на их заказ/приезд с сервера. (Речь про вариант, когда в рамках одной функции вызвали CreateDataSource и тут же пытаемся получать параметры вызовом getParamEx(), например)

Пример кода:

ds = CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15) 
ds:SetEmptyCallback()
sleep(100)

4

Re: Функция CreateDataSource

swerg пишет:

Пример кода:

ds = CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15) 
ds:SetEmptyCallback()
sleep(100)

Что то не работает - если график не открыт то все равно не получает так CreateDataSource данные по инструменту
Может потому что я на демо-счете и там не дали такой роскоши?

5

Re: Функция CreateDataSource

sleep(100) не гарантирует. Наверняка дождаться подгрузки последних 100-500 баров в цикле, т.е. они не должны быть пустыми таблицами

6

Re: Функция CreateDataSource

Nordman пишет:

Что то не работает - если график не открыт то все равно не получает так CreateDataSource данные по инструменту

Что такое "не получает"? как это выглядит?
CreateDataSource выполняется без ошибок? но в коде после него не удаётся получить параметры? или как?

7

Re: Функция CreateDataSource

swerg пишет:
Nordman пишет:

Что то не работает - если график не открыт то все равно не получает так CreateDataSource данные по инструменту

Что такое "не получает"? как это выглядит?
CreateDataSource выполняется без ошибок? но в коде после него не удаётся получить параметры? или как?

Просто не выдает никаких данных по функциям  O, H, L, C, V, T, Size, без всяких сообщений об ошибках, а если график открыт то все норм

8 (2019-02-06 08:45:36 отредактировано swerg)

Re: Функция CreateDataSource

Наверное пора посмотреть на ваш скрипт.
Ну или на простой демо-пример, где проблема проявляется.

Приведите, пожалуйста, такой пример.

9

Re: Функция CreateDataSource

скажите. вот я создаю datasource и устанавливаю callback. и когда идут онлайн-сделки callback для каждой свечки по каждой новой сделке по инструменту вызывается ОДИННАДЦАТЬ раз (quik 7.20). при этом все поля свечки новые уже при первом вызове. это как бы норм?