Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.05.2020 08:29:27
Egor Zaytsev, я знаю, как работало и как стало работать в 8.5. А вы, похоже, не знаете.
Цитата
создайте две таблицы с разными инструментами. После чего откройте и покажите фильтры каждой из них.
Надо делать так, как надо. А как не надо - делать не надо.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
20.05.2020 19:23:32
Egor Zaytsev, создайте две таблицы с разными инструментами. После чего откройте и покажите фильтры каждой из них.
Надо делать так, как надо. А как не надо - делать не надо.
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.05.2020 14:02:42
Было бы неплохо, если бы наконец устранили древнюю проблему, когда цвета таблицы, установленные из скрипта в SetColor, сбрасываются при применении фильтра.
Надо делать так, как надо. А как не надо - делать не надо.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.05.2020 12:08:37
Как в 8.5.2 увидеть фильтр для открытой таблицы обезличенных сделок (не общий фильтр, а именно для конкретной ТОС)?
Надо делать так, как надо. А как не надо - делать не надо.
Lua: изменить название колонки
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.05.2020 10:18:58
Сделать функцию для изменения названий колонок в QLua-таблицах.
Надо делать так, как надо. А как не надо - делать не надо.
Как отключить выпадающее меню сортировки при правом клике мышкой на ячейку таблицы в новой версии LUA?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.05.2020 13:36:37
Цитата
Sergey Denegin написал: раньше такое было только при клике на заголовке таблицы.
Не правда, не было.
Надо делать так, как надо. А как не надо - делать не надо.
Tradedate
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.05.2020 12:36:59
Ответ в категориях "наверное", "по идее" и т.п. не устраивает. Мы с вами не баллистические ракеты проектируем Можете пригласить тов. Nikolay Pavlov, надеюсь он сможет что-то конкретное сказать.
Надо делать так, как надо. А как не надо - делать не надо.
Tradedate
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.05.2020 12:12:19
getTradeDate() в OnCleanUp всегда даёт актуальную дату торговой сессии или это у меня так совпало?
Скрытый текст
Чтобы не вставать два раза, поясню: В данной теме обсуждается проблема получения в OnCleanUp параметра "Дата торгов" через запрос getInfoParam("TRADEDATE"). И действительно данный запрос в OnCleanUp возвращает дату предыдущей торговой сессии. Как обстоит дело с getTradeDate()?
Надо делать так, как надо. А как не надо - делать не надо.
Tradedate
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.05.2020 08:46:59
getTradeDate() в OnCleanUp всегда даёт актуальную дату торгов или это у меня так совпало?
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.05.2020 14:37:46
Цитата
Evgeniy Karnaukhov написал: Если SetCell сработает между этими вызовами, то, так как строка уже удалена и не найдена, она будет добавлена вновь.
Зачем?
Цитата
Evgeniy Karnaukhov написал: возможна ситуация, при которой строка уже удалена, но новая не вставлена.
Пример без InsertRow:
Код
rows = 20
function OnParam()
if not run then return end
rows = rows - 1
DeleteRow(id, 1)
if rows == 10 then run = nil end
end
function main()
id = AllocTable()
AddColumn(id, 1, 'row', true, QTABLE_INT_TYPE, 15)
CreateWindow(id)
SetWindowPos(id, 0, 0, 110, 350)
for i = 1, rows do InsertRow(id, -1) end
run = true
while run do
SetCell(id, 5, 1, tostring(rows))
sleep(1)
end
for row = 0, GetTableSize(id) do
SetCell(id, row, 1, tostring(row))
end
end
Результат:
Обсуждаемая проблема может возникнуть в любом скрипте, в котором в одном потоке пишутся данные в таблицу, а в другом удаляется строка из начала/середины таблицы. Предложение Антона создать пользовательский колбек выглядит разумным. Да и в других ситуациях такой колбек не помешал бы.
Надо делать так, как надо. А как не надо - делать не надо.
Quik 8.5 не освобождается память
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.05.2020 09:51:23
Цитата
Старатель написал: При остановке скрипта в результате ошибки память не освобождается.
Также не выгружаются загруженные в скрипт библиотеки. Эти проблемы, вроде, уже лечили в 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 не умеет фильтровать заказанные параметры внутри класса и будет слать все заказанные явно или неявно параметры для одного класса.
Надо делать так, как надо. А как не надо - делать не надо.