Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 08:22:07
Теперь начались чудеса. Объем занимаемой памяти сократился до 80 МБайт.
Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 08:07:28
Версию 12.6 переустановил в новый каталог. Проблем с зависанием нет занимаемая память тоже в норме сократилась на 1000 Мбайт. ------------------------ Но проблема с исчезновением позиций по фьючерсам и неправильного расчета осталась. Помогите своим заказчикам - Сбербанку настроить сервер на единый счет
Зависание версии 12.6. при откреплении окна.
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 08:04:06
Проблему решил полной переустановкой в новый каталог версии 12.6.1 -------------------- При этом объем занимаемой памяти сократился на 1000 Мбайт.(на 1ГБайт) --------------
Зависание версии 12.6. при откреплении окна.
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 07:52:03
Спешу поздравить всех с ляпом в версии 12.6. ---------------------- Если открепить окно с графиком для перемещения его за пределы основного окна QUIK, например на второй монитор, то получаем зависание терминала. ----------------------- При этом загрузка процессора возрастает с 3% до 30%. -------------------------- Если это окно свернуть, то все возвращается обратно.
Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 07:45:23
Про версию 12.8.3 скажите сбербанку. Они предлагают клиентам лишь 12.6
свободные средства для срочного рынка на едином счете
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 07:35:48
Просьба расскажите спецам сбербанка что они делают не так, так как они второй день уже трахаются а результатов нет.
свободные средства для срочного рынка на едином счете
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2026 07:33:45
Цитата
Izotova Liliya написал: , здравствуйте. Для анализа просьба прислать скриншот таблицы "Клиентский портфель" и примеры неверных расчетов системы.
Так как сбербанк перешел на единый счет, то приходится устанавливать версию 12.6.0.53. Загружаю уже целый час. При этом размер занятой памяти 1200Мбайт вместо 600 для 8.7. ----------------------------------- Позиции по фьючерсам вообще исчезли из QUIK. В онлайн банке они на месте. ------------------------------------- Вчера некоторое время позиции были -------------------------- Так как у меня нет акций а лишь позиции по фьючерсам, то никаких уровней маржи быть в принципе не может. Однако клиентский портфель был вчера таким:
а сегодня он такой: никаких сделок за прошедшее время не совершалось. но позиции по фьючерсам исчезли. --------------------- Сбербанк предлагает выкинуть КВИК и передавать заявки по телефону. Какой-то каменный век .
свободные средства для срочного рынка на едином счете
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2026 19:27:06
Цитата
Alexander Kopyatkevich написал: Здравствуйте, ! Получить значение свободных средств для Срочного рынка с единой денежной позицией можно в таблице Клиентский портфель из параметра "НаПокупНеМаржин". Для этого нужно вызвать функцию GET_CLIENT_MARGINAL_PORTFOLIO_INFO и нужное Вам значение передастся в параметре LIM_NON_MARGIN.
Там не отображаются свободные средства по фьючерсам при отсутствии акций и наличии позиций по фьючерсам. Это связано с ошибкой в расчете клиентского портфеля. Алгоритм расчет портфеля брокер может сам задать? Если нет то в QUIKе системна ошибка расчетов.
Вопрос по единому счету
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2026 17:33:44
и еще... Кто знает, где в документации QUIK найти список параметров таблиц, которые надо для торговли фьючерсами, а какие для торговли акциями для единого счета. ----------------------- Иначе транслируется куда мусора, который для фьючерсов не имеет смысла. Например уровень маржи. Прикольно, что подобные параметры cчитаются для фьючерсов. --------------------- Это в сбербанке не знают или разработчики так сделали?
Вопрос по единому счету
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2026 17:29:05
Сегодня сбербанк перешел на единый счет Торгую лишь фьчерсами В результате нигде не могу найти сумму свободных средств по фьючерсам Кто знает где искать? ---------------- В сбербанке не знают.
Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2026 16:25:58
Сегодня Сбербанк переходит на единый счет. Целый день они пытаются нормально отобразить у меня фьючерсы. Три раза уже сфонил в тех поддержку и каждый раз обещают через очередные 2 часа исправить новый прикол. То свободные средства исчезли, средства отобразили - исчезли позиции. Круто.
Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
10.02.2026 16:23:02
Сегодня в очередной раз попытался установить версию 12.6 которая выложена у сбербанка. Нормально запустить не получилось. Очень долго грузилась и потом работала с тормозами. ------------------------------ Пришлось вернуться на 8.7 =========================== Что меня очень удивило, так это то, сколько памяти сжирает версия 12.6 Просто ужас какой-то. ------------------------ одни и те же настройки --------------------- версия 8.7 -600 МБайт --------------------- версия 12.6 - 1260 МБайт -------------------- Прикольно, но печально.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
09.02.2026 14:11:18
, А я чем Вам могу помочь? Написать в тех поддержку Сбербанка, Смешно? Будет один из двух вариантов. Либо мой вопрос пропустит мимо ушей, либо тот кто его прочитает ничего не понимает в вашем софте и следовательно пропустит его мимо ушей. ---------------- Запросите у них логи сервера. Я Вам указал в картинках точные даты и время этих глюков. Если мало, то еще соберу.
Нужна ли внешняя БД для Lua/QUIK?
Пользователь
Сообщений: Регистрация: 30.01.2015
08.02.2026 13:23:12
Цитата
Quikdll написал: Приветствую, я пишу приложение на Lua для QUIK. И на данный момент в качестве БД используется обычный(ые) текстовый(ые) файл(ы), в котором(ых), в основном хранятся сделки и данные прошлых дней (по сути, куски таблиц заявкок, стоп-заявок, сделок и т.д., т.к при наступлении новой торговой сесии в QUIK они очищаются). У меня есть подозрение, что при реальной работе со временем могут возникнуть проблемы со скоростью запис и чтения. Я сам лично не проводил никаких тестов, поэтому хочу спросить, нужно ли задумываться о том, чтобы искать более быстрые и надежные варианты замены использования обычных текстовых файлов? Интересует реальный опыт. P.S приложение на данный момент пишется только на Lua/Qlua.
Как известно, Файловая система это тоже БД. Тоже использую эту БД. ---------------- Если не закрывать и снова открывать на каждом обращении, то скорость обращения не зависит от размера файла. ------------------------ Как уже неоднократно писал на форуме, задержка скриптов на Lua, как и задержка любого другого приложения при работе под windows и любой БД при чтении данных внутри циклов со Sleep или с обработкой событий определятся квантом времени Windows. --------------------------- Это 10-15 ms, по умолчанию, и не менее 2 ms при перепрограммировании системного таймера. ------------------- Решайте проблемы по мере их появления.
Закрытие главного окна текстового редактора, майкрософт ворда или самомго терминала квик приводит к прекращению работы программы, а не к продолжению ее работы втихую. Это нормально и привычно везде и всюду, в Windows, Linux и даже, прости господи, macos. Но не в гордости российского программирования от ARQA.
Вы путаете кислое с зеленым. --------------------------- Окно в редакторе текста - это область работы самого приложения. аналогично приложениям windows или Linux. -------------------- Но в самом приложении пользователь может и делает кучу окон которые открывает и закрывает по надобности. ----------------------- Таблица В скрипте - это не главное окно скрипта. ------------------------- Терминал QUIK который Вы осваиваете с трудом. ----------------- Когда закроете окно с графиков то терминал закроется? ---------------------- Для программирования надо не только читать школьные учебники по истории, но и учебники программирования.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2026 08:51:37
и еще.. На форуме встречал сообщения относительно другого банка, который периодически сбрасывает соединение. Тоже интересный прикол.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2026 08:47:21
Если это проблема связи сервера с биржей. То, как то прикольно, что у такого банка такие плохие каналы связи с биржей, что возникают часто аж на 5 минут разрывы соединения с биржей.
onstop и колбек пользовательского окна
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2026 08:42:39
Цитата
tohoki написал: Я пробовал искать по форуму, но ничего не нашел
у меня квик 12.8.3.4
запущен пользовательский скрипт, создающий окно. У окна есть колбек OnClose. Когда пользователь мышкой закрывает окно, нужно завершить работу скрипта. Нет проблем, завершаем.
Когда пользователь закрывает терминал при запущенном скрипте, завершать работу скрипта не нужно, она должна продолжаться автоматом при следующем запуске терминала.
Мне кажется, что такое поведение скрипта не является чем-то необычным и не должно требовать каких то сверхусилий.
Но нихрена! При закрытии терминала первым делом в окно скрипта сразу же приходит колбек OnClose - скрипт его обрабатывает и завершает скрипт. До OnStop дело не доходит даже, этот колбек будет вызван когда то позже.
Получается, что при вызове колбека onclose невозможно понять, что произошло - завершили скрипт или закрыли терминал.
Я чего то не понимаю или ВСЕ НА САМОМ ДЕЛЕ ТАК И ЕСТЬ?
Вы ошибаетесь. ---------------------------- Если скрипт создает окно, то у окна есть функция закрытия, но нет кобека закрытия окна. -------------------- OnClose - это колбек закрытие терминала QUIK или выгрузка файла qlua.dll OnStop - это колбек остановки скрипта из диалога управления (т е из окна запуска скрипта) Что не так?
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2026 08:30:47
и это возникает при относительно спокойном рынке. вот еще примеры такого прикола.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2026 08:21:47
Цитата
Pivaev Maxim написал: , судя по Вашему описанию, четко прослеживается локализация проблемы: на участке от Торговой системы до брокера. Поэтому, для решения данной проблемы, все же предлагаем Вам обратиться к брокеру.
Обоснуйте. Почему в этом случае не срабатывает проверки каждые 30 секунд связи терминала с сервером? Связь есть а данных нет. Прикольно. При этом тест интернета показывает скорость 100 На втором мониторе я смотрю кино без задержки. А Ваш QUIK не принимает никаких данных с сервера. Что можете еще придумать?
написал: , Два вопроса, которые могут дать ответ. 1) С какой задержкой у вас Sleep в main? 2) есть ли у Вас очередь событий?
1) 585 секунд. 2) Не знаю. А что это?
(Предыдущее сообщение отправилось по ошибке, не ту клавишу нажал).
Тогда вероятнее всего Вы просто теряете сообщения, когда по заявке совершаются несколько сделок относительно быстро.
Непонятно. Насколько я знаю, все функции OnTrade приходят в одном потоке, т.е. даже если две сделки совершились строго одновременно, функции по ним вызовутся последовательно, и их невозможно потерять.
Кроме того, в приведённом примере интервал между сделками несколько секунд. Это не быстро. Быстро - это когда десятки сделок в секунду. Я такое видел, и мой скрипт их успешно обрабатывает.
Если правильно вас понял, то Вы обрабатываете все события внутри колбеков. Т е Вы тормозите терминал QUIK на время работы вашего скрипта. Да, в этом случае события вероятно вы не пропустите. Но это лишь предположение, Судя по установленной Вами задержки, и в этом случае найдутся способные написать такой скрипт.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2026 14:42:21
Цитата
VPM написал: , На мой взгляд это из одной области и все туда же к " Сивой кобыле ". Ну вышла и вышла, еще показать себя надо. Ну или падение на 1.2%? Даже комментировать не буду.
А вот что важно, не найти. На пример почему Шанхай дает премию по серебру ~ 30$ за унцию серебра? Куда реки текут? На наших глазах делаются состояния. А расскажут потом. Но я собственно ответы нашел и тема стала не интересна.
Вы это на шанхайской биржи видели сегодня? Новость об этом не только в США но и в Азии.
Тест быстродействия многопоточного бота
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2026 11:54:44
Тема для начинающих писателей роботов ----------------------- Алгоритм теста: --------------------- Скрипт на Lua в терминале QUIK обрабатывает колбеки и выставляет заявки по требованию приложения. --------------------------------- Полученные события, кроме событий OnOrder, OnStopOrder, OnTransReply, которые обрабатывает сам, скрипт рассылает приложениям. ------------------------------------- Для каждого инструмента или класса работает отдельное приложение, которое получает данные от скрипта , прогнозирует изменение позиции и отсылает требования на выставление или снятие заявок скрипту. ----------------------------------- Приложения можно реализовать в виде отдельного скрипта для терминала QUIK , либо отдельного приложения Windows. -------------------------------------- Механизм обмена сообщениями реализован через файлы, поэтому он один и тот же как для скриптов так и для приложений. ------------------------------------- Весь процесс обмена сообщений пишется в лог файлы. Результаты теста такие: это логи событий, от скрипта к приложениям для инструментов. Первое число - задержка получения события приложением. В данном тесте задержка равна кванту windows, который установлен 2ms. В конце каждого события через символ "> " указано сколько всего событий в очереди.
это сообщения от приложений. Сообщение отсылается на каждое событие по данному инструменту: В сообщении первым указано время задержки приема его скриптом. Если сообщения от приложения скрипт получил одновременно, т е они были все записаны до того момента как скрипт их прочитал, то в таблице у них одно время и они отделены пустой строкой от следующих сообщений.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2026 11:04:02
Quik 12.6.0 зависает Сбербанк 2026 год, зависает QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2026 11:00:54
Цитата
Anton написал: Quik 12.6.0 сервер Сбербанка зависает. 2026 год Я торгую давно уже, лет 6 в сбере. Проблемы периодически возникают. Сервер у них один. Нагрузка большая и постоянно случаются проблемы. Зависает в основном когда нагрузка повышается, т. е. при большой волотильности когда свечи летают туда сюда. ту все и зависает. Подключится снова получается тоже не сразу. минут 5 теряется... а за это время можно много денег потерять... Торговать практически невозможно стало. Если раньше вылетало редко раз или 2. То сейчас по 5 по 10 раз может выкинуть. Ждать каких то нововведений и улучшений врят ли повезет.... За все время работы у этого брокера ... проблемы всегда бывают... Вот я и спросить пришел. Может какой брокер есть поудачнее??? Где и у кого работоспособность Quik лучше?? Подскажите свой опыт... Какаие варианты есть??? но только что бы в QUIK работать... другие программы не хочу уже изучать...
Тоже работаю со сбером последние пять лет, но не потому что хорошо, а просто удобно переводить деньги. -------------------- Хорошо работает финам, бкс - т е те кто, был сначала лишь брокером, а потом сделал свой банк. ---------------------
Вопрос к Разработчикам. Можете объяснить этот прикол?
, Вы внимательно читали, то что я написал? ------------------ Не хотел Вам проводить ликбез. Но приходится. ------------------------- 1) Это соединение TCP и он не разрывается целых 5 минут т е 300 секунд. Таких задержек на современных каналах связи быть не может. ------------------------------ 2) Терминал каждые 30 секунд обменивается с сервером короткими сообщениями чтобы подтвердить связь. И это полагаю у вас реально реализовано . Т е никаких задержек между сервером и терминалом нет. --------------------------------- 3) Задержка от биржи до брокера в 5 минут - это уже ЧП. -------------- Какие еще Вы можете придумать причины?
Все индикаторы на Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
05.02.2026 14:01:58
Если правильно понимаю, то Встроенный индикатор Force Index это фактически нормированный (относительно предыдущей close)классический индикатор Force Index . Так как этот индикатор отображается в отдельном окне, то для торговли используются не абсолютные значения , а относительное его изменение либо движения вокруг нулевой линии. --------------- Стратегии Некоторые стратегии торговли с использованием Force Index:
Стратегия на пересечении нулевой линии. Если Force Index пересекает нулевую линию снизу вверх, это может быть сигналом к покупке, так как рынок переходит от медвежьего к бычьему тренду. Если Force Index пересекает нулевую линию сверху вниз, это может быть сигналом к продаже, так как рынок переходит от бычьего к медвежьему тренду.
Стратегия на дивергенциях. Например, если цена делает новый минимум, но Force Index показывает более высокий минимум, это может быть сигналом к покупке, так как рынок может готовиться к развороту вверх.
Force Index часто используется в сочетании с другими техническими индикаторами для повышения точности торговых сигналов. Например, с скользящими средними (MA) — пересечение Force Index с MA может служить сигналом для входа в сделку, с индексом относительной силы (RSI) — совместное использование с RSI позволяет более точно определить перекупленность или перепроданность рынка.
В итоге , для принятия решения, нет никакой разницы как он рассчитан.
написал: , Два вопроса, которые могут дать ответ. 1) С какой задержкой у вас Sleep в main? 2) есть ли у Вас очередь событий?
1) 585 секунд. 2) Не знаю. А что это?
(Предыдущее сообщение отправилось по ошибке, не ту клавишу нажал).
Тогда вероятнее всего Вы просто теряете сообщения, когда по заявке совершаются несколько сделок относительно быстро. Если надо принять все то сделайте очередь сообщений. один из примеров есть в документации на библиотеку QLUA Другой есть в моей теме на форуме по универсальному обработчику событий
Тест ускорения скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
04.02.2026 14:36:27
Тест обмена данными через файлы терминал QUIK и приложение на Luajit. Результат ну очень... очень.... Смотрите сами: 6us - это время в мкс (0.001 ms) передачи данных от терминала к приложению
Таким образом нет особого смысла писать все алгоритмы робота в скриптах терминала. Достаточно одного скрипта, который раздает события по сторонним приложениям для каждого инструмента или класса инструментов и отправляет транзакции на сделки от приложений на сервер брокера. ------------------------ Приложения можно писать на любом языке программирования , размещать в облаках или у соседа на смартфоне.
Отключать сборщик мусора при работе с колбеками. Вы прикалываетесь?
Пользователь
Сообщений: Регистрация: 30.01.2015
04.02.2026 07:26:30
Тема для начинающих писателей роботов. -------------------------- Рано и поздно у Вас возникнет желание, либо необходимость, ускорить работу вашего робота. Да, это скорее всего, реально Но существует много ненужных телодвижений там, где что-либо делать не имеет смысла. ----------------------- Например, отключать сборщик мусора в колбеках , а потом его включать. ------------------------- Поясняю, почему в этом нет смысла. ====================== Для этого напишем следующий тест:
Код
local t1=nkQt.count(); local x1=collectgarbage("count");
print("занято память КБ= "..x1//1)
local e={}; for j=1,100000 do e[j]=j end --создаем таблицу
local t1=nkQt.count(); local x=collectgarbage("count")-x1;
e=nil; --удаляем таблицу в мусор
print("объем мусора КБ="..x//1)
local t1=nkQt.count(); local x=collectgarbage("collect")
print("сборка мусора(ms)="..(0.1*(nkQt.count()-t1))/1000)
local x=collectgarbage("count") print("занято память КБ= "..x//1)
В тесте создаем таблицу и заполняем ее. Потом удаляем таблицу. В результате у нас создается объем мусора в 2 Мбайта. Сборщик мусора собирает его за 0.038 ms(0.000038 сек). --------------------------- Как уже писал на форуме, Скрипт на луа из-за Sleep(1) в Main имеет задержу исполнения не менее 16 ms, равную кванту времени Windows. -------------------------------------- Многие, по рекомендации разработчиков QUIK, ставят Sleep(1000) т.е. задержку в 1000 ms ---------------------------------------- Таким образом, если до очередного срабатывания колбека включится сборщик, то он задержит колбек на 0.04 ms. и сборщик мусора создаст дополнительную задержку не более, чем в 0.25% от задержки от Sleep(1) ------------------------ Можно перепрограммировать системный таймер и получить задержку не менее 1 ms. ------------------------------ Тогда задержка от сборщика составит не более 4% от задержки Sleep(1), но это всего 0.00004 секунды. -------------------------------------------------- Полагаете, что с этим надо бороться. Вы серьезно? ======================================================== Для справки: ------------------ За квант времени в 1-2 мс поток получает возможность выполнить многие миллионы инструкций процессора. ------------------ Не забывайте и тот факт, что информация с биржи, поступающая к Вам через интернет, приходит с задержкой десять и более ms.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
04.02.2026 05:56:32
, Два вопроса, которые могут дать ответ. 1) С какой задержкой у вас Sleep в main? 2) есть ли у Вас очередь событий?
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 30.01.2015
03.02.2026 20:32:42
, Такой разработчик попался. Делать ему очевидно нечего.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
03.02.2026 20:29:58
, Все что Вы сказали, это очевидно. -------------------- Если, по-вашему мнению, причин много, но назовите хотя бы три. --------------------- Обращаю внимание на тот факт, что соединение ни сервер ни терминал не разорвали. Это значит, что для сервера нормально не отсылать данные на терминал . ------------------------ Сервер 5 минут не отсылает никаких данных на терминал. Хотя торговый день в полном разгаре и торги идут интенсивно. ----------------------- Назовите три причины такого поведения сервера. ------------------------ Да,. железо сбербанка, но софт ваш.
написал: В последнее время несколько раз наблюдал такое: приходит OnTrade, в котором trans_id=0. Я знаю, что это промежуточная версия, поэтому в мой алгоритм вписано игнорировать такие вызовы, ожидая более полных. И почти всегда они приходят. Но в среднем 1-2 раза за день случается так, что полный OnTrade с ненулевым trans_id так и не приходит. В чём может быть причина? Я мог бы убрать эту дополнительную проверку из своего кода и обрабатывать такие вызовы, в принципе trans_id мне ни для чего не нужен, достаточно brokerref. Но ведь может не прийти что-то более важное. Например бывает, что приходит OnTrade с нулевой комиссией, и сразу после него ещё один OnTrade с заполненной комиссией. Здесь сбоев не было ни разу, но что если он тоже не придёт?
А зачем Вам trans_id в сделке?
Конкретно trans_id мне не нужен. Но если по протоколу он должен прийти, и не приходит, значит что-то пошло не так. В другой раз не прийти может что-то более серьёзное, например комиссия. Или это другое? Вопрос отчасти пересекается с моим предыдущим вопросом про повторные OnTrade ( ). Т.е. по trans_id=0 я пытался фильтровать OnTrade, которые заведомо не последние.
Предположу, что он не приходит при выполнении заявки в нескольких сделках, либо в заявках, установленных до за пуска скрипта. Но это лишь предположение.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2026 06:34:47
Цитата
User12501 написал: В последнее время несколько раз наблюдал такое: приходит OnTrade, в котором trans_id=0. Я знаю, что это промежуточная версия, поэтому в мой алгоритм вписано игнорировать такие вызовы, ожидая более полных. И почти всегда они приходят. Но в среднем 1-2 раза за день случается так, что полный OnTrade с ненулевым trans_id так и не приходит. В чём может быть причина? Я мог бы убрать эту дополнительную проверку из своего кода и обрабатывать такие вызовы, в принципе trans_id мне ни для чего не нужен, достаточно brokerref. Но ведь может не прийти что-то более важное. Например бывает, что приходит OnTrade с нулевой комиссией, и сразу после него ещё один OnTrade с заполненной комиссией. Здесь сбоев не было ни разу, но что если он тоже не придёт?
А зачем Вам trans_id в сделке? ------------------- Поясняю: Сделка совершается по выставленной заявке. В сделке есть номер заявки, Номер есть всегда и по нему можно найти эту заявку. ----------------------------- trans_id - это номер транзакции, по которой уже выставлена заявка. т е транзакция уже давно исполнена. Вместо нее есть заявка. В данном случае и заявка исполнена, вместо нее есть сделка. Т е даже заявку нет смысла искать, а уж trans_id тем более...
Тест ускорения скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
01.02.2026 09:32:19
нагрузка процессора не изменилась.
Тест ускорения скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
01.02.2026 09:24:56
Ранее привел результаты теста обмена данными через файлы.
Основной вывод : ------------------------------ SLEEP в MAIN приводит к задержке работы скриптов минимум на квант Windows. Его величина по умолчанию равна 16 ms. ------------------------------- Прикольно то, что до Windows10 2004 года этот квант можно было сравнительно просто уменьшить до 0.5ms. Теперь это сделать просто не получится. -------------------------------- Для решения проблемы сделал другую функцию sleep, которая уменьшает этот интервал до 2 ms. ---------------------- Результаты теста: Тест с функцией sleep(1) из библиотеки QLUA Задержка 15985 мкс округляем 16 ms
написал: измеряете время от входа в колбек до входа в функцию main.
Ясно, к вам вопросов больше нет. Очевидно (но, видимо, не всем), что таким образом не возможно измерить время, затрачиваемое на вызов колбэка. Не путать со временем исполнения кода пользовательской функции колбэка.
Время на вызов колбека Вы можете измерить еще проще. Вызовите колбек функцию из своей dll. У меня получилось менее 1 мкс. --------------- Без обид, но вы просто не умеете программировать .
Задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 22:17:45
Цитата
Йцукен написал: В Lua сделать возможным задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте.
Пояснение: Сейчас, если в Lua-скрипте, заданы функции обратного вызова, в частности OnAllTrade, OnParam, OnQuote, то они будут вызываться для всех инструментов, данные по которым поступают в терминал, что влечёт высокий оверхэд на вызов этих самых колбэков. Под вызовом колбэков понимается именно их вызов терминалом. Не путать с исполнением Lua-кода пользовательской функции.
Ошибаетесь. Использую фильтр. затраты: если это не торгуемый инструмент, то 1 мкс, если торгуемый, то 5 мкс. Задержка доставки данных по интернету примерно в 10000 раз больше.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 22:12:47
Как указал ранее, задержка в 15 мс при обмене через файлы связана с квантом времени OC и возникает из-за наличия SLEEP в цикле функции main. ------------------ Если sleep удалить то получаем задержка обмена составляет не более 0.2 мс:
Таким образом, если Вы используете sleep, то при любом способе обмена получите задержку не менее кванта времени OC, по умолчанию это 15мс.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 17:32:24
21 инструмент, Первый скрипт при работе занимает 197 Кбайт. Постепенно объем занятой памяти растет до 279 Кбайт. Далее включается сборщик мусора и объем снова 197.
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 17:22:36
Разобрался. Все работает нормально. Память утекала от сторонней библиотеки cffi-lua. Пришлось написать свою
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
таймером. Есть в ПК счетчик c тактом 0.1 мкс. На основе него делаем таймер, который измеряет с погрешностью 0.1 мкс. Потом берете мой скрипт универсального обработчика событий, который я выложил на форуме , и измеряете время от входа в колбек до входа в функцию main. Это и будет время задержки.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:50:01
и еще... Полученное время обмена через файлы не является длительностью совершения записи чтения, а равно установленному кванту Windows .
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:01:54
Цитата
Йцукен написал: Нужно ли при завершении скрипта принудительно вызывать collectgarbage()?
нафига? Это лишь тормозит работу скрипта.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 12:00:44
Цитата
Йцукен написал: Оверхед от вызова колбэков высокий, независимо от кода внутри колбэка. Я вот думаю отказаться от OnAllTrade совсем. Да и от OnParam стоило бы отказаться, поскольку при включении "умного" заказа данных, терминал тянет данные почти по всем классам. Но в этом случае придётся постоянно в main опрашивать на наличие новых данных по инструментам, что отрицательно скажется на производительности.
У вас очевидно неправильно написаны колбеки. ----------------------------- колбек OnAllTrade вызывается перед записью данных в таблицу обезличенных сделок. На него затрачивается не более 5 мкс. Он ничего не тормозит как и колбек OnParam. ----------------------- колбек OnParam нужен для управления стопами и позицией. Никакие "умные " заказы это не решают.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:53:22
еще замечу... Передача данных через файл позволяет использовать внешние приложения, написанные на любом другом языке программирования, без знания Lua и С. и необходимости писать костыли для приема данных.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:46:18
Изменил алгоритм работы скриптов. Увеличилась скорость обмена данными: Алгоритм: Задается список торгуемых классов и список торгуемых инструментов ---------------- Первый скрипт записывает информацию из колбеков для каждого инструмента в отдельный файл. По колбеку OnParam передается последняя цена и лучшие цены спроса и предложения. --------------------- Второй скрипт перебирает торгуемые инструменты и читает из их файлов новые данные. Полученные данные выводит в лог файл. Результат: Время передачи данных составляет 15 млсек (0.015 сек)
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
31.01.2026 11:38:42
Цитата
Nikolay написал: А зачем записывать на диск, если mmap позволяет создавать отражение в памяти.
ранее уже про это писал:
------------- Поясняю. Есть несколько способов обмена. Самый быстрый это через общую память dll, следующий mapping file. Они есть у меня. Но они требуют создания dll на С for lua. ------------------- Обмен через файлы не требует написания dll и может быть реализован на луа без знания C.
Передача данных из скрипта в скрипт QUIK или приложение
Пользователь
Сообщений: Регистрация: 30.01.2015
30.01.2026 13:50:35
Алгоритм теста: --------------- два скрипта. ------------------ Первый скрипт: Содержит колбеки. Полученная в колбеке таблица преобразуется в строку и записывается в файл. ------------------------- Второй скрипт: В функции main читает новые строки из файла. Если строки есть, то выводит их в лог файл. -------------------------- В результате получаем в лог файле вторго скрипта таблицы из колбеков первого. Ниже приведено содержимое лог файла при купокупки и продажи акции на демо сервере ---------------------------- В строке записана следующая информация 136, млсек --задержка приема данных вторым скриптом в ms относительно колбека первого скрипта. 307620878521: --значение счетчика в мкс во втором скрипте 307620741599: --значение счетчика в мкс в первом скрипте 6, мксек-- время на передачу таблицы из колбека в функцию вывода в файл в первом скрипте, Param={sec_code=RUAL,class_code=QJSIM}, -- таблица параметров колбека 14 мксек -- время на преобразование таблицы в строку.