Старатель написал: При остановке скрипта в результате ошибки память не освобождается.
Также не выгружаются загруженные в скрипт библиотеки. Эти проблемы, вроде, уже лечили в 6 или 7 версии.
Надо делать так, как надо. А как не надо - делать не надо.
Quik 8.5 не освобождается память
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
10.05.2020 17:19:34
При остановке скрипта в результате ошибки память не освобождается. Пример:
Код
function main()
t = {}
for i = 1, 10000000 do
t[i] = i
end
local a = b + 1
end
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.05.2020 17:31:47
Цитата
Anton написал: в мейне тоже в критическую секцию завернуть
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.05.2020 17:07:13
Цитата
Evgeniy Karnaukhov написал: так как строка уже удалена и не найдена, она будет добавлена вновь.
Зачем?
Цитата
Evgeniy Karnaukhov написал: Проблема вызвана тем, что работа с таблицей в скрипте осуществляется из разных потоков без синхронизации.
Можете предложить рабочий пример? Такой вариант тоже не работает:
Код
function OnAllTrade()
if not run then return end
alltrade = true
for i = 1, rows do
table.ssort({0, 0}, function()
DeleteRow(id, 1)
InsertRow(id, rows)
return true
end)
end
end
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.5
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
07.05.2020 16:06:20
Если удалять скрипты из середины списка получается такая ерунда:
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
07.05.2020 10:41:24
Нужно, чтобы message могла показывать отдельные сообщения при снятой галке "Обычные". (Для сообщений об ошибках, алерты и пр.)
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
06.05.2020 13:26:20
А есть возможность показывать message с icon_type = 3 и/или 2 без необходимости включать все типы сообщений?
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
05.05.2020 11:35:47
Демонстрационный скрипт:
Код
function OnStop()
run = nil
SetCell(id, 1, 1, string.format('Size: %u', GetTableSize(id))) -- Почему-то попадаем в строку 2
end
local alltrade
function OnAllTrade()
if not run then return end
alltrade = true
for i = 1, 30 do
DeleteRow(id, 1)
InsertRow(id, 30)
end
end
function main()
id = AllocTable()
AddColumn(id, 1, 'Size', true, QTABLE_INT_TYPE, 15)
CreateWindow(id)
SetWindowPos(id, 0, 0, 100, 520)
for i = 1, 30 do
InsertRow(id, -1)
end
run = true
while run do
if alltrade then
alltrade = nil
SetCell(id, 30, 1, string.format('%u', GetTableSize(id)))
else sleep(1) end
end
end
Через некоторое время работы появляется 31 строка. Первая строка становится недоступна для редактирования.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
27.04.2020 19:52:01
Anna Lozenko, уже почти неделя прошла. Прошло несколько клирингов. Думаю, после расширения лимитов в следующий клиринг ситуация исправляется, но точно не скажу, т.к. не отслеживал данную ситуацию.
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
27.04.2020 10:18:31
Функция QLua message с icon_type = 2 не показывает окно при активной галке "Отмеченные как важные"
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.04.2020 14:07:11
Дубль 2 После расширения планок в результате стоп-торгов в поле ввода заявки не рассчитывается максимальное возможное количество лотов по ценам выше/ниже каких-то (непонятных) границ (и эти границы не связаны с макс./мин. возможной ценой инструмента). Так, в раннее описываемом случае для цены 23,01 количество рассчитывалось, для цены 23,00 не рассчитывалось, в то время, как текущая цена была в районе 19,5. Данный bug вы также можете наблюдать на своём игровом сервере.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.04.2020 13:40:55
Самое простое в вашем случае привести шаг цены к точности инструмента:
написал: Как получить эти значения в виде кодов (1,2,3...) в lua-скрипте?
К сожалению, такой возможности не предусмотрено. Можем предложить зарегистрировать пожелание на добавление функционала.
Регистрируйте
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.04.2020 12:28:12
Для BRK0 на момент написания этого поста не рассчитывалось количество при цене ниже 23,01 Возможно это связано с расширением планок.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.04.2020 11:48:54
Цитата
Sergey Gorokhov написал: в представленном коде SEC_PRICE_STEP используется в математических операциях, так что проблема точно не с ним, а с тем что в результате попадает в tostring
в tostring как раз попадает float из-за возвращаемого значения в getParamEx.
Цитата
Sergey Gorokhov написал: Но стоит поменять инструмент на любой другой в котором дробный шаг цены и ошибка опять бы появилась.
Какая ошибка будет для инструмента с дробным шагом цены?
Цитата
Sergey Gorokhov написал: По этому правильно форматировать то что попадает непосредственно в параметры транзакции, а не то что было до этого.
Правильно всё же работать с правильными значениями. Так, для целочисленных вычислений все входящие параметры необходимо привести к integer. Не после, а до вычислений!
Скрытый текст
Конечно, это не отменяет того факта, что если price, подающийся на вход в sendTransaction получен в результате вычислений, предполагающих некратность шагу цены, его необходимо привести к шагу цены инструмента. И в этом случае нужен не string.format
В данном случае проблема именно в самом QUIK. Так, например, getParamEx(CLASS_CODE,SEC_CODE,"BID").param_value даст вам значение, которое вы не сможете подать в sendTransaction без лишних вычислений.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.04.2020 10:34:51
Sergey Gorokhov, Так проблема в самом QUIK, который в getParamEx возвращает строку с дробной частью: "1.000000" вместо "1", а на входе в sendTransaction для того же инструмента требует строку без разделителя.
Надо делать так, как надо. А как не надо - делать не надо.
Надо делать так, как надо. А как не надо - делать не надо.
Как получить ГО по фьючерсу?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.04.2020 12:34:33
Цитата
Старатель написал: Биржа транслирует параметр "ГО продавца" для опционов?
Биржевой шлюз транслирует. В QUIK нет этого параметра.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.04.2020 19:23:27
Цитата
Старатель написал: Под импортом я подразумеваю загрузку настроек из wnd-файла вручную.
Цитата
Старатель написал: Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером.
К сожалению, я не знаю, как ещё объяснить.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.04.2020 18:29:47
Именно в процессе работы. Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером. При перезапуске Квика соединение ещё не установлено.
Надо делать так, как надо. А как не надо - делать не надо.
Как получить ГО по фьючерсу?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.04.2020 18:15:28
Биржа транслирует параметр "ГО продавца" для опционов?
Надо делать так, как надо. А как не надо - делать не надо.
Показывать коды классов в настройках списков заказа данных, Заказ данных -> Поток котировок, Поток обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.04.2020 13:42:10
Отображать код класса в указанных окнах
Надо делать так, как надо. А как не надо - делать не надо.
Удаление элемента из массива, который прошёл проверку
Это из серии вредных советов. Так делать не следует.
Надо делать так, как надо. А как не надо - делать не надо.
Удаление элемента из массива, который прошёл проверку
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
12.04.2020 15:45:36
Вариант 1:
Код
for i, bumaga in pairs(sec_code) do
LowDnya = getParamEx (class_code, bumaga, "LOW").param_value
Last = getParamEx (class_code, bumaga, "LAST").param_value
Raznica = math.abs(LowDnya - Last)
if Raznica > 1 then
message(tostring(bumaga .. " " .. Raznica ))
sec_code[i] = nil
end
end
Вариант 2:
Код
for i = #sec_code, 1, -1 do
local bumaga = sec_code[i]
LowDnya = getParamEx (class_code, bumaga, "LOW").param_value
Last = getParamEx (class_code, bumaga, "LAST").param_value
Raznica = math.abs(LowDnya - Last)
if Raznica > 1 then
message(tostring(bumaga .. " " .. Raznica ))
table.remove(sec_code, i)
end
end
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.04.2020 18:46:59
Под импортом я подразумеваю загрузку настроек из wnd-файла вручную.
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.04.2020 15:29:53
Не обратил внимания, что у вас на скринах первыми идут индексы. Видимо, сервер подключился к шлюзу в 9:17 и первым делом получил индексы.
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.04.2020 14:35:41
Цитата
Anton написал: Не должно так быть в идеальном мире, а в реальном так есть
Если вы игрались со списками инструментов для заказа тиков, то да, такое может быть и в идеальном мире
Надо делать так, как надо. А как не надо - делать не надо.
написал: Странно сначала 1.04 а после появились 31.03 так должно быть?
Да.
Вообще-то, так не должно быть.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.04.2020 10:22:21
Похоже, при импорте настроек из *.wnd сбрасываются настройки заказа обезличенных сделок.
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.03.2020 15:56:27
Цитата
Anton написал: при переподписке квик будет получать тот же самый мэппинг без выгрузки/загрузки всего и вся, т.е. вхолостую, это уменьшит накладные расходы
проводился на виртуальном диске в ОЗУ. Т.ч., не могу подтвердить или опровергнуть ваше предположение.
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.03.2020 11:02:19
Цитата
Sergey Gorokhov написал: описанного поведения НЕ должно быть вообще. Вы описываете проблему с которой надо разобраться. И только если вдруг после разбора окажется что так и должно быть тогда да, будет пожелание. Сейчас это больше выглядит как баг, а не отсутствие функционала.
Что в итоге? Так и должно быть или баг?
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.03.2020 11:00:10
Появилось немного времени, решил потестить. При при пустом alltrade.dat заказ обезличенных сделок по классу EQOB (1393 бумаги) занимает 5 сек, при заполненном alltrade.dat (в конце торгов) 30 мин! Это на быстром диске, на HDD такое делать в середине-конце торгов не рекомендуется )) Посмотрел, что делает в это время QUIK: при подписке на каждый инструмент идёт множественное обращение к файлу alltrade.dat, и чем больше записей есть в таблице, тем больше будет обращений к файлу. Если заказывать обезличенные сделки не скриптом, а через меню, то обращения к alltrade.dat минимальны или отсутствуют.
Надо делать так, как надо. А как не надо - делать не надо.
У активной заявки заполнен UID снявшего заявку
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.03.2020 15:21:02
При снятии заявки приходит два колбека: в одном - UID снявшего, в другом актуальное состояние заявки.
Цитата
GoldRat написал: Как в таблице заявок у заявки с состоянием "Активна" поле "UID снявшего заявку" может быть не пустым?
Такое возможно, если терминал получает второй колбек с задержкой. Техподдержке надо смотреть в эту сторону.
Надо делать так, как надо. А как не надо - делать не надо.
Изменение алгоритма подачи заявки., Прошу изменить окно подачи заявки.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.03.2020 12:57:58
Должно помочь: Система / Настройки / Основные настройки… раздел «Торговля» / «Заявки» Установка операции заявки - Не указывать операцию
Надо делать так, как надо. А как не надо - делать не надо.
написал: Если торгуете на Московской бирже, то class_code + order_num уникальная комбинация.
в течение одного торгового дня
Откуда такая информация?
Надо делать так, как надо. А как не надо - делать не надо.
Ошибка при получении стакана с помощью getQuoteLevel2
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.03.2020 09:40:23
Subscribe_Level_II_Quotes
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.03.2020 23:41:34
Дополню: не изменять список инструментов в сторону уменьшения, пока пользователь не укажет это явно в настройках заказа данных.
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.03.2020 23:27:54
Цитата
Latrop написал: На чем основано данное несогласие?
Захват входящих пакетов на роутере с сервера QUIK. В случае заказа сделок по всем классам без фильтров трафик значительно больше. Если ошибся, прошу сотрудников Арки прокомментировать.
Цитата
Latrop написал: Что по доработкам потока обезличенных сделок (тиков) скажете?
Ломать, тем более автоматику не нужно. Нужно лишь научиться не изменять список инструментов в сторону уменьшения, как указал в .
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.03.2020 11:57:48
Цитата
Latrop написал: Как удалось разобраться, если заказано получение тиков хоть одного инструмента, то на клиент льется вообще весь поток всех(!) тиков. Фильтр по отдельным инструментам никакой экономии трафика не дает
Не соглашусь, при использовании фильтров трафик уменьшается.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Функция getParamEx2 не возвращает имеющийся параметр, напр TRADE_DATE_CODE или SECTYPESTATIC
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.03.2020 09:36:36
Цитата
Latrop написал: Если заказать ParamRequest(class1, sec1, par1) и ParamRequest(class1, sec2, par2) Т.е. для разных инструментов одного и того же класса будут заказаны разные параметры.То фактически терминал что сделает?
Цитата
Latrop написал: Будет неявно заказывать оба параметра для обоих инструментов
Да. Где-то была тема на форуме. QUIK не умеет фильтровать заказанные параметры внутри класса и будет слать все заказанные явно или неявно параметры для одного класса.
Надо делать так, как надо. А как не надо - делать не надо.
CalcBuySell, Долгая работа функции
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
05.03.2020 13:32:25
Среднее время выполнения функции CalcBuySell 6-7 мс. Как-то долго. Может, можно что-то подкрутить в настройках?
Надо делать так, как надо. А как не надо - делать не надо.
Контекстное меню в Lua-таблицах
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
01.03.2020 21:53:25
Или ещё проще: сделать в настройках терминала чекбокс "Показывать/не показывать контекстное меню в пользовательских таблицах"
Надо делать так, как надо. А как не надо - делать не надо.
Мышь окочурилась :)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.02.2020 13:45:21
Против нередактируемого контекстного меню (как для ячеек так и для заголовков). Оно мешает работе событий QTABLE_RBUTTON...
Надо делать так, как надо. А как не надо - делать не надо.
Контекстное меню в Lua-таблицах
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.02.2020 13:39:51
Sergey Gorokhov, У вас есть событие QTABLE_CONTEXTMENU, вот и обыграйте его. Вижу два варианта:
1) По умолчанию контекстное меню не показывается. Чтобы показать, надо вызвать функцию в коде:
Код
SetTableNotificationCallback(id, function(id, msg, row, col)
if msg == QTABLE_CONTEXTMENU then
ShowContextMenu()
end
end)
2) Второй вариант прямо противоположный. По умолчанию, при срабатывании события, отображается контекстное меню. Чтобы не отображать меню, надо принудительно запретить его в коде:
Код
SetTableNotificationCallback(id, function(id, msg, row, col)
if msg == QTABLE_CONTEXTMENU then
return
end
end)
Надо делать так, как надо. А как не надо - делать не надо.
Мышь окочурилась :)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
27.02.2020 10:20:35
Цитата
Kolossi написал: оставить только вывод меню сортировки в заголовке столбца
Категорически против! В версиях 8.1 и ниже сортировка нормально работает при клике на заголовок столбца с зажатой клавишей Ctrl или Shift
Надо делать так, как надо. А как не надо - делать не надо.
table.ssort, зависает терминал при выполнении table.ssort в main
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
09.01.2020 14:26:37
Нужно сделать операцию обновления ячеек атомарной, чтобы быть уверенным, что другой поток не изменит номер обновляемой строки. Это будет возможно после исправления ошибки?
Надо делать так, как надо. А как не надо - делать не надо.
Перестают работать события SetTableNotificationCallback
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
24.12.2019 12:54:43
Создаём QLua-окно, назначаем ему колбек на события QTABLE_CHAR и/или QTABLE_VKEY. Если переключиться на контрол "Edit" или "ComboBox" на панели инструментов ("Поиск инструмента", "Окно сообщений" и пр.), а затем активировать окно кликом на его заголовок, то события, назначенные раннее не работают. Чтобы заработали, нужно активировать кликом внутри окна.
Надо делать так, как надо. А как не надо - делать не надо.
недокументированные события QTABLE при нажатии мышки
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
24.12.2019 12:37:51
Нужны события MOUSE_WHEELSCROLL UP / DOWN Есть возможность добавить?
Надо делать так, как надо. А как не надо - делать не надо.
Замена заявки на ФР при помощи Order Cancel/Replace Request (G)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
24.12.2019 10:00:25
Для срочного рынка есть "MOVE_ORDERS"
Надо делать так, как надо. А как не надо - делать не надо.
Как создать пользовательскую таблицу?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.12.2019 12:33:07
Если знакомы с программированием, то вашу задачу можно решить на
Надо делать так, как надо. А как не надо - делать не надо.