Вопрос ко всем, кто знает: какую таблицу возвращает getQuoteLevel2 если нет bid или ask?
Пользователь
Сообщений: Регистрация: 27.12.2022
17.04.2026 21:29:51
Напр., бывает так, что запампленная акция выросла до потолка и её все хотят продать, но никто не хочет купить. Какова структура таблицы, если, к примеру, bid_count == 0 (на самом деле там вопреки документации будет строка "0.000000")? 1. Таблица bid отсутствует (нет ноды с именем "bid"). 2. Есть нода с именем "bid" и её тип nil. 3. Тип этой ноды "table" и эта таблица пустая? 4. Или, как сказано в документации, вместо таблицы bid "возвращается пустая строка"?
На днях я посмотрел, какую последнюю таблицу по разным акциям возвращает getQuoteLevel2 в конце вечерней сессии примерно в 23:50: в ней общее количество нод две: bid_count == offer_count == "0.000000". Причём, по одним акциям биржа возвращает последнюю таблицу до 23:50, а после этого по другим акциям биржа ещё может вернуть полноценные таблицы с 4-мя нодами.
QUIK clients support
Сообщений: Регистрация: 11.08.2025
20.04.2026 07:48:43
Добрый день.
Если определить параметры bid и offer, то функция вернет таблицу без этих параметров. Пример:
Вот что написано в последней версии справки QLUA.chm за 23.10.25:
Цитата
При отсутствии и спроса и предложения функция возвращает таблицу без параметров bid и offer.
Параметр
Тип
Описание
bid_count
STRING
Количество котировок покупки. При отсутствии спроса возвращается значение «0»
offer_count
STRING
Количество котировок продажи. При отсутствии предложения возвращается значение «0»
bid
TABLE
Котировки спроса (покупки). При отсутствии спроса возвращается пустая строка
offer
TABLE
Котировки предложений (продажи). При отсутствии предложения возвращается пустая строка
1. Здесь, к примеру, неправильно написано, что при отсутствии спроса возвращается значение "0": возвращается "0.000000". Я ещё в прошлом году писал об этом на форуме. Сказали, что исправят, но так и не сделали.
2. Это описание противоречит само себе. При отсутствии спроса и предложения нет параметров с именами "bid" и "offer", или они есть, но имеют тип STRING и длину строки == 0?
3. Что возвращается, если, к примеру, есть offer, но нет bid? bid будет пустой строкой или не будет параметра с именем "bid" (вместо него будет нода с типом NIL?)
Пользователь
Сообщений: Регистрация: 27.12.2022
20.04.2026 20:24:30
Нормальному человеку трудно представить, как можно написать в док-ции, что bid имеет тип TABLE, но может возвращать пустую строку...
Из армейского фольклора: "В военное время величина синуса может достигать четырёх".
Serge123 написал: Нормальному человеку трудно представить, как можно написать в док-ции, что bid имеет тип TABLE, но может возвращать пустую строку...
Из армейского фольклора: "В военное время величина синуса может достигать четырёх".
Возможно это потому, что это LUA. и строка и таблица это TValue содержащий тип и указатель. Когда таблицы нет, то надо что-то верную . Лучше полагаю вернуть nil, но почему-то рушили возвращать пустую строку.
1. Актуальная документация к QLua находится по ссылке: В нее внесены изменения, о которых вы говорите. 2. Если спрос и предложения будут отсутствовать, то действительно будет возвращена пустая строка. Таков дизайн QLua. 3. Указанный вами случай описан в документации в п. 3.9.1
Пользователь
Сообщений: Регистрация: 27.12.2022
21.04.2026 18:35:17
Цитата
Oleg Kuzembaev написал: 2. Если спрос и предложения будут отсутствовать, то действительно будет возвращена пустая строка. Таков дизайн QLua.
Нет, в этом случае не будет параметров bid и offer согласно вашей же док-ции. Оказывается, ещё в октябре прошлого года, похоже, после того, как я на форуме об этом написал, эту док-цию исправили в файле "Интерпретатор языка Lua.pdf", но почему-то не исправили в файле QLUA.chm, который входит в Квик, поэтому я об этом узнал только сейчас.
Мне кажется, Квик формирует эти таблицы от коллбэков в коде на Си++, а на стороне клиента тоже ведь могут работать длл на Си.
Я ещё в прошлом году предлагал вместо этой таблицы от getQuoteLevel2, на построение которой тратится куча времени, передавать параметры в строке через разделители. Сделать для этого getQuoteLevel2Ex. getQuoteLevel2 в длл является бутылочным горлышком, которое тормозит работу: надо создавать строки, интернировать их, считать хеши... Но, конечно, этого, как всегда, не сделают.
Мне кажется, Квик формирует эти таблицы от коллбэков в коде на Си++, а на стороне клиента тоже ведь могут работать длл на Си.
Я ещё в прошлом году предлагал вместо этой таблицы от getQuoteLevel2, на построение которой тратится куча времени, передавать параметры в строке через разделители. Сделать для этого getQuoteLevel2Ex. getQuoteLevel2 в длл является бутылочным горлышком, которое тормозит работу: надо создавать строки, интернировать их, считать хеши... Но, конечно, этого, как всегда, не сделают.
Уу финама есть такая штука называется TRANSAQ Когда-то делал на ней робота. Вещь хорошая но тогда была еще сырая и было много глюков Потом ушел от них а TRANSAQ только их. Так вот в TRANSAQ передаются лишь изменения стакана. т е хотите сами стройте что угодно или не стройте. -------------------- В QUIK создали библиотку QLUA как мост бежду VMLUA и терминалом. Это не библиотека для написания роботов а скорее библиотека для написания отображения каких -то не сложных вычислений на экране. Поэтому все так.
QUIK clients support
Сообщений: Регистрация: 11.08.2025
23.04.2026 05:25:15
Цитата
Serge123 написал: Мне кажется, Квик формирует эти таблицы от коллбэков в коде на Си++, а на стороне клиента тоже ведь могут работать длл на Си.
Я ещё в прошлом году предлагал вместо этой таблицы от getQuoteLevel2, на построение которой тратится куча времени, передавать параметры в строке через разделители. Сделать для этого getQuoteLevel2Ex. getQuoteLevel2 в длл является бутылочным горлышком, которое тормозит работу: надо создавать строки, интернировать их, считать хеши... Но, конечно, этого, как всегда, не сделают.
Правильно понимаем, что вы уже регистрировали пожелание на доработку будущих версий? Если нет, то предлагаем сделать это сейчас.