Некорректно отображается окна «Текущие торги» и «Состояние счета»
Внимание
В моей терминале с 02.07.18 перестали показываться данные в окне «Текущие торги» по значениям которые я выставлял (мин. цена, макс цена, % изменения и т.д.). Решил пересоздать окно заново но при редактировании выяснилось, что те значения куда-то исчезли и их нельзя добавить в таблицу. Остались не нужные мне значения.
В окне «Состояние счёта» показывается некорректная сумма кэша, но показываются инструменты, их количество и балансовая цена. остальные значения по нулям (исключение нереал PL, он по минусам)
Цитата |
---|
Михаил написал: В моей терминале с 02.07.18 перестали показываться данные в окне «Текущие торги» по значениям которые я выставлял (мин. цена, макс цена, % изменения и т.д.). Решил пересоздать окно заново но при редактировании выяснилось, что те значения куда-то исчезли и их нельзя добавить в таблицу. Остались не нужные мне значения. |
Цитата |
---|
Михаил написал: В окне «Состояние счёта» показывается некорректная сумма кэша, |
Цитата |
---|
Zoya Skvorcova написал: Михаил ,добрый день. |
Цитата |
---|
Михаил написал: В моей терминале с 02.07.18 перестали показываться данные в окне «Текущие торги» по значениям которые я выставлял (мин. цена, макс цена, % изменения и т.д.). Решил пересоздать окно заново но при редактировании выяснилось, что те значения куда-то исчезли и их нельзя добавить в таблицу. Остались не нужные мне значения. |
Цитата |
---|
Михаил написал: В окне «Состояние счёта» показывается некорректная сумма кэша, |
Фильтров на параметрах нет, на некоторых были фильтры на инструментах, я их снял, изменений не произошло.
в состоянии счёта в нулевом значении отображается: цена, ликвидная цена, стоимость, %активов, ликв. стоимость,
отображается в минусовом значении: нереал PL
показывается: название инструмента, балансовая цена, тип и кол-во.
Балансовая ст-ть сумма показывается не в соответствии с действительностью (я сравнивал с данными из личного кабинета брокера), и расчеты выходят из нее такие же, единственное что обязательства показываются правильно.
Источник
Таблица — Текущие торги
Внимание
- Ребятушки, кто нибудь может доступным языком разжевать следующие значения «доступных параметров» в таблице «текущие торги» .
1) Количество во всех сделках (Общее кол-во) — я так думаю это сколько именно лотов или акций было наторговано во всей сессии? ЛОТОВ или БУМАГ?
2) Кол-во в последней сделке (кол-во послед.) — я так понял это кол-во именно лотов в последней сделке ?
3) Кол-во заявок на покупку/продажу (Заявки куп./прод.) — я так понял это кол-во заявок, но каких, рыночных лимитных, а может и тех и тех .
4) Суммарный спрос/предложение ( Общий спрос/предл.) — Я так понял это общий показатель выставленных лотов? РЫНОЧНЫХ или ЛИМИТНЫХ?
Заранее благодарен за уделённую минуту.
Цитата |
---|
Антон Маяков написал: Ребятушки, кто нибудь может доступным языком разжевать следующие значения «доступных параметров» в таблице «текущие торги» . 1) Количество во всех сделках (Общее кол-во) — я так думаю это сколько именно лотов или акций было наторговано во всей сессии? ЛОТОВ или БУМАГ? 2) Кол-во в последней сделке (кол-во послед.) — я так понял это кол-во именно лотов в последней сделке ? 3) Кол-во заявок на покупку/продажу (Заявки куп./прод.) — я так понял это кол-во заявок, но каких, рыночных лимитных, а может и тех и тех . 4) Суммарный спрос/предложение ( Общий спрос/предл.) — Я так понял это общий показатель выставленных лотов? РЫНОЧНЫХ или ЛИМИТНЫХ? |
Заранее благодарен за уделённую минуту.
1. Это общее количество контрактов во всех сделках совершенных в течении текущий сессии в штуках (бумагах).
2. Это количество бумаг в последней сделке, в лотах.
3. Это общее количество активных заявок на покупку/продажу по этому инструменту, штук
4. Да, это количество ценных бумаг во всех активных заявках на покупку/продажу, в лотах. Здесь, как и в п.3 нет разделения на рыночные либо лимитные заявки, а берется количество именно из активных.
Источник
Как прочитать таблицу Текущие торги?
Внимание
Андрей,
Большинство параметров описаны в документации на терминал QUIK
-Раздел 8. Алгоритмический язык QPILE
—Функции для получения значений Таблицы текущих торгов
—Значения параметров функций
Кроме того существует возможность узнать имя любого параметра из таблицы текущих торгов.
Достаточно вывести таблицу в Excel по DDE с установленной галкой «Формальные заголовки»
Цитата |
---|
Sergey Gorokhov написал: Раздел 8. Алгоритмический язык QPILE |
Цитата |
---|
Sergey Gorokhov написал: Достаточно вывести таблицу в Excel по DDE с установленной галкой «Формальные заголовки» |
Цитата |
---|
Sergey Gorokhov написал: Раздел 8. Алгоритмический язык QPILE |
Существует ли возможность обращаться из скрипта QLua к таблице Текущих торгов по номеру строки этой таблицы?
Чтобы, например, можно было из скрипта определить какие бумаги представлены в таблице?
Добрый день. Парочка вопросов:
1. По документации Lua, доступ к таблице текущих торгов осуществляется через функцию getParamEx, примерно так:
s=getParamEx(«FQBR»,»AAPL-RM»,»LAST»).param_value;
Если пишу это тупым кодом в теле функции. то всё вроде как работает, возвращается цена последней сделки.
Но если я формирую строку
s=\»FQBR\»,\»AAPL-RM\»,\»LAST\»
а затем вызываю
getParamEx(s).param_value;
то возвращается nil
Что я не так елаю и есть ли возможность динамически создавать строку аргументов (что-то типа функции eval в JavaScript)?
2. Я не нашёл тип данных integer ВООБЩЕ! И как же мне работать с битовыми масками? Как на Lua реализуется конструкция вида:
if (iData & 0x80) < blah-blah-blah >?
Ответим на ваши вопросы по порядку:
1) Дело в том, что функция getParamEx принимает 3 аргумента, а вы пытаетесь передать в нее одну строку .
Динамически изменяемые параметры в функцию можно передать следующим образом:
class = «код класса»
sec = «код инструмента»
param = «параметр»
s = getParamEx(class, sec, param).parav_value
Также, можно воспользоваться функцией unpack
arg = <>
arg[1] = «код класса»
arg[2] = «код инструмента»
arg[3] = «параметр»
s = getParamEx(unpack(arg)).param_value
Помимо этого, в Lua действительно есть функция идентичная eval в JS — loadstring
Пример ее использования:
s = loadstring(«return ‘код класса’, ‘код инструмента’, ‘параметр'»)
getParamEx(s()).param_value)
2) Если мы вас правильно поняли, для вашей задачи подойдут две функции:
bit.test — проверяет состояние указанного бита в значении. Возвращает true, если бит равен «1», и false, если бит равен «0».
Пример:
if bit.test(х, n) then
—
end
Где x — значение, а n — порядковый номер бита, начинающийся с 0 (1й бит имеет порядковый номер 0, 2й — 1 и т.д.)
Если же вы хотите задавать бит именно числом, то можно воспользоваться функцией bit.band .
Пример (проверка бита с порядковым номером 1):
if bit.band(x,0x2)
Подробнее о работе с битовыми масками вы можете прочесть в руководстве пользователя «Интерпретатор языка Lua» (стр. 90), доступном на нашем сайте ( https://arqatech.com/upload/iblock/194/quik_lua.zip) .
Спасибо, Роман, я понял. Просто мне было лень разбивать строку из файла (там как раз и код класса, и код инструмента) на несколько подстрок, а сразу вставить туда запятые, как будто это и есть три аргумента. Теперь разделил (примерно так, как Вы описали) — всё работает.
УХ ТЫ! А в описании языка (руководство пользователя) нет ни звука ни про unpack, ни про loadstring! А эти вещи, как я предполагаю, должны бы расширять функциональные возможности совершенно диким образом! Спасибо, на досуге попробую поискать, что это за звери, и с чем их едят.
Нет, похоже, здесь мы друг друга не поняли. Как я могу анализировать указанный бит, если тип данных не integer, а real? Там же, насколько я помню, мантисса с характеристикой, а не двоичное представление числа! Собственно, что я хочу:
Вот тикает время (каждый раз в обработчике прерывания по таймеру я инкрементирую счётчик вызовов). Если он целого типа, то я по маске этого числа ловлю события 2, 4, 8, 16. тиков (маска, соответственно, 0x1, 0x3, 0x7, 0xF, 0x1F. )
Нет, с битами я работаю с закрытыми глазами — я 40 лет программистом, просто с Lua никогда прежде не сталкивался.
Ещё такой вопрос: если правильно понял, возможности объявить массив (одномерный или большей размерности) или таблицу (массив структур) с тем, чтобы адресоваться к его элементом по индексу, здесь не существует? Ведь конструкция вида:
a=<>; a[0]=<>; a[0][0]=»data»;
подразумевает для последующего доступа к данным (b=a[i][j]) именно ПОИСК по таблице, но не доступ к её элементам по индексу? Если да, то это должно серьёзно замедлять выполнение скрипта.
Владимир, Lua — не наша разработка. Именно поэтому, руководство пользователя по Lua, идущее с терминалом, не является полным описанием языка, в нем приведены разработанные нами функции для работы с терминалом QUIK.
Со всеми родными функциями и тонкостями языка можно ознакомиться на официальном сайте — https://www.lua.org/
Цитата |
---|
Как я могу анализировать указанный бит, если тип данных не integer, а real? |
Просим уточнить подробнее, о чем идет речь, желательно на конкретном примере. Все битовые флаги в терминале имеют целочисленный тип.
Список с их описанием вы можете найти в руководстве «Интерпретатор языка Lua» (стр. 87).
Со структурами данных языка и особенностями работы с ними вы также можете ознакомиться самостоятельно в официальной документации. С вашим вопросом стоит обратить внимание на данный раздел книги «Программирование на Lua», посвященный как раз таки структурам данных — https://www.lua.org/pil/11.html
Ах, чёрт! А я надеялся, что ваша. ибо убрать тип integer из языка, на мой взгляд, есть самая большая дурость. Ладно, бог с ним, с никому не нужным boolean — пусть будет, если нравится, но с целочисленными переменными я за долгие годы программирования (а я уже пенсионер!) работал раз в 10 чаще, чем с вещественными! Если не во все сто.
Пример. ну, вот набросок, как я написал бы это дело на C (предполагаем, что это обработчик прерываний по таймеру или по совершению сделки (чтобы не опрашивать все тикеры по таймеру):
int iPer; // индекс текущего периода расчета
int iData; // счётчик прерываний
double Course; // последнее значение курса соответствующего тикера
static UI16 MaskPer[] = // маски свечей по периодам
< 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF >;
for (_iData = 1;;_iData++) // цикл приёма внешних данных от QUIK
< // (текущие значения инструментов)
Course = ReadValue (); // новое значение курса для выбранного тикера
for (iPer = 0; iPer 0; i—)
MO[iPer][i] = MO[iPer][i — 1];
MO[iPer][0] = 0; // обнуляем последнюю свечу, сдвигая уже набранные
> // конец цикла набора статистики
Младший уровень лично я собираюсь установить по прерываниям каждые 15 секунд, Таким образом, мы в любой момент времени имеем полные данные по каждому инструменту по всем периодам расчёта (в данном примере, от 15-секундных до часовых свечей). Вуаля! Остальное, как говорится, «дело техники».
Ну вот, по Вашей ссылке, первым же предложением: «Tables in Lua are not a data structure; they are the data structure. All structures that other languages offer—arrays, records, lists, queues, sets—are represented with tables in Lua». Иными словами, никаких структур данных просто НЕТ! Печально. А уж «обоснование» и вообще курам на смех: «Хотя мы МОЖЕМ (!) реализовать массивы и списки, таблицы мощнее. Многие алгоритмы упрощаются до тривиальности с использованием таблиц». И дальше вообще издевательство: «Например, вы редко пишете поиск в Lua, потому что таблицы предлагают прямой (. ) доступ к любому типу». Ребятки, доступ по ключу — это не прямой, а как раз КРИВОЙ доступ к данным! Даже если обозвать ключи «индексами». Уши бы надрать этому «Роберто Иерусалимскому!
В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив — нельзя. Остаётся разобраться со строковыми переменными: способна ли эта loadstring интерпретировать строки как операторы языка (или, скажем, функции), то есть имеется ли здесь техническая возможность программирования данными.
Спасибо, Роман! Очень понравился ваш сервис общения с клиентами. Вы ведь сотрудник компании? Передайте руководству мою искреннюю благодарность.
Источник
В таблице текущих торгов не все столбцы заполнены
Внимание
Вопрос видимо к разработчикам Quik. В таблице текущих торгов для облигаций ОФЗ присутствуют не все данные. На скриншоте видно, что не заполнены столбцы «кол-во сделок», «длительность купона» и «доходность». В то же время для облигации ВТБ Б-1-48, которая к ОФЗ не относится, эти данные есть.
При этом на другом терминале Quik по второму брокерскому счету таблица текущих торгов для ОФЗ полностью заполнена.
Кроме того, на этом втором терминале при редактировании таблицы текущих торгов в выпадающем списке почему-то больше разных ОФЗ, чем в первом терминале.
На первом (проблемном) терминале у меня раньше был ИИС, который я закрыл, но потом открыл новый ИИС и привязал его к этому же терминалу.
Просьба уточнить полное название класса инструментов ОФЗ и код класса на обоих терминалах (можете прислать скриншоты), а также у кого находится второй брокерский счет — у того же брокера или у другого?
В обоих терминалах код класса и название класса одинаковы:
название – МБ ФР. Т + Облигации
код класса – TQOB
Брокер один и тот же -ВТБ.
На всякий случай прикладываю скриншоты.
Виктор Столетов, уточните, пожалуйста, Вы авторизуетесь на один и тот же сервер, или на разные?
Для решения возникших затруднений попробуйте включить умный заказ данных: «Система» — «Настройки» — Основные настройки. «, выбрать «Программа» — «Получение данных», отметить «Исходя из настроек открытых пользователем таблиц», а также в «Сохранение данных» отметить «Только данные, отражающие текущее состояние».
Если это не поможет, и данные в таблице текущих торгов не появятся — рекомендуем обратиться к брокеру.
Источник