После обновления QUIK с версии 10.1.2.2 (могу ошибаться в точности версии, но переход с 10.1.3.3 до 10.3... точно) начал грузить одно из ядер процессора на 100% и терминал начал подвисать, особенно при пролистывании "разряженного стакана". Мне это видится как добавление разных функций для удобства, например более наглядная таблица ввода заявок, клиентский портфель, фильтры в таблицах и прочие визуально приятные мелочи.
В терминале на 1й вкладке открыто ~22-25 стаканов и около 44 графика и около десятка таблиц. Это много и не типично для большинства. Всё это ранее работало без подтормаживания, а теперь процессор не тянет такое количество стаканов. проц: Intel® Xeon® CPU E5-2640 v3 2.60GHz На вкладке с 2я стаканами и парой графиков - всё работает прекрасно.
Мне бы не хотелось отказываться от обновлений QUIK, пожалуйста сделайте настройку в пользу производительности в ущерб удобству, как в соседней теме человек предложил сделать стиль winXP или что то по типу этого.
С разными улучшениями терминала увеличиваются и системные требования, но многие любят квик за его практичность и прохождение стресс тестов в десятки тысяч сделок за день
Предлагаю отписать людям с похожей проблемой подтормаживания после последних обновлений, думаю я не уникальный
Есть ли какая то разница в заказе данных: "Дата исполнения инструмента" и например "лучшая цена предложения". По логике дата исполнения не меняется в течении дня и должна делать меньшую нагрузку на трафик/лаги чем лучший бид или лучший аск, которые постоянно меняются.Этот вопрос при учёте что все параметры заказываются раз в минуту для избегания нагрузки. Или же заказ каждого параметра по отдельности грузит систему одинаково? количество сделок за сегодня - время последней сделки - биржевой статус сесии это всё одинаково использует трафик? Интересуюсь с целью оптимизации квика, чтобы потом не создавать темы про зависания и лаги квика
уточню: данный скрипт на событие по времени сервера quik. скрипт зацикливается если например указать на 5-6 часов больше, если меньше 5 часов то условие срабатывает, хотя по факту время ещё не наступило может ли это как то связано с изменение формата времени в windows. сброс формата не помог, так перевод времени и часового пояса на МСК не помогло
Скрипт работал примерно 2-3 месяца назад, потом был отложен на полку. Сейчас скрипт перестал работать, потратил примерно 6 часов, но ничего не помогло подскажите пожалуйста если ли в коде ошибка? Образец взят от самих разработчиков
Код
isRun = true
base_time = "09:07:00" -- время в которое исполнится заявка.время операционной системы
function FixTime(V)
V=tostring(V)
local Out = os.date("!*t",os.time())
local len = string.len(V)
if len > 6 then
Out.hour,Out.min,Out.sec = string.match(V,"(%d%d)%p(%d%d)%p(%d%d)")
elseif len == 6 then
Out.hour,Out.min,Out.sec = string.match(V,"(%d%d)(%d%d)(%d%d)")
elseif len == 5 then
Out.hour,Out.min,Out.sec = string.match(V,"(%d)(%d%d)(%d%d)")
end
return Out
end
function main()
while isRun do
stime = tostring(GetInfoParam("SERVERTIME"))
--stime = tostring(os.time)
message(tostring(stime))
message(tostring(base_time))
if os.time(FixTime(stime)) < os.time(FixTime(base_time)) then
elseif os.time(FixTime(stime)) >= os.time(FixTime(base_time)) then
result = 1
if result ~= 1 then
message(tostring("Транзакция не прошла проверку на стороне терминала QUIK"))
else
message(tostring("Транзакция отправлена"))
isRun = false
end
sleep(100)
end
sleep(1500)
end
message(tostring("====="))
sleep(100)
end
После обновления квика до 8.13.1.16 появилась проблема: в разряженном стакане - выбираем в настройках: выделять котировки цветом 1) цвет в спреде почему то зелёный (дефолтные цвета) 2) так же за пределами видимости стакана цена и BUY и SELL перекрашены в зелёный 3) зелёный цвет сьезжает на цены продаж вообщем, баги и ошибки отображения цветов, именно при разряженном стакане мои настройки стакана: покупатели внизу, 3 столбца: покупка-цена-продажа
Sergey Gorokhov написал: Hired, Проверьте визуально таблицу лимитов по бумагам, есть ли в ней строка с нужной бумагой и теми параметрами которые Вы передаете в функцию
Да. верно. Если не было покупок или заявок по бумаге, то возвращает nil. До этого думал что вернёт "0" по бумаге. Спасибо!
почему то с определёнными акциями работает. например {"ALRS","CHMF","RKKE","RUSI"} - всё отлично если добавить GAZP или другие шлаки SARE KBTK - то выходит ошибка "attempt to index a nil value (global 'table_depo')"
Здравствуйте! Подскажите в чём ошибка кода? На демо - всё работает, на реале пишет "attempt to index a nil value (global 'table_depo')" указывая на строку "code = table_depo.sec_code"
Код
firma = "MC0061900000"
kode_cl = "376622RI23KQ"
schet_depo = "L01+00000F00"
raschet_T = 2
class_code = "TQBR"
tiker = {"AFLT","GAZP","GMKN","SBERP"}
function main ()
for i = #tiker,1,-1 do
bumaga = tiker[i]
table_depo = getDepoEx (firma,kode_cl,bumaga,schet_depo,raschet_T)
code = table_depo.sec_code
message(tostring(code))
end
end
Со вторым вопросом разобрался. Может кому пригодится: в настройках стакана нужно убрать галочку "Применять глобальный фильтр клиентов". Так же появится отображение "своего объёма", если такие колонки выведены в стакан. По крайней мере на демо счёте так. Нет возможности проверить на реальных торгах из за выходного дня
Могу ошибаться, но думаю транслируемый сокращённый вид фьючерсов выбирает брокер и поменять его нельзя Например в финаме вид как на скрине сбера и за 4 года не менялся
Здравствуйте! Являюсь уверенным пользователем QUIK. Пользуюсь разными настройками и горячими клавишами
В прошлой версии QUIK 8.4. -- "Линейка" на клавишах не работала. Думал, что разрабам известна проблема и пофиксят в следующей версии 8.5.++, но проблема осталась.
Не работает "Линейка" на горячих клавишах, которая находится на панели около кнопок "увеличить/уменьшить" и "режим ввода/изменения заявки из окна диаграммы" Возможно делаю что то не так. Просьба объяснить мою ошибку или исправить данный баг
Ещё короткий вопрос, не создавая отдельную тему: Почему сейчас не получается убрать заявку правой кнопкой мыши в стакане с включённым скальперским режимом "Быстрый ввод/снятие заявки". Возможно добавили какие то отдельные настройки для этого, пробовал - не получилось
for i = #sec_code, 1, -1 do
local bumaga = sec_code
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
Спасибо! Этот способ сработал! Проблема решена. Всё оказалось проще, чем я думал :)
Цитата
Nikolay написал: Эту задачу можно решить разными способами.
Цитата
Anton написал: Предлагаю другой вариант: перед циклом for создайте временный пустой массив
Спасибо за советы! В будущем обязательно попробую предложенные варианты в более сложных скриптах!
Здравствуйте! Не получается решить проблему с удалением элемента из массива, который прошёл проверку. Пробовал и поиск и разные способы, но ничего не помогло.
Нужно чтобы после выполнения условия "if Raznica > 1 then" выводилось сообщение и данный элемент (в моём случае в цикле это "bumaga") больше не входил в проверку и повторно не выводилось сообщение. Нужно убрать этот элемент из sec_code = { ... }, т.е. удалить конкретный элемент из массива sec_code
Понял лишь то, что после message ... нужно использовать "table.remove", что то вроде:
Код
if Raznica > 1 then
message(tostring(bumaga .. " " .. Raznica ))
table.remove (sec_code, 1)
sleep(3000)
но указать удаление конкретной акции (прошедшей проверку) в массиве не получается.
Надеюсь понятно изложил проблему. Начинающий говнокодер :) Может кто помочь советом?
Код
IsRun = true
sec_code = { "GAZAP", "LKOH", "SBER", "GMKN", "TRFM", "RAVN" }
class_code = "QJSIM"
function main()
while IsRun do
for _,bumaga in ipairs(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 ))
sleep(3000)
end
end
end
end
function OnStop()
IsRun = false
end
Подскажите пожалуйста, есть ли функция или параметр получения "суммы лучших" из стакана? Или только путём сложения всех бидов и асков? Новичок в этом деле, поиск пробовал.