При использовании функции 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?
Пользователь
Сообщений: Регистрация: 23.01.2015
06.03.2017 05:15:14
Здравствуйте,
Цитата
Виктор Столетов написал: Вопрос: можно ли просто прочитать все строки таблицы текущих торгов подряд без задания 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 которая вернет список классов
А как посмотреть только те инструменты, которые я лично вывел в таблицу текущих торгов, а не все, которые потоком идут через заказ данных?
- Роботы и индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
06.03.2017 11:39:27
Цитата
Александр М написал: А как посмотреть только те инструменты, которые я лично вывел в таблицу текущих торгов, а не все, которые потоком идут через заказ данных?
Такой возможности не предусмотрено.
Пользователь
Сообщений: Регистрация: 19.11.2016
06.03.2017 17:54:22
Цитата
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
Пользователь
Сообщений: Регистрация: 28.03.2017
28.03.2017 14:12:50
Тоже данный вопрос очень интересует, как из открытой таблицы текущих торгов получить список классов и кодов бумаг в ней. А если открыта не одна таблица, а несколько, и инструменты в них разные, то как получить эти данные по каждой таблице? Вообще странно что не предусмотрено такой возможности, тем более что активно продвигается мысль "...для оптимизации входящего трафика поставьте в настройках галку "получать данные исходя из текущих настроек открытых таблиц" ...." Может у кого нибудь есть идеи как "достучаться" до таблицы текущих торгов? - нужны классы из нее и коды бумаг. Может функции getNumberOf и getitem можно применить?
Пользователь
Сообщений: Регистрация: 23.01.2015
29.03.2017 04:59:12
V Y, Вы сами ответили на свой вопрос. Такой возможности нет. А если точнее, то в QLUA вообще нет ни одной функции работающей напрямую с таблицами интерфейса терминала QUIK (кроме функций работы с LUA таблицами). Все функции, по получению данных, работают не самими таблицами интерфейса, а с хранилищем данных из которого таблицы интерфейса берут значения. Хранилище данных одно, а таблиц может быть много. Именно по этой причине, фильтры в таблицах интерфейса не влияют на данные в QLUA. А влияет только заказ данных. Если что-либо заказало данные, то и в QLUA они есть, а если нет то нет. И по сути, не важно кто именно закажет данные, сам терминал или через QLUA, ведь хранилище то одно.
Пользователь
Сообщений: Регистрация: 28.03.2017
29.03.2017 15:45:56
Да, жаль конечно, что "в QLUA вообще нет ни одной функции работающей напрямую с таблицами интерфейса терминала QUIK". И, если я правильно понял, прочитать/получить в QLUA фильтр открытой таблицы Текущих торгов тоже нет никакой возможности?
Sergey Gorokhov написал: Все функции, по получению данных, работают не самими таблицами интерфейса, а с хранилищем данных из которого таблицы интерфейса берут значения. Хранилище данных одно, а таблиц может быть много. Именно по этой причине, фильтры в таблицах интерфейса не влияют на данные в QLUA.
Немного запутался: - означает ли это,что если например, в терминале Quik у меня открыта только одна таблица (предположим Текущих торгов) с одной единственной строкой, то в хранилище будут данные только по этой бумаге, и функция Qlua, например, getNumberOf(securities) -- //таблица "Инструменты"// вернет количество строк - 1 ?
Спасибо за разъяснение, - почти разобрался, но снова все запуталось. Помогите навести порядок в голове. Итак, если в хранилище находятся данные которые Quik заказывает исходя из всех своих открытых таблиц, запросов на данные из Qlua и т.д. И если в Quik открыта одна единственная таблица Текущих торгов с одной единственной строкой, и запущен только один скрипт с единственной функцией getNumberOf(securities) -- //таблица "Инструменты"//, то почему эта функция вернет не 1, - ведь фактически заказываются данные только по одной бумаге/инструменту?
Пользователь
Сообщений: Регистрация: 23.01.2015
30.03.2017 09:10:49
V Y, Потому что описания инструментов (securities) заказываются всегда и безусловно. Связано это с тем, что нельзя отфильтровать ненужные инструменты, не зная какие инструменты вообще есть. Грубо говоря, Вы можете выбрать нужные и ненужные инструменты из списка, именно потому что терминал их записал в таблицу securities. Иначе бы не было из чего выбирать.
Sergey Gorokhov, То есть получается таблица securities, а также GetClassesList "обращаются к брокеру" и возвращают те списки инструментов и классов которые брокер может предоставить? Как тогда можно узнать какие данные терминал заказал (подписался)?
Пользователь
Сообщений: Регистрация: 23.01.2015
30.03.2017 11:39:47
Цитата
V Y написал: То есть получается таблица securities, а также GetClassesList "обращаются к брокеру" и возвращают те списки инструментов и классов которые брокер может предоставить?
Да верно.
Цитата
V Y написал: Как тогда можно узнать какие данные терминал заказал (подписался)?
надежно, никак.
Пользователь
Сообщений: Регистрация: 28.03.2017
02.04.2017 06:54:12
Sergey Gorokhov, Спасибо за разъяснение. Про "не надежно" не спрашиваю, - нужно надежно. Пошел думать и формулировать новые вопросы. Еще раз спасибо.
Пользователь
Сообщений: Регистрация: 30.01.2015
03.04.2017 12:53:07
можно надежно выбрать все инструменты, которые заказаны. для этого проверяем параметры шаг и размер лота на ноль. Если ноль, то инструмент не заказан.
Пользователь
Сообщений: Регистрация: 28.03.2017
05.04.2017 11:49:09
Николай Камынин, Эта идея не сработала, по крайней мере для Quik Junior, В Quik открыта одна таблица Текущих торгов с одной строкой. Из скрипта получаю таблицу securities. возвращается 3909 записей, и не в одной шаг цены и/или размер лота не равны нулю.
Пользователь
Сообщений: Регистрация: 23.01.2015
05.04.2017 11:53:15
Я просто еще раз повторю, то что уже было сказано:
Цитата
Sergey Gorokhov написал: Потому что описания инструментов (securities) заказываются всегда и безусловно.
Пользователь
Сообщений: Регистрация: 30.01.2015
05.04.2017 16:55:23
Цитата
V Y написал: Николай Камынин , Эта идея не сработала, по крайней мере для Quik Junior, В Quik открыта одна таблица Текущих торгов с одной строкой. Из скрипта получаю таблицу securities. возвращается 3909 записей, и не в одной шаг цены и/или размер лота не равны нулю.
Я говорб всегда о боевом сервере, а на учебном вообще ничего не надо смотреть. Он просто так для тестирования буратин.
Пользователь
Сообщений: Регистрация: 28.03.2017
12.04.2017 12:46:48
Sergey Gorokhov, Добрый день! Еще один вопрос появился: Я правильно понял, что в скрипте функция onAllTrade вернет мне информацию только по тем бумагам которые присутствуют в открытой в данный момент в терминале таблице (таблицах) обезличенных сделок? И, если бумага не присутствует в этой таблице, или таблица вообще закрыта, то нет никакой возможности, например через заказ данных из скрипта, получить в скрипте, используя onAllTrade, данные по интересующей сделке ???
Пользователь
Сообщений: Регистрация: 23.01.2015
12.04.2017 14:34:57
Цитата
V Y написал: Я правильно понял, что в скрипте функция onAllTrade вернет мне информацию только по тем бумагам которые присутствуют в открытой в данный момент в терминале таблице (таблицах) обезличенных сделок?
OnAllTrade возвращает информацию об обезличенных сделках, по тем бумагам, по которым Вы эту информацию закажите. И совершенно не важно как именно произойдет этот заказ. Через открытие таблицы, тиковый график или через CreateDataSource с интервалом INTERVAL_TICK
Пользователь
Сообщений: Регистрация: 28.03.2017
12.04.2017 16:56:54
Sergey Gorokhov, Спасибо. Пошел пробовать. Думаю, что еще вернусь )))