При использовании функции getParamEx (class_code, sec_code, param_name) для получения параметров param_name из таблицы текущих торгов надо задавать class_code и sec_code. Приходится для sec_code создавать массив километровой длины типа sec_code ={"ALRS","AFLT", ...,"FEES"}. А если список акций в таблице текущих торгов меняется то этот массив приходится тоже менять.
Вопрос: можно ли просто прочитать все строки таблицы текущих торгов подряд без задания class_code и sec_code и определить параметры param_name?
Виктор Столетов написал: Вопрос: можно ли просто прочитать все строки таблицы текущих торгов подряд без задания class_code и sec_code и определить параметры param_name?
Такой возможности не предусмотрено.
Цитата
Виктор Столетов написал: Приходится для sec_code создавать массив километровой длины типа sec_code ={"ALRS","AFLT", ...,"FEES"}.
Есть функция getClassSecurities которая вернет список инструментов в классе. Еще есть getClassesList которая вернет список классов
Виктор Столетов написал: Вопрос: можно ли просто прочитать все строки таблицы текущих торгов подряд без задания class_code и sec_code и определить параметры param_name?
Такой возможности не предусмотрено.
Цитата
Виктор Столетов написал: Приходится для sec_code создавать массив километровой длины типа sec_code ={"ALRS","AFLT", ...,"FEES"}.
Есть функция getClassSecurities которая вернет список инструментов в классе. Еще есть getClassesList которая вернет список классов
А как посмотреть только те инструменты, которые я лично вывел в таблицу текущих торгов, а не все, которые потоком идут через заказ данных?
Александр М написал: А как посмотреть только те инструменты, которые я лично вывел в таблицу текущих торгов, а не все, которые потоком идут через заказ данных?
Sergey Gorokhov написал: Есть функция getClassSecurities которая вернет список инструментов в классе. Еще есть getClassesList которая вернет список классов
Спасибо за рекомендацию. Можно еще вывести таблицу текущих торгов через DDE-сервер в файл excel. (в меню «действия» выбрать «вывод через DDE-сервер). Затем в файле удалить лишние столбцы, оставить только столбцы кодов бумаги и кодов класса (если код класса один, то столбец кодов класса тоже удалить). Дальше сохранить файл как текстовый с расширением .txt. Теперь просто считать столбец кодов бумаги в массив, предварительно открыв файл: i=1 for line in f:lines() do sec_code[i]=tostring(line) i=i+1 end
Тоже данный вопрос очень интересует, как из открытой таблицы текущих торгов получить список классов и кодов бумаг в ней. А если открыта не одна таблица, а несколько, и инструменты в них разные, то как получить эти данные по каждой таблице? Вообще странно что не предусмотрено такой возможности, тем более что активно продвигается мысль "...для оптимизации входящего трафика поставьте в настройках галку "получать данные исходя из текущих настроек открытых таблиц" ...." Может у кого нибудь есть идеи как "достучаться" до таблицы текущих торгов? - нужны классы из нее и коды бумаг. Может функции getNumberOf и getitem можно применить?
V Y, Вы сами ответили на свой вопрос. Такой возможности нет. А если точнее, то в QLUA вообще нет ни одной функции работающей напрямую с таблицами интерфейса терминала QUIK (кроме функций работы с LUA таблицами). Все функции, по получению данных, работают не самими таблицами интерфейса, а с хранилищем данных из которого таблицы интерфейса берут значения. Хранилище данных одно, а таблиц может быть много. Именно по этой причине, фильтры в таблицах интерфейса не влияют на данные в QLUA. А влияет только заказ данных. Если что-либо заказало данные, то и в QLUA они есть, а если нет то нет. И по сути, не важно кто именно закажет данные, сам терминал или через QLUA, ведь хранилище то одно.
Да, жаль конечно, что "в QLUA вообще нет ни одной функции работающей напрямую с таблицами интерфейса терминала QUIK". И, если я правильно понял, прочитать/получить в QLUA фильтр открытой таблицы Текущих торгов тоже нет никакой возможности?
Sergey Gorokhov написал: Все функции, по получению данных, работают не самими таблицами интерфейса, а с хранилищем данных из которого таблицы интерфейса берут значения. Хранилище данных одно, а таблиц может быть много. Именно по этой причине, фильтры в таблицах интерфейса не влияют на данные в QLUA.
Немного запутался: - означает ли это,что если например, в терминале Quik у меня открыта только одна таблица (предположим Текущих торгов) с одной единственной строкой, то в хранилище будут данные только по этой бумаге, и функция Qlua, например, getNumberOf(securities) -- //таблица "Инструменты"// вернет количество строк - 1 ?
Спасибо за разъяснение, - почти разобрался, но снова все запуталось. Помогите навести порядок в голове. Итак, если в хранилище находятся данные которые Quik заказывает исходя из всех своих открытых таблиц, запросов на данные из Qlua и т.д. И если в Quik открыта одна единственная таблица Текущих торгов с одной единственной строкой, и запущен только один скрипт с единственной функцией getNumberOf(securities) -- //таблица "Инструменты"//, то почему эта функция вернет не 1, - ведь фактически заказываются данные только по одной бумаге/инструменту?
V Y, Потому что описания инструментов (securities) заказываются всегда и безусловно. Связано это с тем, что нельзя отфильтровать ненужные инструменты, не зная какие инструменты вообще есть. Грубо говоря, Вы можете выбрать нужные и ненужные инструменты из списка, именно потому что терминал их записал в таблицу securities. Иначе бы не было из чего выбирать.
Sergey Gorokhov, То есть получается таблица securities, а также GetClassesList "обращаются к брокеру" и возвращают те списки инструментов и классов которые брокер может предоставить? Как тогда можно узнать какие данные терминал заказал (подписался)?
V Y написал: То есть получается таблица securities, а также GetClassesList "обращаются к брокеру" и возвращают те списки инструментов и классов которые брокер может предоставить?
Да верно.
Цитата
V Y написал: Как тогда можно узнать какие данные терминал заказал (подписался)?
Николай Камынин, Эта идея не сработала, по крайней мере для Quik Junior, В Quik открыта одна таблица Текущих торгов с одной строкой. Из скрипта получаю таблицу securities. возвращается 3909 записей, и не в одной шаг цены и/или размер лота не равны нулю.
V Y написал: Николай Камынин , Эта идея не сработала, по крайней мере для Quik Junior, В Quik открыта одна таблица Текущих торгов с одной строкой. Из скрипта получаю таблицу securities. возвращается 3909 записей, и не в одной шаг цены и/или размер лота не равны нулю.
Я говорб всегда о боевом сервере, а на учебном вообще ничего не надо смотреть. Он просто так для тестирования буратин.
Sergey Gorokhov, Добрый день! Еще один вопрос появился: Я правильно понял, что в скрипте функция onAllTrade вернет мне информацию только по тем бумагам которые присутствуют в открытой в данный момент в терминале таблице (таблицах) обезличенных сделок? И, если бумага не присутствует в этой таблице, или таблица вообще закрыта, то нет никакой возможности, например через заказ данных из скрипта, получить в скрипте, используя onAllTrade, данные по интересующей сделке ???
V Y написал: Я правильно понял, что в скрипте функция onAllTrade вернет мне информацию только по тем бумагам которые присутствуют в открытой в данный момент в терминале таблице (таблицах) обезличенных сделок?
OnAllTrade возвращает информацию об обезличенных сделках, по тем бумагам, по которым Вы эту информацию закажите. И совершенно не важно как именно произойдет этот заказ. Через открытие таблицы, тиковый график или через CreateDataSource с интервалом INTERVAL_TICK