Знаю методы: 1) колбэк; 2) либо регулярная проверка активной заявки в цикле main через getItem. Во втором случае как раз надо перебирать все активные заявки, которые отслеживает скрипт. Или вы как-то по другому это делаете?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 02.01.2026
12.04.2026 22:34:25
Цитата
TGB написал: Для просмотра изменений в заявках не надо перебирать все записи orders, stop_orders. Достаточно во вновь получаемых сделках (по изменению размера) таблицы traders выбирать trans_id (или номера ордеров) и просматривать только соответствующие заявки.
Вариант удаления заявки вы не рассматриваете?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 02.01.2026
11.04.2026 21:04:36
Цитата
Nikolay написал: Он и опрашивается, через запомненный индекс записи в таблице. Когда ордер найден в таблице, то повторно его иска не надо, просто получить запись в таблице с свежими данными.
В цикле вы дергаете getItem, независимо от того, изменились ли параметры заявки (заявок) или нет?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
написал: Изменение параметров заявки не приводит к изменению количества записей в таблице. Об этом вы узнаете только через колбэк, либо через регулярный опрос уже существующих записей в таблице.
Да. Датчик температуры ничего не скажет об её изменении. Спросите - скажет.
При чём тут датчик температуры? Если уж приводить аналогию, то, чтобы узнать изменение температуры отслеживаемого датчика, не нужно проверять изменение количества датчиков, а нужно опрашивать конкретный датчик.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 02.01.2026
11.04.2026 12:42:58
Цитата
TGB написал: Можно сделать паузу адаптивной к длительности основного цикла скрипта (это учтет все, в том числе и длительность обработки очереди):
А что это даёт?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 02.01.2026
11.04.2026 12:17:08
Цитата
TGB написал: можно реализовать проверкой (с использованием trans_id) в таблицах order, stop_order. И эту проверку надо выполнять только, когда изменяется количество записей в них.
Изменение параметров заявки не приводит к изменению количества записей в таблице. Об этом вы узнаете только через колбэк, либо через регулярный опрос уже существующих записей в таблице.
В клиринг после 23:50 с ПН по ПТ вариационная маржа начисляется за период с 19:00 предыдущего торгового дня по 19:00 текущего торгового дня. При этом котировка последнего клиринга - это расчётная цена окончания основной торговой сессии в 19:00
CalcBuySell и getBuySellInfoEx неправильно считают для фьючерсов с валютой шага цены отличной от SUR
Пользователь
Сообщений: Регистрация: 02.01.2026
08.04.2026 10:43:58
В QUIK была проблема (не знаю, починили ли): неверно рассчитывался объём ГО в заявках по ценам, отличным от котировки клиринга.
В OnTransReply в поле brokerref отображается введённое в транзакции значение, а в OnOrder - всегда только <код клиента>
Где в QUIK посмотреть текущее значение денежных средств на срочной секции?
Пользователь
Сообщений: Регистрация: 02.01.2026
01.04.2026 09:06:42
Ув. разработчики QUIK, разъясните, пожалуйста, из каких значений каких таблиц в QUIK можно узнать текущее значение денежных средств на срочной секции Московской биржи с учётом начисленной вариационной маржи за текущую сессию? Т.е., если прямо сейчас я закрою (закрыл) все раннее открытые позиции, то сколько у меня будет денежных средств после клиринговых расчётов, - где это можно увидеть?
Где смотреть вариационку?
Пользователь
Сообщений: Регистрация: 02.01.2026
30.03.2026 22:37:30
Цитата
Промежуточный клиринг (ПК) отменяется и не будет проводиться Изменения в процессах, связанные с отменой ПК:
Нет промежуточной переоценки, и учета, накопленного финансового результата в промежуточных регистрах Экспирация контрактов ПК заменяется на экспирацию в торгах, с определением соответствующей ЦИ и пересчетом ГО по позициям Параметр num_clr_2delivery будет изменен в рамках перехода на ЕТС – деление на 2 и округление в большую строну Перестают отправляться отчеты, формируемые в ПК (dayriskparamsXXYY.csv; dayo07.csv; dayf07.csv; lldaymon.csv; daymonXXYY.csv)
Основной клиринг (ВК) в ЕТС делится на отдельные сущности:
Клиринговая сессия m-t-m – переоценка позиций, определение требований и обязательств (плановых остатков), лимитов (план + факт). Расчетная клиринговая сессия – исполнение требований и обязательств и обновление фактических остатков При этом Расчетные цены для клиринговой сессии m-t-m определяются с использованием данных на 19:00
Но чё-то я ничерта не понял. Если раньше сложив <Лимит открытых позиций> + <Накопленный доход> + <Вариационная маржа> можно было рассчитать текущие денежные средства в моменте, то как сейчас - не понятно.
Где смотреть вариационку?
Пользователь
Сообщений: Регистрация: 02.01.2026
30.03.2026 22:23:34
Цитата
Giulia написал: это маржа за период с 19:00 пятницы по время закрытия сделки сегодня. Почему?
Может быть, дело в том, что расчётные цены определяются в 19:00?
Где смотреть вариационку?
Пользователь
Сообщений: Регистрация: 02.01.2026
30.03.2026 16:52:33
Цитата
Giulia написал: ВМ за 19:00-23:50. Но тогда по-прежнему где ВМ за 9:00-19:00?
Вот именно, а где вариационная маржа с начала торговой сессии?
Йцукен написал: Проверил на другом счёте. По ВТБ позиций вообще нет. Но в стакане показывает.
Второй логин: U0229042
Панель информации о позиции в стакане
Пользователь
Сообщений: Регистрация: 02.01.2026
30.03.2026 13:25:08
Izotova Liliya, во-первых, вы не очищаете настройки перед тестированием. А потом вдруг выясняется: "ой, а у нас были такие-то настройки, поэтому не воспроизводилось". Во-вторых, я указал логин: U0228637, через который вы могли подключиться и проверить, а не с админского места.
Панель информации о позиции в стакане
Пользователь
Сообщений: Регистрация: 02.01.2026
30.03.2026 11:55:53
Izotova Liliya, я всю необходимую информацию предоставил. Архив присылать не буду. Что толку? Тут выкладывал архив с описанием проблемы: Вы не соизволили скачать и проверить. Даже не ответили. Будете вы исправлять ошибку в своём ПО или нет - мне всё равно.
Панель информации о позиции в стакане
Пользователь
Сообщений: Регистрация: 02.01.2026
27.03.2026 14:05:56
Цитата
Izotova Liliya написал: Для кода клиента 10910 попробуйте, пожалуйста, заново создать стакан котировок по инструменту SBER и проверить отображение позиции.
Я распаковал квик из архива quik_12.8.5_upd.zip в новую папку. Думаю, это больше, чем заново создать стакан.
Цитата
Izotova Liliya написал: Касательно 2 и 4 скриншота просьба подробно описать последовательность действий
Это один скриншот. Открыты одновременно четыре стакана. Логин: U0228637
Скрытый текст
Проверил на другом счёте. По ВТБ позиций вообще нет. Но в стакане показывает.
Панель информации о позиции в стакане
Пользователь
Сообщений: Регистрация: 02.01.2026
27.03.2026 11:19:41
Панель информации о позиции в стакане
Пользователь
Сообщений: Регистрация: 02.01.2026
27.03.2026 11:15:42
QUIK 12.8.5.3
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
27.03.2026 09:41:46
Nikolay, я писал конкретно по вашей ситуации, где видны признаки проблем на локальном рабочем месте. Судя по вашему описанию терминал обрабатывал колбэк OnTrade две с половиной минуты. И, как показывает мой , даже, если новые данные поступили в терминал, он вам их не покажет, пока скрипты не обработают текущие данные.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
22.03.2026 15:35:36
Немного изменил тестовый скрипт:
Скрытый текст
Код
local function getTime(t)
if t == nil then t = os.sysdate() end
return string.format('%02u:%02u:%02u.%03u', t.hour, t.min, t.sec, t.ms)
end
local function info(s) PrintDbgStr(getTime() .. " " .. s) end
local start
function OnTransReply(trans_reply)
start = true
function OnTransReply(trans_reply)
info(getTime(trans_reply.date_time) .. " OnTransReply trans_id=" .. trans_reply.trans_id)
end
OnTransReply(trans_reply)
sleep(15000)
info("End OnTransReply")
end
function OnOrder(order)
info(getTime(order.datetime) .. " OnOrder trans_id=" .. order.trans_id)
end
function OnTrade(trade)
info(getTime(trade.datetime) .. " OnTrade trans_id=" .. trade.trans_id)
end
local run = true
function OnStop() run = nil end
function main()
local r = sendTransaction(transaction)
if r == '' then info("sendTransaction trans_id=" .. transaction.TRANS_ID) else info(r) end
while run and not start do sleep(0) end
local n = getNumberOf("orders")
local m = n
info(" orders: " .. n)
if run then
for TransID = 2, 5 do
transaction.TRANS_ID = ''..TransID
local r = sendTransaction(transaction)
if r == '' then info("sendTransaction trans_id=" .. transaction.TRANS_ID) else info(r) end
sleep(1000)
end
while run do
n = getNumberOf("orders")
if n > m then m = n; info(" orders: " .. n) end
sleep(0)
end
end
end
В Process Monitor видно 5 отправленных пакетов и 20 принятых, что соответствует 5 транзакциям и 20 колбэкам.
Скрытый текст
Т.ч., вопрос о наличии буфера на стороне клиента подтверждается. Причём видно, что сохраняется хронология событий: после каждой sendTransaction следует OnTransReply, а затем OnTrade и OnOrder.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
22.03.2026 14:00:39
Я понял: чтобы терминал показал нам данные, сначала он должен их расшифровать, но при отсутствии соединения с сервером, делать этого он не желает. Т.ч., эксперимент с отключением интернета не показателен.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
22.03.2026 12:09:01
Цитата
TGB написал: Поток, который мог бы их показать занят тем что генерит:
Так если в хронологическом порядке, то OnTrade и OnOrder были бы раньше, чем OnDisconnected
Цитата
TGB написал: буфер, и если, вдруг, он реализован на стороне сервера
Да нет никакого буфера на стороне сервера. Все заявки и сделки на сервере хранятся в БД SQL. И при подключении к серверу тот отдаёт клиенту все пропущенные данные по заявкам/сделкам за текущую торговую сессию. Возможно, даже не пропущенные, а все, в т.ч. и полученные раннее, а клиент на своей стороне уже смотрит, какие данные он показывал, а каких ещё не было, и вызывает соответствующий колбэк.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
22.03.2026 11:18:13
Цитата
TGB написал: А если предположить, что пока вы отключали интерне, данные уже оказались в буфере?
Так чё ж они не доступны после выхода из колбэка OnParam?
Цитата
TGB написал: Как вы думаете где могут "шляться" данные созданные 12:03:25.000 а выданные в коллбеке в 12:06:00.86?
С сервера получены после восстановления связи.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
21.03.2026 12:35:41
В коде выше опечатка. Должно быть так:
Скрытый текст
Код
function OnTrade(trade)
info(getTime(trade.datetime) .. " OnTrade trans_id=" .. trade.trans_id)
end
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
21.03.2026 12:11:33
Цитата
Йцукен написал: А, вы про OnTransReply? Похоже, что вы правы. Поскольку сервер QUIK не делает повторной попытки направить ответ по транзакции, то можно предположить, что пока терминал обрабатывал колбэк OnParam, то данные с сервера таки получены и сохранены в память.
Похоже, предыдущий вывод преждевременный: если отключить интернет через несколько секунд после отправки транзакций, когда ответ по транзакциям уже должен прийти, то никаких новых данных в main не будет. Т.е., версия с буфером не подтверждается.
Скрытый текст
Код
local function getTime(t)
if t == nil then t = os.sysdate() end
return string.format('%02u:%02u:%02u.%03u', t.hour, t.min, t.sec, t.ms)
end
local function info(s) PrintDbgStr(getTime() .. " " .. s) end
function OnDisconnected() info("OnDisconnected") end
function OnConnected(flag) info("OnConnected " .. tostring(flag)) end
function OnTransReply(trans_reply)
info(getTime(trans_reply.date_time) .. " OnTransReply trans_id=" .. trans_reply.trans_id)
end
function OnOrder(order)
info(getTime(order.datetime) .. " OnOrder trans_id=" .. order.trans_id)
end
function OnTrade(trade)
info(getTime(trade.datetime) .. " OnOrder trans_id=" .. trade.trans_id)
end
function OnQuote() info("OnQuote") end
local start
function OnParam()
start = true
info("Start OnParam")
function OnParam() end
sleep(5000)
info("Disconnect") -- тут отключаем интернет
sleep(5000)
info("End OnParam")
end
local run = true
function OnStop() run = nil end
function main()
while run and not start do sleep(0) end
local n = getNumberOf("orders")
local m = n
info(" orders: " .. n)
if run then
for TransID = 1, 5 do
transaction.TRANS_ID = ''..TransID
local r = sendTransaction(transaction)
if r == '' then info("sendTransaction trans_id=" .. transaction.TRANS_ID) else info(r) end
end
while run do
n = getNumberOf("orders")
if n > m then m = n; info(" orders: " .. n) end
sleep(0)
end
end
end
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
21.03.2026 10:57:42
Цитата
TGB написал: Да в main их не видно, но я имею ввиду QUIK. Если вы сделаете задержку в OnParam 10000, то это не значит, что биржа будет ждать перед отсылкой данных о выставлении заявки 10 сек. пока один из 100000 терминалов QUIK не разблокирует свой поток обработки коллбеков.
А, вы про OnTransReply? Похоже, что вы правы. Поскольку сервер QUIK не делает повторной попытки направить ответ по транзакции, то можно предположить, что пока терминал обрабатывал колбэк OnParam, то данные с сервера таки получены и сохранены в память.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
21.03.2026 09:59:39
Цитата
TGB написал: В выложенном коде отсутствует таблица transaction (шаблон заявки).
Там были транзакции ACTION="NEW_ORDER"
Цитата
TGB написал: но данные в QUIK при этом приходят (это видно в потоке main).
А я вижу, что новые данные в main доступны только после выхода из OnParam. Когда эти данные пришли - не вижу.
написал: Так коллбеки в том же потоке, что и прием данных
Вы это проверяли?
Пока скрипт обрабатывает колбэк, он или другие скрипты могут отправлять транзакции на сервер из main. Но новые данные с сервера скрипты не получат, пока поток колбэков не освободится.
Скрытый текст
Код
local function getTime(t)
if t == nil then t = os.sysdate() end
return string.format('%02u:%02u:%02u.%03u', t.hour, t.min, t.sec, t.ms)
end
local function info(s)
PrintDbgStr(getTime() .. " " .. s)
end
function OnTransReply(trans_reply)
info(getTime(trans_reply.date_time) .. " OnTransReply")
end
function OnOrder(order)
info(getTime(order.datetime) .. " OnOrder trans_id=" .. order.trans_id)
end
local start
function OnParam()
start = true
function OnParam() end
info("Start OnParam")
sleep(3000)
info("End OnParam")
end
local run = true
function OnStop()
run = nil
end
function main()
while run and not start do sleep(0) end
local n = getNumberOf("orders")
local m = n
info(" orders: " .. n)
if run then
for TransID = 1, 5 do
transaction.TRANS_ID = ''..TransID
if sendTransaction(transaction) == '' then info("sendTransaction trans_id=" .. transaction.TRANS_ID) end
end
while run do
n = getNumberOf("orders")
if n > m then m = n; info(" orders: " .. n) end
sleep(0)
end
end
end
Видно, что транзакции отправлены в 18:41:29, и в туже секунду выставлены заявки (вторая колонка со временем). Но информация по заявкам и транзакциям обработана спустя 3 сек (первая колонка со временем)
Скорость обработки заявок при помощи OnTransReply gate_reply_time
Пользователь
Сообщений: Регистрация: 02.01.2026
20.03.2026 15:34:01
Цитата
Egor Zaytsev написал: Время gate_reply_time проставляется шлюзом, а date_time сервером. Расхождения могут быть, когда шлюз и сервер стоят на разных "машинах", однако если шлюз и сервер стоят рядом, то все равно требуется время пока шлюз передаст транзакцию серверу.
Цитата
Egor Zaytsev написал: gate_reply_time - время отправки ответа на транзакцию шлюзом (заполняется шлюзом при отправке ответа на транзакцию серверу Quik) date_time - время получения сервером ответа на транзакцию от шлюза (заполняется серверным временем, когда он получает ответ на транзакцию от шлюза)
Добавьте это в руководство пользователя QLua
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
20.03.2026 09:54:37
Цитата
Nikolay написал: В итоге сканер сделок по таблице увидел новую сделку от 14:57:01, сканер состояния ордеров через таблицы увидел изменение состояния ордера на исполнен в 14:59:31 - две с половиной минуты от сделки. При этом колбеки OnTrade и OnOrder пришли в 14:59:32, т.е. на секунду позже.
Можно предположить, что основной поток был чем-то занят, поэтому колбэк OnTrade был вызван с опозданием. И терминал в это время не мог принимать и отправлять данные на сервер, в связи с чем получил информацию по заявке только через две с половиной минуты.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 02.01.2026
17.03.2026 22:21:03
Цитата
Nikolay написал: В итоге сканер сделок по таблице увидел новую сделку от 14:57:01, сканер состояния ордеров через таблицы увидел изменение состояния ордера на исполнен в 14:59:31 - две с половиной минуты от сделки.
Это разные скрипты или один?
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 02.01.2026
15.03.2026 10:53:47
Цитата
TGB написал: У меня сборка мусора возникает с интервалом ~15 сек. и длится < 1 млс.
Как вы узнали?
В каком потоке делать финализацию при останове скрипта?
Пользователь
Сообщений: Регистрация: 02.01.2026
12.03.2026 20:15:13
Если ставить флаг завершения скрипта в OnClose, то можно финализацию делать в main. Тогда при закрытии квика скрипты будут завершаться параллельно.
В каком потоке делать финализацию при останове скрипта?
Пользователь
Сообщений: Регистрация: 02.01.2026
11.03.2026 21:40:55
Похоже, скрипты в любом случае останавливаются последовательно. Логи двух скриптов при закрытии QUIK 12.8.5.3
Код
11.03.26 21:34:50.907 OnStop
11.03.26 21:34:51.892 main
11.03.26 21:34:52.908 main
11.03.26 21:34:53.923 main
11.03.26 21:34:54.923 main
11.03.26 21:34:55.939 main
Код
11.03.26 21:34:56.923 OnStop
11.03.26 21:34:56.939 main
11.03.26 21:34:57.955 main
11.03.26 21:34:58.970 main
11.03.26 21:34:59.986 main
11.03.26 21:35:00.987 main
11.03.26 21:35:02.003 main
Видно, что OnStop второго скрипта вызывается только после завершения main первого. Да и при остановке скриптов кнопкой "Остановить" GUI подвисает, пока скрипт полностью не остановится, независимо, в каком потоке происходит финализация.
В каком потоке делать финализацию при останове скрипта?
Пользователь
Сообщений: Регистрация: 02.01.2026
11.03.2026 19:46:35
Код
function OnStop()
run = nil
t_id = nil
end
function main()
while run do
SetCell(t_id, ...)
...
sleep(1000)
end
finalize()
end
Есть вероятность, что после срабатывания OnStop до удаления идентификатора таблицы (t_id = nil) main попытается записать в таблицу (SetCell)?
В каком потоке делать финализацию при останове скрипта?
Пользователь
Сообщений: Регистрация: 02.01.2026
11.03.2026 18:48:08
По DestroyTable - в курсе, что её запускать лучше в OnStop
В каком потоке делать финализацию при останове скрипта?
Пользователь
Сообщений: Регистрация: 02.01.2026
11.03.2026 17:20:39
Если делать финализацию OnStop, то при закрытии квика скрипты будут останавливаться последовательно, т.е. ждать друг друга. Если - в main, то есть вероятность, что main не уложится в отведённые 5 сек, и что-нибудь не успеет. Тогда надо в OnStop делать return побольше. Есть ли тут подводные камни? Поделитесь опытом, как вы делаете?
Кто меняет разрешение системного таймера?
Пользователь
Сообщений: Регистрация: 02.01.2026
10.03.2026 11:11:52
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
nikolz написал: Оба варианта останавливают поток до наступления указанного времени.
Вариант из сообщения #25 - да. Ваш вариант - нет. Он некорректно сработает, как в случае, так и в случае перевода часов, например, при синхронизации.
Цитата
nikolz написал: если в цикле применяете многократно sleep, то результат имеет большую погрешность по сравнению с однократным на весь интервал времени.
Отнюдь, количество вызовов sleep в цикле вообще не имеет значения. Поскольку в примере #25 выход из цикла происходит при достижении заданного времени, то погрешность будет не более максимального значения из max(квант_времени, значение_в_sleep) + погрешность os.time() Изучите, что такое погрешность и как она определяется, прежде, чем пытаться рассуждать на эту тему.
Цитата
nikolz написал: если в цикле sleep применяется с минимальным интервалом а весь интервал ожидание существенно больше ,то процессор будет лишь греть воздух выполняя многократные вызовы sleep.
Поставьте sleep побольше, в чём проблема?
Код
local function waitForDateTime(datetime)
local seconds_since_epoch = os.time(datetime)
assert(os.time() < seconds_since_epoch)
while seconds_since_epoch - os.time() > 1 do sleep(1000) end
while os.time() < seconds_since_epoch do sleep(1) end
end
Свободное перемещение графика
Пользователь
Сообщений: Регистрация: 02.01.2026
09.03.2026 12:05:47
Nikolay, а я где-то написал про клиентов? Безусловно вы правы в том, что клиентами ARQA являются проф.участники РЦБ. Но кто являются основными пользователями QUIK? Если "розничные спекулянты", как вы изволили выразится, не будут пользоваться квиком, то кто будет покупать лицензии на десятки тысяч рабочих мест?
На мой взгляд будет правильнее выносить на голосование на внесение, изменение того или иного функционала, провести опрос пользователей.
Благодарим за Ваше предложение. Мы неоднократно задумывались над данной возможностью, считая такой механизм весьма демократичным и перспективным, но в силу некоторых объективных обстоятельств мы пока не готовы к реализации такого подхода. Однако данную идею в голове держим, и, возможно, что в будущем позиция по данной теме изменится.
Дарю идею: В терминале QUIK добавляете таблицу "Пожелания пользователей", в которой отмечаете присвоенный приоритет и количество проголосовавших. Каждый пользователь может проголосовать один раз за любое пожелание. Все голоса сохраняются на сервере брокера, который периодически присылает в ARQA файл с голосами. Вы сводите отчёты всех брокеров воедино и рассылаете им обновлённые списки. А то сейчас я даже не представляю, как вы определяете сколько человек заинтересованы в той или иной доработке. Если будут вопросы, - обращайтесь
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
Пользователь
Сообщений: Регистрация: 02.01.2026
07.03.2026 17:40:56
Цитата
nikolz написал: Можете объяснить как Вы к этому пришли?
На практике.
Цитата
nikolz написал: Оба варианта останавливают поток до наступления указанного времени.
Нет. sleep приостанавливает выполнение скрипта на заданное количество миллисекунд.
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
function WakeUpAt(hour,min,sec,ms)
local t = os.sysdate()
local now = os.time(t)
local tail = t.ms
t.hour = hour
t.min = min
t.sec = sec
sleep(((os.time(t)- now)*1000)- tail + ms)
end
Если компьютер будет кратковременно переводиться в режим сна, то время запланированной задачи отодвинется на время сна. Поэтому вариант с периодической проверкой текущего времени надёжней.
Свободное перемещение графика
Пользователь
Сообщений: Регистрация: 02.01.2026
06.03.2026 10:43:23
Цитата
Karina Dmitrieva написал: Каждое пожелание в обязательном порядке рассматривает и оценивает аналитическая группа компании.
Судя по тому, что некоторые пожелания так и остаются десятилетиями висеть на стадии "рассмотрения", аналитическая группа просто не справляется со шквалом пожеланий))
При системном таймере 1 ms os.sysdate() "тикает" не равномерно.
Код
local function difftime(t1, t2)
return os.time(t1) - os.time(t2) + (t1.mcs - t2.mcs) / 1000000
end
local n = 0
local sum = 0
local max = 0
local min
while run do
local t1 = os.sysdate()
local t2 = os.sysdate()
while t1.mcs == t2.mcs do t2 = os.sysdate() end
local dt = difftime(t2, t1) * 1000
--message(string.format("%.3f ms", dt))
n = n + 1
sum = sum + dt
if dt > max then max = dt end
if min == nil or dt < min then min = dt end
sleep(1)
end
message(string.format("avg: %.3f; max: %.3f; min: %.3f", sum / n, max, min))