> math.floor() stdin:1: bad argument #1 to 'floor' (number expected, got no value) stack traceback: [C]: in function 'math.floor' stdin:1: in main chunk [C]: in ? > math.floor(nil) stdin:1: bad argument #1 to 'floor' (number expected, got nil) stack traceback: [C]: in function 'math.floor' stdin:1: in main chunk [C]: in ?
А касательно вашего примера
Цитата
TGB написал: вызов функции справа от равенства считается выражением. В выражении функция, не возвращающая результат, заменяется на nil.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
04.03.2026 15:07:33
Цитата
Nikolay написал: Но тогда, необходимо хотя бы подтверждение от поддержки.
Да чё-то они не отвечают.
os.sysdate()
Пользователь
Сообщений: Регистрация: 02.01.2026
04.03.2026 14:20:18
Если также считать разницу между os.time() и os.clock(), то дельта не меняется при перезапуске скрипта.
os.sysdate()
Пользователь
Сообщений: Регистрация: 02.01.2026
04.03.2026 14:07:05
os.time() меняется на несколько мс раньше os.sysdate() Ниже разница между os.time() в момент смены секунды и os.sysdate() (при системном таймере 15.625 ms).
Код
for i = 1, 10 do
local t
local t0 = os.time()
repeat t = os.time() until t0 ~= t
local s = os.sysdate()
message(string.format("%.3f ms", 1000 * (t - os.time(s)) - s.mcs / 1000))
end
Каждый блок - отдельный запуск скрипта в одном и том же терминале.
Скрытый текст
14.518 ms 14.472 ms 14.517 ms 14.517 ms 14.517 ms 14.517 ms 14.478 ms 14.517 ms 14.473 ms 14.517 ms
Скрытый текст
7.808 ms 7.805 ms 7.849 ms 7.808 ms 7.809 ms 7.810 ms 7.804 ms 7.807 ms 7.798 ms 7.298 ms
Скрытый текст
3.062 ms 3.062 ms 3.104 ms 3.060 ms 3.062 ms 3.062 ms 3.058 ms 3.104 ms 2.679 ms 2.682 ms
Скрытый текст
14.115 ms 14.078 ms 14.117 ms 14.116 ms 14.116 ms 14.118 ms 14.116 ms 14.116 ms 14.116 ms 14.116 ms
Почему при перезапуске скрипта дельта меняется?
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
Пользователь
Сообщений: Регистрация: 02.01.2026
04.03.2026 08:50:45
Цитата
Serge123 написал: синхронизирую часы ПК с ntp-сервером
Какой ntp-сервер используете?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 02.01.2026
02.03.2026 10:41:28
Цитата
Йцукен написал: Но нужно понимать, что нельзя в таком случае в разных потоках работать с одной стороны очереди.
Если нужно использовать очередь LIFO в разных потоках, то лучше воспользоваться потокобезопасными функциями table.sinsert / table.sremove
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 02.01.2026
02.03.2026 10:15:45
Цитата
Йцукен написал: tbl[#tbl] -- удалить последний элемент таблицы
Опечатался. Должно быть так:
Код
tbl[#tbl] = nil -- удалить последний элемент таблицы
Но умные люди и так всё поняли, в отличие от недоделанного бота.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 02.01.2026
01.03.2026 21:54:06
Цитата
VPM написал: подход дает возможность, из одного подхода создавать разные очереди?
Не, ну если вам нужно одновременно для одной очереди и FIFO и LIFO, тогда да, очередь с двумя индексами более подходящая под эту задачу. Но нужно понимать, что нельзя в таком случае в разных потоках работать с одной стороны очереди. В разных потоках можно только FIFO: в одном потоке положил, в другом вытащил. Но если используется для конкретной задачи LIFO, то не стоит усложнять. Достаточно классических методов работы с таблицами.
Цитата
VPM написал: В Вашем примере меня сильно смущает вот этот момент self[idx] = nil дыр не будет?
Каких дыр? Мы вынули последний элемент таблицы, и присвоили ему значение nil. В таком случае оператор # работает корректно. Но я просто привёл пример, как можно упростить ваш код, если вам "кровь из носу" нужно ООП. А вообще для LIFO достаточно:
Код
tbl = {} -- создать таблицу
tbl[#tbl+1] = v -- добавить в конец таблицы
v = tbl[#tbl] -- получить последний элемент таблицы
tbl[#tbl] -- удалить последний элемент таблицы
Но вы это и без меня знаете
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 02.01.2026
01.03.2026 19:13:13
Цитата
VPM написал: Но иногда просто нужен тупой код прямолинейный как стрела
Прямолинейный для LIFO - это работа с таблицей стандартными методами. Поскольку у вас добавление и извлечение всегда с конца таблицы, то как функции table.insert / table.remove, так и обычное присваивание последнему элементу в таблице будет работать вполне себе быстро и понятно. Зачем городить очередь с двумя индексами для LIFO - большая загадка
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 02.01.2026
27.02.2026 11:20:49
Цитата
TGB написал: в рассмотренном варианте при запуске нескольких скриптов сразу они начинают выполняться быстрее, чем с кодами в OnInit и body.
Это теоритическое предположение или есть исследования на эту тему?
Как настроить отметки покупки-продажи
Пользователь
Сообщений: Регистрация: 02.01.2026
26.02.2026 17:57:33
Цитата
Pivaev Maxim написал: Ваше пожелание сохранения на графике меток сделок за предыдущие торговые сессии зарегистрировано.
Думаю целесообразно сохранять данные о сделках в локальный файл, и при открытии графика считывать данные из него.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
26.02.2026 17:07:10
nikolz, в итоге я наблюдал зависание скрипта на функции getDepoEx, что приводило к зависанию основного потока () или потока main (). Что TGB, единственный, кто проверил, а не стал строить тут гипотезы с надуванием щёк. ---------------------- Читать тоже надо учиться вам.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
26.02.2026 15:03:35
Цитата
Ziveleos написал: Функции, в том числе и type, работают с аргументами.
Думаю имеет место логическая ошибка в библиотеке QMargin, из-за которой не происходит выхода из функции getDepoEx.
Решил проверить, жив ли основной поток, когда main стоит на getDepoEx.
Скрытый текст
Код
local run = true
function OnStop()
run = nil
return 100
end
function OnParam()
if run then
message("OnParam")
run = false
end
end
function main()
local n = getNumberOf("depo_limits")
message("Number depo_limits: " .. n)
if n > 0 then
message("getDepoEx: " .. tostring(getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260227)))
end
while run do sleep(1000) end
end
При подключении к серверу и запуске скрипта пишет:
Цитата
Number depo_limits: 4 OnParam
Т.е., основной поток вполне себе жив. Но в main не происходит выхода из getDepoEx. После остановки скрипта кнопкой "Остановить" требуется перезапуск квика, потому что нормальная работа Lua-скриптов уже не возможна. Вот такая пасхалочка. При чём здесь настройка "Показывать уровень позиции" на графике - не понятно. Но при снятой галке зависание не наблюдается.
Попутно обнаружилась ещё одна ошибка. В документации сказано:
Цитата
В случае ошибки функция возвращает «nil».
На самом деле, getDepoEx ничего не возвращает. Убедиться в этом можно, выполнив код:
Код
message(tostring(getDepoEx("", "", "", "", 0)))
Будет ошибка:
Цитата
bad argument #1 to 'tostring' (value expected)
И такие функции в QUIK сплошь и рядом, тот же getSecurityInfo:
Код
message(tostring(getSecurityInfo("", "")))
Как настроить отметки покупки-продажи
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 20:30:23
У меня в 12.8.3 огромный колокол
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 16:41:55
Цитата
nikolz написал: Если бы сразу написали что и как делали, то и вопросов Вам бы я не задавал.
В первом сообщении всё написано. Разуйте глаза уже или брысь из темы.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 16:35:18
nikolz, не в обиду: от вас помощи мне точно не нужно, вы не умеете читать, до вас очень туго доходит (если вообще доходит) смысл написанного. Вы даже первое сообщение не прочитали, зачем залезли в тему со своими комментариями - мне не понятно. Ну а что касается поиска причины, то это уже не ко мне вопрос. Я локализовал проблему, предоставил достаточно данных, чтобы проверить и убедиться в наличии проблемы. Вообще торгую только на срочном рынке. Но вот в демке тестировал фондовую секцию, и в какой-то момент квик завис. Я сохранил все данные, чтобы иметь возможность их предоставить. Для проверки и запуска скрипта подключение к серверу не требуется.
Если это никому не нужно, включая разработчиков, то мне тем более: на боевом квике getDepoEx не использую. Но когда посреди торгов, у вас неожиданно всё зависнет, - прибежите на форум.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 16:10:25
Товарищи, которые пишут тут: "я проверил на своём квике, и у меня не зависает", я и без вас знаю, что скрипт зависает не всегда. В getDepoEx есть ошибка, которая при определенных условиях, может привести к зависанию терминала. Предполагаю, что это зависит от открытых позиций по бумагам. Но, какие именно данные приводят к зависанию - мне не известно. Вам тем более. Поэтому, не надо мне тут писать, не проверив на предложенных данных. Ваши сообщения не несут никакой смысловой нагрузки.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 15:52:06
nikolz, вы сначала проверьте свой код, на архиве из первого сообщения. А коль не можете - брысь из темы.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 15:45:18
Нафига здесь циклы, слипы? Товарищи, которые тут советуют вкрячить циклы со слипами, вы сначала проверьте свой код, на архиве из первого сообщения. Потом можно предметно что-то обсуждать. Я просто диву даюсь
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 15:29:50
Цитата
Йцукен написал: Предлагаю заинтересованным подтвердить или опровергнуть это. Для этого нужно скачать архив рабочего места QUIK по ссылке:
В архиве QUIK 12.8.3.4 Проверил на версии 12.8.4.9 - результат аналогичный. Для этого сначала распаковываем файлы из архива по ссылке выше, а потом - из , подтвердив замену файлов.
Функция getDepoEx может приводить к зависаниям терминала
Вы это проверили, запустив скрипт в квике из архива?
На своем.
Мы не знаем, какие именно условия приводят к зависанию в getDepoEx, и вы не можете в точности воспроизвести ситуацию, которая могла бы привести к зависанию. Поэтому, ваш тест и выводы, основанные на нём, не конструктивны.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 15:09:29
*Так, при запросе данных по GAZP или с датой расчёта 20260215 не приводит к зависанию.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 15:08:32
Цитата
Nikolay написал: Запустил Ваш скрипт у себя, изменив данные и дату limit_kind на сегодняшнюю.
Очевидно, что getDepoEx приводит к зависаниям не всегда, иначе весь форум бы пестрил от сообщений пользователей о проблеме.
Цитата
Йцукен написал: Мне удалось локализовать проблему. Так, при открытом графике с включенной настройкой показывать уровень позиции, запрос позиции через getDepoEx по инструменту, график которого открыт, может приводить к зависанию.
Но, очевидно, на это влияет не только наличие открытого графика, но ещё и то, какие позиции открыты. Так, при запросе данных по GAZP или с датой расчёта не приводит 20260215 к зависанию.
Цитата
Nikolay написал: И с вашими данными, очевидно не подходящими, тоже нет проблем.
Вы это проверили, запустив скрипт в квике из архива?
Функция getDepoEx может приводить к зависаниям терминала
При том, что его там нет. Именно это и приводит к "зависанию" терминала.
Серьёзно? А если нам нужно, чтобы скрипт что-то рассчитал и завершил работу?
Изменил скрипт в таком виде:
Код
function main()
local n = getNumberOf("depo_limits")
message("Number depo_limits:" .. n)
if n > 0 then
getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
end
message("Завершение работы main.")
end
Скрипт стоит, как вкопанный на getDepoEx: Даже не представляю, куда тут вкрячить sleep?
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 14:04:20
Цитата
Nikolay написал: Это давно известный факт, и я про него написал выше "если убрать sleep, терминал "умрет""
Ну а мне очевидно, что между OnInit и main может вклиниться какой-нибудь колбэк.
Цитата
Nikolay написал: Но обычно, все же, скрипты пишутся для работы во всех режимах, а не в одном.
Вот именно. Поэтому определение стартовых данных в событийной модели целесообразно делать до main.
Цитата
Nikolay написал: Сначала необходимо узнать есть в таблице записи, запросив размер таблицы.
В данном случае размер таблицы "depo_limits" не пустой, в ней четыре строки. Я лишь привёл минимальный код, демонстрирующий ошибку. И как выше написал: независимо куда вы воткнёте getDepoEx, скрипт будет работать некорректно.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 13:10:14
Цитата
Вызов getDepoEx в main скрипта
Код
function main ()
getDepo Ex( "NC0011100000" , "10547" , "SBER" , "NL0011100043" , 20260216 )
end
не приводит к зависанию терминала. Но, несмотря на отсутствие в main цикла скрипт не завершает свою работу самостоятельно и нагружает один поток процессора на 100%.
Скрипт останавливается кнопкой "Остановить". Но после нескольких циклов запуска-остановки вываливается с ошибкой:
Цитата
ACCESS VIOLATION at address 00007FFE43DE431F
Функция getDepoEx может приводить к зависаниям терминала
Nikolay написал: Начальное заполнение можно выполнить и при запуске main
Вызов getDepoEx в main скрипта
Код
function main()
getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
end
не приводит к зависанию терминала. Но, несмотря на отсутствие в main цикла скрипт не завершает свою работу самостоятельно и нагружает один поток процессора на 100%. Вы можете убедиться в этом, скачав архив по ссылке в первом сообщении.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 12:54:37
Цитата
Nikolay написал: но не в OnInit точно. Начальное заполнение можно выполнить и при запуске main, в начале тела функции.
Почему? Можете привести ссылку на раздел в документации, запрещающий вызов qlua-функций в OnInit?
Цитата
Nikolay написал: прежде чем выполнять какие-то запросы, необходимо дождаться, что данные есть в терминале
Чтобы узнать, есть ли данные в терминале, необходимо выполнить запрос. Сюрприз.
Цитата
Nikolay написал: Если скрипт стартует вместе с терминалом, а брокер вызывает OnCleanUp, то пока данные не загрузятся, вызывать getDepoEx не имеет смысла. Поэтому - сначала старт скрипта, потом проверка наличия данных, потом запрос данных.
А если скрипт запускается при установленном соединении? Очевидно, что если определять стартовые позиции в main, то есть риск неверной работы скрипта, если в это время будет вызван колбэк OnDepoLimit.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 12:03:37
А где вы предлагаете определять стартовые (при запуске скрипта) позиции по бумагам и деньгам при использовании событийной модели?
Цитата
Nikolay написал: А здесь ему пинок - иди выполни qlua метод.
Так может вообще запретить вызывать qlua-функции в колбэках? Только сюрприз: они все стучатся в основной поток, и main будет ждать завершения функции.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 11:13:50
Цитата
Nikolay написал: вызов getDepoEx внутри колбека OnInit выглядит странно
Для меня странно выглядит сам факт зависания. Во-первых, в руководстве ничего не сказано, что getDepoEx нельзя вызывать внутри OnInit. Во-вторых, если есть ошибка в функции getDepoEx, приводящая к зависанию, мы не знаем, где она может ещё всплыть.
Функция getDepoEx может приводить к зависаниям терминала
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 11:01:22
В некоторых случаях функция getDepoEx может приводить к зависаниям терминала. Мне удалось локализовать проблему. Так, при открытом графике с включенной настройкой показывать уровень позиции, запрос позиции через getDepoEx по инструменту, график которого открыт, может приводить к зависанию. Предлагаю заинтересованным подтвердить или опровергнуть это. Для этого нужно скачать архив рабочего места QUIK по ссылке: Распаковать в любое место на диске и запустить info.exe В окне "Доступные скрипты" добавить скрипт getDepoEx.lua (лежит в архиве) и запустить его.
Код
function OnInit()
getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
end
Можно удалить файл info.wnd, чтобы запустить info.exe без настроек. А затем открыть график Сбербанка и включить в настройках графика "уровень позиции".
Задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте
Пользователь
Сообщений: Регистрация: 02.01.2026
25.02.2026 10:38:03
Цитата
Pivaev Maxim написал: ограничив получение данных терминалом по определенным инструментам в меню Система / Настройки / Основные настройки... во вкладке Программа / Получение данных / Котировки, выбрав параметр "Формировать список обновляемых инструментов и параметров по выбранным классам:"
Кажется, это вредная рекомендация: в руководстве пользователя QLua для функции ParamRequest указано:
Цитата
Для корректной работы функции включите в настройках Рабочего места QUIK признак получения данных «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»).
Да и для работы CreateDataSource рекомендуется также включить т.н. "умный" заказ данных. Кроме того, у пользователя может быть открыта таблица текущих торгов, и все изменения по всем инструментам будут вызывать колбэки во всех запущенных скриптах. Да и скриптов может быть запущено несколько. Одному скрипту нужны данные по одним бумагам, другому - по другим. То же касается и обезличенных сделок: может быть открыта таблица обезличенных сделок, может быть запущено несколько скриптов.
Поэтому, считаю разумным сделать возможным задавать списки классов и кодов инструментов, для которых будут вызываться колбэки в Lua-скриптах.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
21.02.2026 15:15:56
Цитата
Serge123 написал: Я в 6:50:00 при начале приёма заявок, когда сервера перегружены, не раз наблюдал потери onTransReply.
Вопрос поставлен так: 2) Может ли быть такое, что данные на рабочее место поступили, а колбэк не был вызван?
В вашем случае ответ на транзакцию QUIK получил, в таблице транзакций отображался?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 02.01.2026
21.02.2026 13:11:39
Скрытый текст
Цитата
TGB написал: похоже, что вы полуинтеллектуальный робот-спамер устаревшей версии, без способности учета контекста обсуждаемой темы при генерации спама
Цитата
Чат-боты глупеют в длинных диалогах
Эксперты Microsoft Research и Salesforce изучили более 200 000 диалогов пользователей в популярных чат-ботах (GPT-4.1, Gemini 2.5 Pro, Claude 3.7 Sonnet, o3, DeepSeek R1 и Llama 4), и как оказалось – умные помощники дают 90% верных ответов на отдельные запросы.
Однако если общение превращается в полноценный диалог, то точность ИИ падает уже до 65%. В многоходовых обсуждениях нейросети начинают давать ответы, даже не прочитав полностью вопрос пользователя. К тому же они часто опираются на свой первый ответ, даже если пользователь сказал что он неверен. Кроме того, новые ответы в диалогах с каждым разом становятся все длиннее – ИИ начинают больше предполагать и галлюцинировать.
В итоге исследователи рекомендуют придерживаться старой истины: краткость – сестра таланта. Чем короче беседа с ИИ, тем лучше будет качество ответов.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 15:16:51
Цитата
TGB написал: Вы сначала создаете таблицу фильтрации со значениями полей фильтрации заведомо не совпадающими с ожидаемыми данными.
Ну т.е., фактически запросить данные, обработать их (как минимум сравнить с предыдущими). Логичней было бы, чтобы терминал не дублировал пропущенные колбэки, по которым скрипт не получит новых данных. Хотя, кому-то наоборот нужна вся история изменений (для индикатора какого-нибудь). Не зря же есть CreateDataSource для параметров инструментов. Но тогда QUIK должен хранить всю историю изменений. В общем, этот момент вам надо продумать.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
А зачем, если можно высказать своё "важное" мнение, прочитав только последний комментарий?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 13:19:26
Цитата
Ziveleos написал: Или не хотят. "Проблемы индейцев шерифа не волнуют".
Потому я и создал эту тему. Может, "шериф" думает, что всего 1,5 индейцам это меню мешает. Давайте проведем перепись населения, кому это меню не впёрлось. Может, целое племя наберётся?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 12:16:46
Цитата
Ziveleos написал: оперативность арки, как всегда, на высоте.
Они не могут добавить в код одну строчку с оператором if ?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 12:09:03
Цитата
TGB написал: Если вы не хотите повторно обрабатывать данные, то фильтруйте их.
А как вы узнаете, что это повторы, пока не обработаете их?
Цитата
TGB написал: Для фильтрации данных можно создать, для соответствующего вида коллбека, таблицу с фильтруемыми полями, обновляемыми при поступлении новых данных и использовать эту таблицу в начале коллбека с тем. чтобы не обрабатывать ненужные вам повторы.
Вам надо будет сначала, как минимум запросить данные, чтобы сравнить с предыдущими.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 11:24:39
А смысл несколько раз подряд обрабатывать, например OnQuote, если каждый раз мы будем обрабатывать одни и те же данные? Или вы предлагаете хранить данные для каждого колбэка?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 11:18:51
В QUIK, наверное, с версии 9, в таблицах рабочего места QUIK, созданных на Lua, добавили всплывающее контекстное меню "Сортировать ...", которое вызывается при клике правой клавишей мышки в любой ячейке таблицы. На мой взгляд это меню лишнее, поскольку дублирует функционал сортировки из контекстного меню при клике на название столбца. Кроме того, сортировка включается кликом по названию столбца с зажатой клавишей Ctrl или Shift. Всплывающее контекстное меню забирает три колбэка QTABLE_RBUTTONDOWN, QTABLE_RBUTTONDBLCLK, QTABLE_RBUTTONUP, на которые можно было бы повесить полезные пользовательские функции. Нет, фактически колбэки срабатывают, но пользоваться ими не удобно из-за всплывающего меню, которое потом надо закрывать. Возможно разработчики решили, что это стильно, модно, молодёжно. Но лично мне не удобно. Напишите в комментариях, вам мешает это контекстное меню?
Как зарегистрировать пожелание?
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 10:17:54
Цитата
Pivaev Maxim написал: Можете написать Ваше пожелание в любой ветке форума, и оно будет зарегистрировано в том случае, если описываемый функционал действительно отсутствует.
Вот тут написал: Что-то ещё требуется?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 02.01.2026
20.02.2026 10:03:39
TGB, а что делать, если между слипами данные поступили по инструменту несколько раз?