<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: OnQuote вешает квик]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме OnQuote вешает квик форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 23:42:59 +0300</pubDate>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32668/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ZPSIcEIP" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />У меня сейчас стоит windows server 2003. Он потребляет меньше всего ресурсов.<br />Может быть перейти на Windows server 2016? У него системные требования выше, но наверное и быстродействие выше. За 13 лет в плане скорости могли сделать большой шаг вперёд.<br />=============<br />Для начала сделайте следующее.<br />1) уберите лишние параметры и проверьте отключение опционов.<br />т е в окне настройки посмотрите сколько инструментов и сколько параметров Вы выбрали (указано явно количество)<br />2) Выгрузите все лишние приложения и службы (проверьте сколько свободной памяти при работе квик и какая загрузка процессора)<br />3) Установите в параметрах КВИК минимальное время отклика (10 мс)<br />4) Отключите алгоритм нейгла<br />5) При работе КВИК делайте следующее<br />1) выгружайте браузер<br />2) не запускайте другие приложения<br />3) сворачивайте окна, которые не смотрите. Если хотите ускорить квик, то сверните его. <br />Сворачивайте стаканы если хотите ускорить их обработку.<br />------------------------<br />Не понятно почему у вас стоит сервер. Посмотрите как он загружен другими задачами.<br />--------------------------------<br />Напишите обработку данных от стакана на СИ Можно конечно и на СИ++, но для луа арi для СИ. а использовать обертки лишь замедляет работу.<br />-----------------------------<br />Можно сделать в квике лишь прием данных а обработку вынести в отдельные задачи на СИ или С++.<br />-----------------<br />В квике время обработки стакана можно уменьшить примерно в 10-100 раз если написать обработку на СИ в виде DLL.<br />---------------<br />По-возможности не используйте обращение к хранилищу КВИК, а храните все необходимые Вам данные в специально выделенных массивах.<br />----------------<br />Я например все храню в отдельных таблицах луа, либо в двоичных массивах.<br />===================<br />Но хочу заметить следующее.<br />КВИК - это изначально терминал для подачи поручений брокеру, а не платформа для создания HFT роботов<br />Поэтому априори Вы должны усвоить что на квике Вы получаете информацию которая запаздывет относительно биржи на 100-500 мс.<br />Ваши заявки в пики обрабатываются в очереди на сервере броккера со скоростью примерно 1000 транзакций в секунду.<br />Т е если у брокера на каждый сервер несколько тысяч клиентов, то Ваша хаявка будет стоять в очереди несколько секунд.<br />-----------------------------<br />Поэтому реально можно делать робота который по инструменту может послать примерно до 10 поручений в секунду с запаздыванием примерно на 0.1-0.2 секунды относительно реального времени событий на бирже (и это еще будет хорошо) <br />
			<i>11.08.2018 06:18:30, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32668/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32668/topic3872/</guid>
			<pubDate>Sat, 11 Aug 2018 06:18:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32667/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			У меня сейчас стоит windows server 2003. Он потребляет меньше всего ресурсов.<br />Может быть перейти на Windows server 2016? У него системные требования выше, но наверное и быстродействие выше. За 13 лет в плане скорости могли сделать большой шаг вперёд. <br />
			<i>11.08.2018 00:52:06, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32667/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32667/topic3872/</guid>
			<pubDate>Sat, 11 Aug 2018 00:52:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32655/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_f8zFDEl6" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />вы не сможете решить вашу проблему теми способами, которые пытаетесь использовать. К сожалению, терминал QUIK - это терминал по большей части для нужд брокера, а не физических лиц, торгующих те или иные инструменты. Если вы хотите 100%-й адекватной вашим требованиям работы при нормальной частоте рыночных операций, вам нужно ограничиться только ОДНИМ скриптом и только по ОДНОМУ инструменту. Присоединение хотя бы еще одного скрипта или еще одного-двух тикеров моментально уменьшит вашу производительность процентов на 40. <br />Сам основной поток терминала в режиме "ТОЛЬКО отражение данных" - т.е. без скриптов, но, возможно, с некоторыми алгоритмами брокера выдерживает одномоментно изменения не более чем по 50 инстурментам. Именно поэтому у брокеров стоит хотя бы 2-3 терминала для отслеживания изменений по разным тикерам. Понятно, что вы не сможете решить ту задачу, которую ставите, никакими ухищрениями. Единственный способ следующий.<br /><br />1. Пишете не скрипт, а DLL на С++ (можете взять за основу исходники с пакетов на GitHub), которые реализуют в Lua работу с портами &nbsp;(Sockets). Ваша DLL должна делать всего одну вещь: обрабатывать вызовы OnQuote, OnParam и другие по вашему выбору и передавать содержимое их параметров через внутренний для вашего ПК порт.<br />2. Пишете полновесное многопоточное приложение на C++, в котором один поток принимает информацию поступившую через порт от вашей &nbsp;DLL, а другие заняты распределенной обработкой данных.<br />3. Еще один порт задействуете для отправки терминалу QUIK вызовов sendTransaction().<br />4. В этом случае вы будете использовать терминал не как рабочую машину, а просто как транзитный передатчик данных. Основной поток терминала в этом случае не будет перегружаться, но я рекомендую вам уменьшить суммарное число отслеживаемых тикеров до хотя бы 48-49.<br />5. Альтернатива также известна. Как я уже написал выше: "один терминал - один скрипт - один рассчитываемый тикер". <br />
			<i>10.08.2018 13:43:56, Andrei2016.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32655/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32655/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:43:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32653/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Николай, спасибо, за ответ.<br />Такой вопрос. <br />Два одинаковых скрипта. В одном РТС, в другом Си.<br />Как лучше сделать:<br />1. Запускать два скрипта в 1 квике?<br />2. Или открыть два КВИКа и включить по одному скрипту в каждом КВИКе? <br />
			<i>10.08.2018 13:37:40, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32653/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32653/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:37:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32652/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ridimui1" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Здравствуйте. Последние дни на рынке паника. Активность резко возросла. Я в КВИКе подписываюсь на стаканы 5 фьючерсов и 50 акций. Обрабатываю их в OnQuote. В июне-июле не было никаких проблем из за вялого рынка. Но в среду-четверг-пятницу пошла жесть. КВИК подвисает намертво. Пришлось отказаться от акций, оставил два фьючерса Si и RTS, но даже их пришлось разнести по разным КВИКам. Два фьючерса в одном скрипте в одном КВИке всё равно вешали КВИК. Сейчас на 1 квик у меня по 1 скрипту, в котором 1 инструмент. Благодаря этому удалось вернуться к работе. <br />---<br />Прошу дать совет, как решить эту проблему.<br />1. Я уже перенёс из OnQuote много функций, которые теперь обрабатываются в main, но там по прежнему остаётся обработка таблиц, несколько циклов и немного математики. Время, за которое проходит одна итерация внутри OnQuote около 20 миллисекунд.<br />2. На виртуалке поставил более быстрые ядра. Сейчас конфигурация такая:<br /> <br />Обидно, что даже в моменты пиковой нагрузки загрузка процессора даже близко не подходила к 100%, то есть были свободные ядра. При этом более быстрые ядра не решили проблему, квик всё равно подвисал.<br />3. Работает сборщик мусора луа, проблем с памятью не наблюдалось.<br />---<br />Можно ли OnQuote направлять на разные ядра процессора? например с помощью модуля многопоточности луа LuaLanes?<br />---<br />Можно ли запустить в одном скипте несколько OnQuote? В один принимать фьючерсы, в другой акции например?<br />---<br />Буду благодарен за любые советы и подсказки.<br />=============<br />обработка стаканов - это самая затратная операция в КВИК.<br />На все ваши вопросы кратко можно ответить - Можно, но все зависит от Вашего уровня знаний <br />1) программирование потоков под виндой<br />2) владение API C для луа<br />3) умение программировать на СИ<br />------------<br />В качестве примера могу кратко рассказать что делал я.<br />1) Я реализовал каждый колбек в отдельном скрипте луа. <br />Это позволяет <br />1) использовать минимум колбеков вне зависимости от числа роботов<br />2) фактически запустить столько потоков (main) сколько скриптов<br />3) колбеки QLUA работают в одном потоке и их распараллелить невозможно. А вот дальнейшую работу с полученными данными я делаю в различных скриптах. А каждый скрипт - это отдельный поток.<br />4) Существенно ускорить можно если правильно организовать обработку данных. Ошибка многих любителей писать роботов в использовании циклов и постоянной обработки истории. Это надо и можно избежать.<br />Примерно так. <br />
			<i>10.08.2018 13:30:21, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32652/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32652/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:30:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32650/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_2ukriEYw" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br /><br />====quote====<br /> Alexey Ivannikov &nbsp; написал:<br />Добрый день.<br /><br />Не нужно внутри колбека делать &nbsp; &nbsp; &nbsp; вычисления, потому как это тормозит основной поток терминала. Нужно &nbsp; &nbsp; &nbsp; выставить сигнал о том, что данные изменились (возможно отложить их &nbsp; &nbsp; &nbsp; куда-то) и покинуть колбэк, а в майне уже делать нужные дела.<br />=============<br />Я постепенно делаю это, но всё равно кое-что придётся оставить в колбеке. Я же не могу крутить main в диком безостановочном цикле, который постоянно будет ловить новые изменения. Если сделать по вашему, то main при 50 инструментах не сразу обработает изменение. У меня внутри main стоит sleep(1). При 50 инструментах это довольно долгая задержка. <br />Поэтому интересны советы как раз по многопоточности и по разумному использованию ядер. Если надо, я куплю 10 ядер, лишь бы всё работало.<br />=============<br />1. При sleep(1) на стандартных настройках Windows это выливается в 10-16 &nbsp;мс, т.е. для 50 инструментов, 800 мс уходит на sleep. Нужно &nbsp;модифицировать скрипт чтобы использовать это время с большей пользой.<br /> <br /> 2. Все колбеки исполняются в основном потоке терминала. И если там &nbsp;возникает задержка (например ожидание транзакции), то весь терминал &nbsp;&quot;висит&quot;. Изменить этого Вы не можете, это архитектурное ограничение.<br /> <br /> 3. Задействовать больше ядер можно с использованием внешней библиотеки на &nbsp;с++. Но и в этом случае при вызове колбека нужно максимально быстро &nbsp;отдать данные и вернуть управление, а в других потоках эти данные &nbsp;обрабатывать.<br /> <br /> Данные вопросы неоднократно обсуждались, в том числе и на этом форуме. <br />
			<i>10.08.2018 13:20:25, Alexey Ivannikov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32650/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32650/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:20:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32649/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_vTImz5nF" href="/user/11/" bx-tooltip-user-id="11">Alexey Ivannikov</a> написал:<br />Добрый день.<br /><br />Не нужно внутри колбека делать &nbsp; &nbsp; &nbsp; вычисления, потому как это тормозит основной поток терминала. Нужно &nbsp; &nbsp; &nbsp; выставить сигнал о том, что данные изменились (возможно отложить их &nbsp; &nbsp; &nbsp; куда-то) и покинуть колбэк, а в майне уже делать нужные дела.<br />=============<br />Я постепенно делаю это, но всё равно кое-что придётся оставить в колбеке. Я же не могу крутить main в диком безостановочном цикле, который постоянно будет ловить новые изменения. Если сделать по вашему, то main при 50 инструментах не сразу обработает изменение. У меня внутри main стоит sleep(1). При 50 инструментах это довольно долгая задержка. <br />Поэтому интересны советы как раз по многопоточности и по разумному использованию ядер. Если надо, я куплю 10 ядер, лишь бы всё работало. <br />
			<i>10.08.2018 13:09:52, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32649/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32649/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:09:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32647/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Не нужно внутри колбека делать &nbsp; &nbsp; &nbsp; вычисления, потому как это тормозит основной поток терминала. Нужно &nbsp; &nbsp; &nbsp; выставить сигнал о том, что данные изменились (возможно отложить их &nbsp; &nbsp; &nbsp; куда-то) и покинуть колбэк, а в майне уже делать нужные дела. <br />
			<i>10.08.2018 13:02:00, Alexey Ivannikov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32647/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32647/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 13:02:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnQuote вешает квик</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message32643/topic3872/">OnQuote вешает квик</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте. Последние дни на рынке паника. Активность резко возросла. Я в КВИКе подписываюсь на стаканы 5 фьючерсов и 50 акций. Обрабатываю их в OnQuote. В июне-июле не было никаких проблем из за вялого рынка. Но в среду-четверг-пятницу пошла жесть. КВИК подвисает намертво. Пришлось отказаться от акций, оставил два фьючерса Si и RTS, но даже их пришлось разнести по разным КВИКам. Два фьючерса в одном скрипте в одном КВИке всё равно вешали КВИК. Сейчас на 1 квик у меня по 1 скрипту, в котором 1 инструмент. Благодаря этому удалось вернуться к работе. <br />---<br />Прошу дать совет, как решить эту проблему.<br />1. Я уже перенёс из OnQuote много функций, которые теперь обрабатываются в main, но там по прежнему остаётся обработка таблиц, несколько циклов и немного математики. Время, за которое проходит одна итерация внутри OnQuote около 20 миллисекунд.<br />2. На виртуалке поставил более быстрые ядра. Сейчас конфигурация такая:<br /><img src="http://dl4.joxi.net/drive/2018/08/10/0011/1313/742689/89/072275d2a9.png" alt="Пользователь добавил изображение" border="0" /><br />Обидно, что даже в моменты пиковой нагрузки загрузка процессора даже близко не подходила к 100%, то есть были свободные ядра. При этом более быстрые ядра не решили проблему, квик всё равно подвисал.<br />3. Работает сборщик мусора луа, проблем с памятью не наблюдалось.<br />---<br />Можно ли OnQuote направлять на разные ядра процессора? например с помощью модуля многопоточности луа LuaLanes?<br />---<br />Можно ли запустить в одном скипте несколько OnQuote? В один принимать фьючерсы, в другой акции например?<br />---<br />Буду благодарен за любые советы и подсказки. <br />
			<i>10.08.2018 12:18:59, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message32643/topic3872/</link>
			<guid>http://forum.quik.ru/messages/forum10/message32643/topic3872/</guid>
			<pubDate>Fri, 10 Aug 2018 12:18:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
