Egor Zaytsev написал: ParamRequest() это добавление в список ожидаемых заказов. Для понимания что заказанный параметр начал ехать нужно реализовать коллбэк OnParam()
Для информации: после ParamRequest может пройти от 1 до 10-20 сек и десятки OnParam, прежде чем сервер обновит список транслируемых параметров.
Надо делать так, как надо. А как не надо - делать не надо.
Roman Azarov написал: Контекстное меню открывается.
Открывается при втором клике по заявке, когда окно стакана уже становится активным.
А при первом клике вместо контекстного меню активируется режим drag-and-drop. Правой клавишей мыши, Карл. И заявка может сместиться, если котировки в это время в стакане "дернутся".
Надо делать так, как надо. А как не надо - делать не надо.
local class, sec_code = "SPBFUT", "SiU1"
local run = true
function OnStop()
run = nil
end
function main()
local ds = assert(CreateDataSource(class, sec_code, 1))
ds:SetUpdateCallback(function (index)
if index < ds:Size() then return end
for i = 1, index do
ds:T(i)
ds:O(i)
ds:H(i)
ds:L(i)
ds:C(i)
ds:V(i)
end
end)
while run do sleep(1000) end
end
За несколько минут объём занимаемой скриптом памяти вырастает с 300 Кб до Гигабайтов.
Если график раннее не заказывался и убрать строку
Код
if index < ds:Size() then return end
, то сразу при запуске будет 2Гб.
Надо делать так, как надо. А как не надо - делать не надо.
Daniil Pozdnyakov написал: наименования класса инструмента, на котором пытаетесь использовать данный функционал.
SPBFUT
Цитата
Daniil Pozdnyakov написал: являетесь ли Вы клиентом брокера или пользуетесь Демо-доступом?
Оба
Цитата
Daniil Pozdnyakov написал: Касательно удвоенного отображения объема на последней свече.
Возможно, починили какую-то другую проблему. Я имел ввиду проблему кривого объёма на предпоследней свече предыдущего дня. Скриншотов я полно выкладывал на этом форуме.
Чтобы заявка появилась в стакане, надо подключиться к серверу, выставить одну заявку таким образом, чтобы она встала в очередь,. И вкл. "Выделять свои заявки" в настройках таблицы котировок.
Roman Azarov написал: Максимально сократить это время - является одной из наших основных задач.
Цитата
Roman Azarov написал: Пока сервером не будет получен ответ от биржи о том, что заявка была успешно снята, транзакция на выставление новой заявки не пройдет контроль достаточности средств на сервере.
Есть мнение, что лимиты в квике обновляются после получения уведомления по заявке. Сократить время можно, если обновлять лимиты не только после получения уведомления по заявке, но и после ответа от биржи по транзакции.
Надо делать так, как надо. А как не надо - делать не надо.
Возможности новой версии 7. Добавлена возможность быстрого доступа к транзакции замены заявки, если данная транзакция поддерживается на стороне торговой системы.
Не работает.
Цитата
Исправленные недоработки 12. Удвоенное отображение объема на последней свече в окне графика.
swerg, если уж вы впряглись в защиту, то спросите у поддержки, почему же у них, например, здесь не воспроизводилось. Какой "комплекс неких частных условий" нужен был для воспроизведения ошибки, чтобы "удалось нащупать"? А то только пишите везде про какие-то "уникальные условия", аргументируйте свои утверждения.
Надо делать так, как надо. А как не надо - делать не надо.
Вы бы в инструкцию включили пример, когда в результате срабатывания Тейк–профита в ТС может выставиться лимитированная заявка с ценой на 954 п. ниже максимума, при том, что отступ+спред = 8.
Надо делать так, как надо. А как не надо - делать не надо.
Ещё информация: на компьютере может быть запущено несколько квиков. И не бывает такого, чтобы не могло подключиться более одного, максимум только один из них не подключается.
Надо делать так, как надо. А как не надо - делать не надо.
Здравствуйте! Уважаемый QUIK clients support, выше вам уже предоставили существенную информацию:
Цитата
Дмитрий написал: при уходе его в какой-либо из режимов энергосбережения (например Гибернация), то при последующем выводе из режима Квик либо оказывается подключенным к серверу, либо нет. Если нет, то висит окно: "Net error: Удаленный хост принудительно разорвал существующее подключение". При этом в меню программы вместо "Установить соединение" остается доступным только вариант "Разорвать соединение" (словно оно по прежнему еще установлено). И никаких вариантов кроме как перезагрузить Квик нет.
От себя добавлю, что использую спящий режим. И после пробуждения, QUIK может оказаться в состоянии, описываемом в данной теме. У меня обычно это происходило при первом просыпании компьютера в течении дня. Возможно, это может быть связано с рестартом сервера, но это не точно. Просто так совпало, что по ночам компьютер спит чаще. Но это происходит не всегда. Т.е., не стоит рассчитывать, что если вы в точности повторите эксперимент, то сразу получите результат. И я сильно сомневаюсь, что в коде есть ветвление в зависимости от ПЗУ, ОЗУ или чего-то ещё, типа: тут ждём, тут не ждём. Вы идёте по ложному пути. Надо смотреть код в том месте, где стоит бесконечный цикл ожидания ответа от сервера.
Скрытый текст
Цитата
Vladimir Ivanov написал: решение вопроса не сдвинется с места.
Про CQ01954637 тоже месяцами врали, что не воспроизводится и про CQ01939238 и мн. др... Потом признались, что проблема действительно есть. s_mike@rambler.ru годами напоминает об одних и тех же багах. И что же? За много лет ничего не сдвинулось с места. Так что я не питаю иллюзий. Это ваше ПО и вам решать, каким оно будет.
Надо делать так, как надо. А как не надо - делать не надо.
Такова реализация тейк-профит заявок в самом квике: для закрытия шортов тейк-профит реализовали, а для лонговых позиций оставили лазейку, чтобы проще было выбивать трейдеров из позиций по заниженным ценам. Ведь акции третьего эшелона в основном не шортовые. Здесь подробно обсуждалось: https://forum.quik.ru/messages/forum14/message53456/topic2411/#message53456
Надо делать так, как надо. А как не надо - делать не надо.
Vladimir Ivanov написал: директории с программой, на которой воспроизводилась проблема
ftp://ftp.quik.ru/public/updates/ Берите любую. Проблема древняя. С 6-й версии точно. При подключении на разные сервера, как боевые так и демо. В настройках соединений стоит галка "Восстанавливать связь автоматически". За много лет менялись компы, ОС, ЦП, ПЗУ, ОЗУ... Неизменным осталось только отсутствие таймаута ожидания при установке связи с сервером.
Надо делать так, как надо. А как не надо - делать не надо.
Ну вот, три часа QUIK устанавливает соединение с сервером. За три часа ни одного сообщения о недоступности сервера или другой ошибки. Чё он там ждёт - не понятно. Под спойлером сам процесс info.exe и треды, которые запустились после выхода компьютера из спящего режима.
Скрытый текст
Цитата
Старатель написал: если нажать кнопку "Разорвать соединение", то кнопки "Установить соединение", "Разорвать соединение" становятся неактивными.
После нажития "Разорвать соединение" запустились ещё два треда:
Скрытый текст
Ну и при закрытии окна QUIK процесс так и остался висеть пока принудительно его не грохнуть.
Надо делать так, как надо. А как не надо - делать не надо.
Anton написал: Это он про вот эти вот все шаги цены, точность и прочее.
Для построения графика из всего справочника используется только шаг цены. В QMinEditor шаг цены вручную задается без всяких справочников. Для датасорца нужны только цена, объем и время - это всё есть в бинарниках в archive.
TGB написал: 10000 обращений (запись, чтение, удаление) за 500 миллисекунд.
Не смотря на то, что сам тест бестолковый, но холостой цикл за 0,5 сек не слишком ли много?
Цитата
TGB написал: Заметного роста памяти QLua я не заметил.
Таблица из 1000 строк длиной 10 байт каждая. Какой "рост" вы рассчитывали увидеть в таком тесте?
Цитата
TGB написал: Для устранения вашей конкретной ситуации, возможно, подойдет вариант реализации очередей, приведенный в моем комментарии
Это не моя ситуация, а разработчиков QLua )) И не увидел в вашем комментарии каких-то существенных отличий касательно использования метода pop(). Больше похоже на спам вашего OS_...
Надо делать так, как надо. А как не надо - делать не надо.
TGB, если в представленном коде и возникают, как вы утверждаете, какие-то "ошибки синхронизации, которые могут порождать" пропажу метода pop, используемого только для чтения (!), то это уже вне зоны ответственности скриптера, а ошибка в реализации многопоточной модели QLUA.
Надо делать так, как надо. А как не надо - делать не надо.
TGB написал: В API QLua есть функции реализации потокобезопасной очереди, созданные разработчиком QUIK: table.sinsert, table.sremove. Пример использования потокобезопасной очереди
В качестве разминки сделайте перезаказ обезличенных сделок (или переключитесь на другой сервер) ближе к концу торговой сессии и посмотрите, с какой задержкой будет обрабатываться ваша очередь и расход памяти скриптом. Задержка вычисляется как разница между временем получения колбека и фактическим временем обработки его в main.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: это удобно, когда не задан код клиента, то он автоматически подставляется в транзакцию. Но если код клиента задан, то не надо пихать его в комментарий и подставлять другой код клиента в транзакцию.
Это ваш косяк.
Надо делать так, как надо. А как не надо - делать не надо.
1. https://forum.quik.ru/messages/forum10/message57044/topic475/#message57044 В целях корректной обработки события закрытия таблицы предлагаю вызывать OnClose, когда только дана команда главному окну терминала на закрытие (нажат крестик, Alt+F4 или "Система -> Выход") до QTABLE_CLOSE. Тогда OnClose можно будет использовать, чтобы определить, что таблица закрыта не пользователем.
Возможности новой версии 7. Добавлена возможность быстрого доступа к транзакции замены заявки, если данная транзакция поддерживается на стороне торговой системы.
Не работает.
Цитата
Исправленные недоработки 12. Удвоенное отображение объема на последней свече в окне графика.
Не исправлено.
Надо делать так, как надо. А как не надо - делать не надо.
swerg написал: Ну это такой момент, который пошел от пользовательского интерфейса QUIK.
В форме ввода заявки есть два отдельных поля: "Код клиента" и "Поручение".
Цитата
swerg написал: Если подключен только 1 логин (вернее один "код клиента") - то этот код автоматически подставляется, чтобы пользователя не грузить и "было удобно". В общем-то логично, согласитесь.
Абсолютно с вами согласен: это удобно, когда не задан код клиента, то он автоматически подставляется в транзакцию. Но если код клиента задан, то не надо пихать его в комментарий и подставлять другой код клиента в транзакцию.
Надо делать так, как надо. А как не надо - делать не надо.
К логину было подключено два кода клиента. Скрипт работал по обоим нормально. Потом один код был отключен брокером или пользователь зашел с логина, где подключен только один клиент, не суть. В результате вместо того, чтобы выдать ошибку, что у пользователя нет прав для работы с отключенным кодом клиента, QUIK стал молча подменять его на другой. Т.е., скрипт отправляет транзакцию с CLIENT_CODE = client2//brokerref, а заявка приходит с client_code = client1, brokerref = client1//client2//brokerref Это косяк.
Надо делать так, как надо. А как не надо - делать не надо.
А если OnClose вызывать, когда только дана команда главному окну терминала на закрытие (нажат крестик, Alt+F4 или "Система -> Выход") до QTABLE_CLOSE? Тогда OnClose можно будет использовать, чтобы определить, что таблица закрыта не пользователем. А в момент закрытия терминала по-прежнему будет OnStop с флагом 2.
Надо делать так, как надо. А как не надо - делать не надо.