Как в функцию SearchItems передать в качестве параметров элементы таблиц, вложенных в таблицы, например "legs" из таблицы "securities"?
Надо делать так, как надо. А как не надо - делать не надо.
Влияние колбэков на производительность
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
28.07.2026 18:26:50
Цитата
Старатель написал: Видно, что в первом случае упор идёт на пропускную способность канала (100 Мбит/с), т.е. гипотетически сделки могли загрузиться быстрее при более широком канале. Если у вас канал шире 100 Мбит/с, напишите, какие у вас результаты. Во втором случае - занята только половина ширины канала. Очевидно упёрлись в CPU, и скрипт не успевает обрабатывать колбэки с той скоростью, с которой поступают сделки.
В информационном окне QUIK есть параметр "Очередь сетевых сообщений". Судя по названию, предположительно, этот параметр показывает количество полученных, но ещё не декодированных сетевых пакетов клиентом, которые стоят в очереди на обработку. При запуске первого скрипта максимальное значение этого параметра не превышает 17. При запуске второго скрипта (с колбэком) максимальное значение в очереди достигает 20000.
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.07.2026 14:40:28
На открытии: duration: 00:00:10 (10.7 s) (10:00:44 - 10:00:55) SetCell: calls: 2899; total: 0.6 s ( 5.7%); avg: 0.21 ms; min: 0 ms; max: 19 ms
Но если подержать подольше, то может быть и так: duration: 00:23:28 (1408.5 s) (11:21:15 - 11:44:44) SetCell: calls: 174682; total: 101.4 s (7.2%); avg: 0.58 ms; min: 0 ms; max: 446 ms
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.07.2026 18:49:25
Цитата
Станислав написал: 122.6 s; num: 7088692; avg: 0.017 ms with OnAllTrade: 378.9 s; num: 7125638; avg: 0.053 ms
Оверхэд на колбэк не менее 0.036 мс, а то и больше. Не знаю, будут ли эти значения такими же для OnParam, OnQuote и др. Но если да, то умножте эту величину на количество всех колбэков в секунду, которые получает рабочий скрипт, и получите время, затрачиваемое только на вызов колбэков в течение 1 секунды. И это без их фактической обработки. Особенно это актуально в активные часы торгов, когда событий больше
Надо делать так, как надо. А как не надо - делать не надо.
Влияние колбэков на производительность
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.07.2026 15:40:10
Некоторые считают, что наличие пустых колбэков в скрипте не оказывает какой-либо значительной нагрузки на CPU. Имеется ввиду, когда скрипт работает с одним или нескольким инструментом, а в колбэке стоит фильтр, отсеивающий все остальные инструменты, вида:
Скрытый текст
Код
function OnParam(class_code, sec_code)
if class_code ~= class or sec_code ~= sec then return end
-- ...
end
function OnQuote(class_code, sec_code)
if class_code ~= class or sec_code ~= sec then return end
-- ...
end
function OnAllTrade(alltrade)
if alltrade.class_code ~= class or alltrade.sec_code ~= sec then return end
-- ...
end
Давайте проверим. Для оценки оверхэда я буду использовать таблицу обезличенных сделок. Сначала измеряем время загрузки таблицы с запущенным скриптом без колбэков (скрипт №1):
Скрытый текст
Код
local run = true
function OnStop() run = nil end
function main()
local n = getNumberOf("all_trades")
local m = n
message("Num all trades: " .. n)
repeat
sleep(1)
m = n; n = getNumberOf("all_trades")
if run == nil then return end
until n < m
local t = os.clock()
message("Num all trades: " .. m)
repeat
sleep(1)
n = getNumberOf("all_trades")
if run == nil then return end
until n >= m -- ожидание пока прокачаются все сделки
t = os.clock() - t
message(string.format("%.1f s; num: %u; avg: %.3f ms", t, n, t / n * 1000))
end
Затем измеряем время загрузки таблицы с запущенным скриптом, с пустым колбэком OnAllTrade (скрипт №2):
Скрытый текст
Код
local run = true
function OnStop() run = nil end
function main()
local n = getNumberOf("all_trades")
local m = n
message("Num all trades: " .. n)
repeat
sleep(1)
m = n; n = getNumberOf("all_trades")
if run == nil then return end
until n < m
local t = os.clock()
message("Num all trades: " .. m)
repeat
sleep(1)
n = getNumberOf("all_trades")
if run == nil then return end
until n >= m -- ожидание пока прокачаются все сделки
t = os.clock() - t
message(string.format("with OnAllTrade: %.1f s; num: %u; avg: %.3f ms", t, n, t / n * 1000))
end
function OnAllTrade(alltrade) end
Как использовать:
Настройка получения данных выполняется через пункт меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных» / «Обезличенные сделки» В поле «Выбрать классы инструментов» выбрать все без фильтров! Это важно для корректных измерений, ниже объясню почему. Если у вас уже выбраны все классы без фильтров этот шаг можно пропустить. Если нет, - то нажать кнопку «Перезаказать данные».
Подождать пока прокачаются все сделки и запустить первый скрипт.
Снова перезаказать обезличенные сделки и дождаться, когда скрипт выведет итоговый результат и остановится.
Повторить 3-й пункт со вторым скриптом.
У меня получились такие результаты в QUIK 13.0.2.20:
Скрипт №1:
Код
38.9 s; num: 5497547; avg: 0.007 ms
Скрипт №2:
Код
with OnAllTrade: 79.8 s; num: 5513332; avg: 0.014 ms
В диспетчере задач это выглядит так:
Скрытый текст
Видно, что в первом случае упор идёт на пропускную способность канала (100 Мбит/с), т.е. гипотетически сделки могли загрузиться быстрее при более широком канале. Если у вас канал шире 100 Мбит/с, напишите, какие у вас результаты. Во втором случае - занята только половина ширины канала. Очевидно упёрлись в CPU, и скрипт не успевает обрабатывать колбэки с той скоростью, с которой поступают сделки. Среднее время обработки одной сделки в первом случае составляет 7 мкс, а во втором - 14 мкс. Если у вас разницы нет, что с колбэком, что без него, значит узким местом является не процессор, а например, пропускная способность сети (подключение по Wi-Fi) или сервера. Так, если выбрать заказ не всех обезличенных сделок, а только некоторых классов или отдельных инструментов, то время прокачки сделок с первым скриптом без колбэка практически не изменится, зато со вторым скриптом уменьшится. Это говорит о том, что данные поступают медленнее, чем их обрабатывает терминал, что не годится для оценки оверхэда.
Результаты при одновременном запуске 5 и 10 копий скрипта №1:
Код
39.3 s; num: 5566964; avg: 0.007 ms
39.3 s; num: 5566984; avg: 0.007 ms
39.3 s; num: 5566984; avg: 0.007 ms
39.3 s; num: 5566984; avg: 0.007 ms
39.3 s; num: 5566984; avg: 0.007 ms
Код
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583867; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
39.1 s; num: 5583868; avg: 0.007 ms
Скрытый текст
Среднее время на сделку не изменилось. Ограничением по-прежнему выступает пропускная способность канала.
Результаты при одновременном запуске 2 и 3 копий скрипта №2 (с колбэком):
Код
with OnAllTrade: 132.1 s; num: 5628639; avg: 0.023 ms
with OnAllTrade: 132.1 s; num: 5628645; avg: 0.023 ms
Скрытый текст
Код
with OnAllTrade: 180.1 s; num: 5680264; avg: 0.032 ms
with OnAllTrade: 180.1 s; num: 5680264; avg: 0.032 ms
with OnAllTrade: 180.1 s; num: 5680264; avg: 0.032 ms
Скрытый текст
Среднее время на сделку увеличивается примерно на ~9 мкс с добавлением каждого нового скрипта.
Данный тест показывает, что само по себе наличие даже пустого колбэка в скрипте оказывает влияние. А поскольку колбэки работают в основном потоке квика, то это сказывается также и на работе графического интерфейса и квика в целом.
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.07.2026 13:15:52
Цитата
Nikolay написал: Тот же LASTRECORDTIME важен, т.к. иногда приходят опоздавшие данные и их лучше пропускать.
В LASTRECORDTIME проставляется время сервера или клиента?
Надо делать так, как надо. А как не надо - делать не надо.
Вы так ничего не измерите. Обработка кода внутри колбэка идёт на ура. Оверхэд возникает из-за самого вызова колбэка, даже пустого. Смотрите мой пример .[QUOTE]
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.07.2026 00:03:34
Цитата
TGB написал: Никаких особенностей не заметил (с подключением пакетов и без).
Сколько у вас колбэков в секунду?
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.07.2026 15:21:10
Цитата
Старатель написал: Оценить оверхэд от колбэков можно на следующих скриптах:
Как использовать:
Настройка получения данных выполняется через пункт меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных» / «Обезличенные сделки» В поле «Выбрать классы инструментов» выбрать все без фильтров! Это важно для корректных измерений. Если у вас уже выбраны все классы без фильтров этот шаг можно пропустить. Если нет, - то нажать кнопку «Перезаказать данные».
Подождать пока прокачаются все сделки и запустить первый скрипт.
Снова перезаказать обезличенные сделки и дождаться, когда скрипт выведет итоговый результат и остановится.
Повторить 3-й пункт со вторым скриптом.
Надо делать так, как надо. А как не надо - делать не надо.
Работа колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
21.07.2026 14:54:06
Давно эта тема обсуждалась, ещё в 9-й версии. Оценить оверхэд от колбэков можно на следующих скриптах:
Код
local run = true
function OnStop()
run = nil
end
function main()
local n = getNumberOf("all_trades")
local m = n
message("Num all trades: " .. n)
repeat
sleep(1)
m = n; n = getNumberOf("all_trades")
if run == nil then return end
until n < m
local t = os.clock()
message("Num all trades: " .. m)
repeat
sleep(1)
n = getNumberOf("all_trades")
if run == nil then return end
until n >= m -- ожидание пока прокачаются все сделки
t = os.clock() - t
message(string.format("%.1f s; num: %u; avg: %.3f ms", t, n, t / n * 1000))
end
Код
local run = true
function OnStop()
run = nil
end
function main()
local n = getNumberOf("all_trades")
local m = n
message("Num all trades: " .. n)
repeat
sleep(1)
m = n; n = getNumberOf("all_trades")
if run == nil then return end
until n < m
local t = os.clock()
message("Num all trades: " .. m)
repeat
sleep(1)
n = getNumberOf("all_trades")
if run == nil then return end
until n >= m -- ожидание пока прокачаются все сделки
t = os.clock() - t
message(string.format("with OnAllTrade: %.1f s; num: %u; avg: %.3f ms", t, n, t / n * 1000))
end
function OnAllTrade(alltrade) end
Перезаказываете обезличенные сделки и замерете время прокачки всех сделок в обоих случаях. Важно: в поле «Выбрать классы инструментов» указать все инструменты без фильтров для более точных измерений! У меня результаты такие:
Код
40.2 s; num: 5719275; avg: 0.007 ms
with OnAllTrade: 85.7 s; num: 5731311; avg: 0.015 ms
Скрытый текст
Видно, что в первом случае упор идёт на пропускную способность канала, т.е. гипотетически сделки могли загрузиться быстрее при более широком канале. Во втором случае скрипт не успевает обрабатывать колбэки с той скоростью, с которой поступают сделки. А мы помним, что колбэки работают в том же потоке, что и GUI. Если у вас разницы нет, что с колбэком, что без него, значит узким местом является не процессор, а например, пропускная способность сети (подключение по Wi-Fi) или сервера. И тогда таким образом оценить оверхэд не получится.
Цитата
Nikolay написал: При этом на демо Quik Junior, где поток данных очевидно низкий, это малозаметно.
Поэтому у разработчиков всё отлично и "не воспроизводится".
Надо делать так, как надо. А как не надо - делать не надо.
Мало кто об этом знает.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.03.2023 13:35:24
Цитата
nikolz написал: когда посмотрели последнюю 227851 строку, заняли память 1205 952 КБ т е округленно 1.2 Г
Какая версия QUIK и Lua?
Надо делать так, как надо. А как не надо - делать не надо.
Это еще блин че такое на графике Яндекса (YNDX) ???
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.03.2023 08:32:51
Цитата
nikolz написал: Предположу, что это сбой на сервере.
Не факт. Уже была похожая проблема:
Quikos_1, закройте косячный график и создайте диаграмму заново. Если проблема уйдёт, значит - локальная.
Надо делать так, как надо. А как не надо - делать не надо.
КРАШ -ТЕСТ терминала
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
28.02.2023 23:20:30
CalcBuySell и в 8-м квике была тормознутой
Надо делать так, как надо. А как не надо - делать не надо.
4 часа - это не срок. У меня скрипты годами (!) работают, но иногда вылазят ошибки, описанные в данном треде. Многие ошибки даже за неделю непрерывных нагрузочных тестов нереально воспроизвести.
Надо делать так, как надо. А как не надо - делать не надо.
Функция getDepoEx возвращает nil на имеющийся в портфеле инструмент, В каких случая такой возможно?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
28.10.2022 09:53:24
Надо делать так, как надо. А как не надо - делать не надо.
Графический размер стакана на загруженной вкладке не соответствует сохраненному
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
02.09.2022 13:03:32
Цитата
Старатель написал: Часто при загрузке вкладки из файла размеры окон не соответствуют оригиналу, если на вкладке есть закрепленные окна. Поэтому, перед сохранением вкладки в файл приходится все окна на вкладке "отзакреплять".
Предполагается, что сотрудники компании разработчика отреагируют на баг-репорт.
Надо делать так, как надо. А как не надо - делать не надо.
Переносить заявку, Дата экспирации в LUA скриптах.
написал: При этом нет возможности узнать, какой язык установлен в терминале и сформировать транзакцию на нужном языке
Можем зарегистрировать пожелание на доработку функционала в этом месте. Регистрируем?
И зачем опять эти танцы с бубном? Универсальный формат должен поддерживаться на уровне терминала. Если уж сделали два формата транзакций, так делайте, чтобы терминал принимал оба, вне зависимости от текущей региональной настройки.
Надо делать так, как надо. А как не надо - делать не надо.
Переносить заявку, Дата экспирации в LUA скриптах.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.08.2022 12:01:47
Цитата
Alexey Danin написал: Можете переключить интерфейс терминала на английский, и тогда в коде Lua скрипта можно будет задавать данные поля транзакции на латинице.
Т.е., формат транзакции не является универсальным и зависит от текущей настройки языка интерфейса? Жесть.
Надо делать так, как надо. А как не надо - делать не надо.
Индикатор для арбитража
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.08.2022 22:28:59
Цитата
Александр М написал: У вас "y" каждый тик пересчитывается от себя же, на текущем баре "y" просто уйдет в цену, а не будет средней. Так что красиво рисуется только на истории.
Автор сам чайник и не в курсе, что: 1) В OnCalculate индекс свечей начинается с 1. А getCandlesByIndex возвращает таблицу, где первая свечка имеет индекс 0. Соответственно, для getCandlesByIndex надо брать свечи со смещением на -1. 2) В реалтайм такой индикатор считает не разность цен, а хрень какую-то. Графики обновляются не синхронно. => В реалтайм будут ситуации, когда свеча по одному инструменту уже открылась, а по другому - ещё нет. Или в течение определённого интервала времени не будет ни одной сделки по одному из инструментов. Значение close такой свечи будет = 0.
Надо делать так, как надо. А как не надо - делать не надо.
Фильтр инструментов в quik, Создать дополнительные параметры фильтра инструментов
Думаю, стоит смотреть в эту сторону. Возможно, фильтры сбрасываются при переключении инструмента, если ТОС привязана к ТТТ.
Надо делать так, как надо. А как не надо - делать не надо.
Автомасштаб графика сужается иногда, Автомасштаб графика сужается иногда
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.08.2022 12:31:10
Цитата
Радик написал: Получаеться так: Когда руками сузишь график, переключишься на другую акцию и обратно, то уже на всех акциях масштаб суженый запоминается.
Была такая же история, QUIK 9.5. Как появилась внезапно, так потом также внезапно и исчезла.
Цитата
Karina Dmitrieva написал: график находится в режиме связанных окон с Таблицей текущих торгов?
Да.
Цитата
Karina Dmitrieva написал: И как именно переключаетесь между инструментами?
Кликом мыши по строке с нужным инструментом. А какие ещё варианты есть?
Надо делать так, как надо. А как не надо - делать не надо.
Снятие/перемещение заявок в стакане
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
12.08.2022 11:58:13
Цитата
Karina Dmitrieva написал: сформулировать достаточно подробное описание запрашиваемого функционала
Karina Dmitrieva, я же подробно описал в сообщениях и . Именно такой подход у меня работает в ботах. Если какой-то момент является не понятным - готов к диалогу.
Надо делать так, как надо. А как не надо - делать не надо.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
Roman Mural написал: для удаления меток Вы можете воспользоваться функцией DelAllLabels
Значит, плохо было задумано. Возьмите два индикатора, которые ставят/снимают метки на одной диаграмме на разных графиках с разными идентификаторами в разных областях и полюбуйтесь, как они будут удалять чужие метки. А заодно сотрут ещё и все пользовательские метки в той же диаграмме.
Надо делать так, как надо. А как не надо - делать не надо.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
Надо делать так, как надо. А как не надо - делать не надо.
Снятие/перемещение заявок в стакане
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.08.2022 13:40:18
Alexey Ivannikov, это абстрактное описание, из которого трудно сделать какие-либо конструктивные выводы.
Надо делать так, как надо. А как не надо - делать не надо.
Снятие/перемещение заявок в стакане
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.08.2022 12:11:33
Alexey Ivannikov, я не могу ответить утвердительно, не видя конкретных предложений. Потому что, когда вы делаете какую-то настройку, которую , и клиент , а вы пишите, типа "это - не мы, это - всё брокер настраивает, обращайтесь к брокеру", то это выглядит как издёвка.
Надо делать так, как надо. А как не надо - делать не надо.
Графический размер стакана на загруженной вкладке не соответствует сохраненному
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
01.08.2022 16:18:12
Часто при загрузке вкладки из файла размеры окон не соответствуют оригиналу, если на вкладке есть закрепленные окна. Поэтому, перед сохранением вкладки в файл приходится все окна на вкладке "отзакреплять".
Надо делать так, как надо. А как не надо - делать не надо.
Что произойдет со скриптами если загрузить вкладку, а на ней уже есть такие же идинтификаторы ?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.07.2022 20:09:05
Цитата
Евгений написал: Если идентификаторы совпадают ? Они сотрутся или нет ? Сообщение появится ?
Проверить опытным путём быстрее, чем дождаться ответ. По крайней мере, при копировании диаграммы, идентификаторы удаляются.
Цитата
Евгений написал: Как найти график на котором такой же идентификатор ?
Лайфхак: создать скрипт, который создаёт метку на графике. Далее листаем графики в поиске этой метки.
Надо делать так, как надо. А как не надо - делать не надо.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.07.2022 14:45:30
Вопрос был к клиентской поддержке.
Надо делать так, как надо. А как не надо - делать не надо.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
29.07.2022 14:45:16
Цитата
nikolz написал: тогда в цикле DelLabel(STRING chart_tag, NUMBER label_id)
nikolz, я знаю, что вы не умеете читать, как минимум код. В коде в первом сообщении это есть.
Надо делать так, как надо. А как не надо - делать не надо.
Удваиваются заявки. Версия 9.7.1.10., Вопрос разработчикам QUIK
И в чём же проблема была? Каким образом решили проблему?
Надо делать так, как надо. А как не надо - делать не надо.
Посоветуйте как правильно передавать данные?, доступ в квик стороннему программиста без права выставления реальных ордеров (для тестирования стратегии)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
26.07.2022 11:01:32
И всегда вокруг буратин крутятся жулики, желающие обобрать их до нитки, и впаривают ненужные услуги. "Не обманешь - не продашь", - как говорится.
Надо делать так, как надо. А как не надо - делать не надо.
Посоветуйте как правильно передавать данные?, доступ в квик стороннему программиста без права выставления реальных ордеров (для тестирования стратегии)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
25.07.2022 23:12:38
Цитата
nikolz написал: вам надо создать сервер доступный из интернет. далее используя socket транслируете данные на сервер.
И заплатить ещё программисту за создание этого сервера.
Цитата
Илья написал: Задача дать стороннему (!) программисту данные о торгах по акциям в реальном времени (ну или хотя бы минутными свечами) желательно без права выставления ордеров
У некоторых брокеров можно запросить ещё один аккаунт для квика, иногда за доп. плату. Спросите своего брокера о возможности предоставления вам "просмотрового" аккаунта.
Надо делать так, как надо. А как не надо - делать не надо.
Невозможность скролла таблицы
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
25.07.2022 23:07:21
Цитата
Сергей написал: если соединяю ее с графиком (через якорь), то стрелочками она уже вниз/вверх не листается
Аналогичная проблема. QUIK 9.5
Надо делать так, как надо. А как не надо - делать не надо.
Таких глюков ещё не было. брокер Открытие, В таблице отображаются не существующие заявки, которые нельзя не увидеть, не снять.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.07.2022 19:44:27
Цитата
Alexey Ivannikov написал: Ситуация повторяется сейчас на актуальной версии терминала 9.7?
В бою 9.7 не использую. Но на днях в 8.13 была похожая ситуация: утром после подключения к серверу не загрузилась часть заявок, выставленных в вечернюю сессию. Причём не загрузилась на том терминале, на котором эти заявки накануне были выставлены. Не было этих заявок ни в таблице заявок, ни в orders, не было и колбеков по ним. Переподключение к серверу опять же ничего не дало. На других терминалах все заявки были загружены. А потом в течение дня (около 16 ч.) без всяких переподключений все недостающие заявки подгрузились. Что это было - не знаю.
Надо делать так, как надо. А как не надо - делать не надо.
Пустое значение trans_id в таблице сделок.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.07.2022 16:44:45
Цитата
Nikolay написал: Но, кажется, формулировка разработчиков была - есть изменения во внутренних полях, недоступных для чтения, все равно получите callback.
Кажется, формулировка была :
Цитата
Sergey Gorokhov написал: По данному обращению мы определили, что причиной множественных отправок сделок (более двух) на клиентские места является неоптимальность в серверном ПО QUIK. После ее устранения сделки могут быть отправлены на клиентское место максимум 2 раза - по получению сделки из торговой системы и по факту ее обновления.
Надо делать так, как надо. А как не надо - делать не надо.
Пустое значение trans_id в таблице сделок.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.07.2022 14:49:43
Цитата
Nikolay написал: Если обратите внимание на колбек OnTrade, то он приходит три раза на сделку. Каждый раз - это какое-то изменение в записи таблицы.
Во-первых, по новым правилам (QUIK 9.7.1.10) на одну сделку приходится не три, а четыре колбека OnTrade. Во-вторых, в большинстве случаев, все четыре OnTrade абсолютно одинаковые. В некоторых случаях один из них может отличаться параметром broker_comission и, возможно, другими параметрами со словом *comission*
Надо делать так, как надо. А как не надо - делать не надо.
Большие колебания требуемой оперативной памяти.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
15.07.2022 11:34:44
Не плохо было бы добавить в Менеджер окон параметры CPU Usage и Memory для каждого окна.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Кривое автомастабирование на графиках с отрицательными ценами
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.07.2022 23:39:36
Цитата
Anzhelika Belokur написал: график масштабируется таким образом, что минимальное цена свечи графика попадает ровно на границу области, но не обрезается
Не обрезается, а просто перекрывается рамкой. Ну это в корне меняет дело, конечно.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Кривое автомастабирование на графиках с отрицательными ценами
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.07.2022 14:59:21
Цитата
Anzhelika Belokur написал: По поводу обрезания свечей при отрицательных значениях, демонстрируем поведение на Рис.2
Ну видно же, что минимумы свечей от 11 числа обрезаются (те, которые упираются в нижний край). Чтобы было наглядней я взял бары и увеличил масштаб (то же 11 число, время на скринах видно). Автомасшатирование:
Скрытый текст
Сравните с масштабированием вручную:
Скрытый текст
Цитата
Anzhelika Belokur написал: можно понятным образом интерпретировать такое поведение - по инструменту отсутствует позиция и она принимается равной 0 и соответствующим образом считается цена приобретения - 0. Автомасштабирование же отрабатывает так, чтобы отображать этот нулевой уровень цены приобретения.
Весьма сомнительная версия. Откройте любой график с только положительными ценами и посмотрите будет ли там нулевой уровень цены при тех же настройках.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Кривое автомастабирование на графиках с отрицательными ценами
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.07.2022 08:09:23
Цитата
Anzhelika Belokur написал: мы не смогли воспроизвести его у себя в терминале (у нас все свечи отображаются корректно)
Anzhelika Belokur, прикрепите скриншот графика календарного спреда BR-8.22-9.22 (важно: не график фьючерса, как это демонстрирует тут один персонаж, а именно спреда) или любого другого с отрицательными ценами с установленными галками "с учётом цен заявок и позиций" (сообщение #1) и "уровень позиции" (сообщение #3). Очень любопытно на это посмотреть.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Кривое автомастабирование на графиках с отрицательными ценами
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.07.2022 07:59:04
Цитата
nikolz написал: Где Вы увидели отрицательные цены?
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Кривое автомастабирование на графиках с отрицательными ценами
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
12.07.2022 15:37:01
Anzhelika Belokur, спросите у коллег, где взять дистрибутив программы. Если вы испытываете затруднения в установке QUIK на компьютер, то я могу помочь установкой по RDP вам или вашему бесполезному тестировщику.
Надо делать так, как надо. А как не надо - делать не надо.