<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Неверные флаги в функции OnOrder]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Неверные флаги в функции OnOrder форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 25 Apr 2026 08:35:19 +0300</pubDate>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69351/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Всем спасибо!<br />Обсуждение помогло.<br />Начал анализировать код и нашёл свою ошибку. <br />Исправил, теперь будет работать корректно. <br />
			<i>04.05.2023 07:40:46, Alexey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69351/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69351/topic8035/</guid>
			<pubDate>Thu, 04 May 2023 07:40:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69350/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Поэтому , для тех кто не понял, уточняю<br /><br /> OnTransRepley &nbsp;и OnOrder Приходят многократно, но ПЕРВЫМ всегда приходит первый &nbsp;OnTransReple<br />В нем нет номера заявки потому что на еще не пришла с сервера биржи<br />Остальные сигналы приходят как угодно но они не первые. <br />
			<i>04.05.2023 06:09:19, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69350/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69350/topic8035/</guid>
			<pubDate>Thu, 04 May 2023 06:09:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69349/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_m1vsDeOn" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /> <br />====quote====<br /><br /><br />=============<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.<br />=============<br /> тоже нет, ответ на транзакцию содержит номер заявки. QUIK не может его знать, только биржа его может сообщить, значит это ответ биржи, а не сервера брокера.<br />=============<br />Добрый день,<br />мы с Вам говорим о разном.<br />Вы говорите о OnTransRepley в котором есть номер заявки.<br />------------------------------<br />Я говорю о OnTransRepley, &nbsp;в которых нет номерf заявки.<br />Эти сигналы всегда приходят раньше onOrder. <br />Так как ответ от биржи еще не пришел.<br />---------------------------<br />Именно этот ответ всегда приходит раньше <br />Именно его я и использую для фиксации момент выставления заявки. <br />------------- <br />
			<i>04.05.2023 05:59:46, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69349/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69349/topic8035/</guid>
			<pubDate>Thu, 04 May 2023 05:59:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69346/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_dzrDRWD8" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />более того, ответ на транзакцию OnTransRepley всегда приходит первым, <br />=============<br />гы. нет.<br />обычно. но не всегда.<br /><br />вообще, не рекомендую опираться на то, что что-то приходит первым.<br />может и заявка прийти первой. и даже сделка. <br />
			<i>04.05.2023 03:26:38, Kalmar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69346/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69346/topic8035/</guid>
			<pubDate>Thu, 04 May 2023 03:26:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69345/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Nfg23ihh" href="/user/1103/" bx-tooltip-user-id="1103">Kalmar</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Нет. если Вы не в дата центре.<br />=============<br />Да, если ответ на транзакцию и заявка пришли вместе.<br />=============<br /><br />Николай прав, обычно OnOrder не может прийти сразу после отправки транзакции (исключение дата центр).<br />Но он может прийти после OnTransRepley, т.е. после получения ответа на транзакцию <br />
			<i>03.05.2023 19:32:42, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69345/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69345/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 19:32:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69344/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_EJcIBCt4" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />более того, ответ на транзакцию OnTransRepley всегда приходит первым, <br />=============<br />Не всегда, транзакции и заявки едут разными потоками, которые между собой не синхронизируются. <br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_YbEFykeB" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.<br />=============<br />тоже нет, ответ на транзакцию содержит номер заявки. QUIK не может его знать, только биржа его может сообщить, значит это ответ биржи, а не сервера брокера. <br />
			<i>03.05.2023 19:29:27, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69344/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69344/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 19:29:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69343/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			более того, ответ на транзакцию OnTransRepley всегда приходит первым, <br />так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.<br />Я именно в &nbsp;OnTransRepley ловлю исполнение транзакции на выставление заявки всегда до прихода onOrder. <br />
			<i>03.05.2023 19:22:39, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69343/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69343/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 19:22:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69342/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_gnhkPFv6" href="/user/1103/" bx-tooltip-user-id="1103">Kalmar</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Нет. если Вы не в дата центре.<br />=============<br /> Да, если ответ на транзакцию и заявка пришли вместе.<br />=============<br />Вы невнимательно читаете.<br />Специально для Вас вопрос был такой:<br />1) Возможно ли что функция OnOrder выполняется через 1 мс<B> после отправки </B>sendTransaction(transaction) ??<br />------------------<br />Читайте внимательно в вопросе время отсчитывается <B>от отправки , а не от прихода</B>.<br />---------------------<br />Прочитали, теперь снова напишите свой ответ на данный вопрос. <br />
			<i>03.05.2023 19:18:58, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69342/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69342/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 19:18:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69340/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_e6DcezXe" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Нет. если Вы не в дата центре.<br />=============<br />Да, если ответ на транзакцию и заявка пришли вместе. <br />
			<i>03.05.2023 19:09:26, Kalmar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69340/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69340/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 19:09:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69336/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/14274/" target="_blank" rel="nofollow">Alexey</a></noindex> написал:<br />1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ??<br />Нет. если Вы не в дата центре. <br />
			<i>03.05.2023 18:16:07, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69336/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69336/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 18:16:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69334/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Y8qV7Qnh" href="/user/14274/" bx-tooltip-user-id="14274">Alexey</a> написал:<br />1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ??<br />=============<br />да.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_28Vpgl9A" href="/user/14274/" bx-tooltip-user-id="14274">Alexey</a> написал:<br />2) Возможно ли что в первичный вызов OnOrder флаги ещё не приняли правильного положения и будут установлены в последующих вызовах OnOrder ??<br />=============<br />нет.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_SYyjdI40" href="/user/14274/" bx-tooltip-user-id="14274">Alexey</a> написал:<br />3) Что можно ещё сделать в данной ситуации для улучшения стабильности ?<br />=============<br />убедиться что рассматриваемая заявка в таблице и в луа - одна и та же.<br />например наделать скринов, где видно номера заявок и они однинаковые - а флаги разные.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_5VGeSrdO" href="/user/14274/" bx-tooltip-user-id="14274">Alexey</a> написал:<br />Внезапно время часов Квик, работавшее синхронно с Windows, вдруг начинает запаздывать на 5, 10, 30 сек, потом на минуту и более,<br />=============<br />либо проблемы в канале связи у тебя или у брокера. либо тормозит сервер брокера.<br />бороться с этим почти бесполезно. проще сменить брокера.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_X7dw858F" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />почитайте это: <noindex><a href="https://forum.quik.ru/forum1/topic8018/" target="_blank" rel="nofollow">https://forum.quik.ru/forum1/topic8018/</a></noindex> <br />=============<br />не читайте. <br />
			<i>03.05.2023 18:03:52, Kalmar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69334/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69334/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 18:03:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69315/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			почитайте это:<br /><noindex><a href="https://forum.quik.ru/forum1/topic8018/" target="_blank" rel="nofollow">https://forum.quik.ru/forum1/topic8018/</a></noindex> <br />
			<i>03.05.2023 10:44:13, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69315/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69315/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 10:44:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Неверные флаги в функции OnOrder</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69311/topic8035/">Неверные флаги в функции OnOrder</a></b> <i>флаги показывают что лимитная заявка снята, хотя её состояние Активна </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Работаю на четырех брокерах: СБЕР, ВТБ, Финам, Открытие<br />Код выставляет лимитную заявку, ожидая исполнения.<br /><br />Рассматривается вариант, что пользователь снимает эту лимитную заявку в ручном режиме, тогда нужно остановить выполнение всего скрипта.<br /><br />Соответственно код остановки скрипта:
====code====
<pre>function OnOrder(order)
&nbsp;&nbsp;&nbsp;if ((order.sec_code == FUT_SEC) and (order.trans_id == Trans_id_SELL)) then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((order.qty &#62;= 1) and (bit.test(order.flags, 0))) then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- заявка активна (не исполнена)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ToLog("The SELL order is in active status.")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif bit.test(order.flags, 1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ToLog("WARNING: USER's STOP. Flags = "..tostring(order.flags))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsRun = false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
end
end
</pre>
=============
<br />Так вот, у брокеров ВТБ и СБЕР иногда возникает ситуация в обработчике OnOrder , когда <span class="bx-font" style="color:#ff0000"><B>флаги </B></span>показывают состояние <B><span class="bx-font" style="color:#ff0000">26</span></B>. <br />бит 0 (0x1) = 0 - заявка не активна<br />бит 1 (0x2) = 1 - заявка снята<br /><br />но на самом деле <span class="bx-font" style="color:#ff0000"><B>лимитная </B></span><span class="bx-font" style="color:#ff0000"><B>заявка продолжает находится в активном статусе</B></span> в терминале Квик.<br /><br />Это происходит иногда... Не часто. Не понимаю почему так...<br /><br />Вчера стал это связывать с проблемами запаздывания времени часов Квик относительно часов Windows. <br />Внезапно время часов Квик, работавшее синхронно с Windows, вдруг начинает запаздывать на 5, 10, 30 сек, потом на минуту и более, потом &quot;догоняет&quot; и работает какое-то время синхронно, потом опять начинается цикл запаздывания и гонок и т.д.<br />Наблюдается &quot;аритмия&quot; в часах Квик. <br />&quot;Глючил&quot; именно брокер СБЕР.<br />Версия QUIK 9.7.1.10<br /><br />И вот на этой аритмии и возникают неверные флаги OnOrder.<br /><br />Включил измерение времени в функции OnOrder :
====code====
<pre>local RoundTripSellOrder = os.clock() - SendSellTM
</pre>
=============
где SendSellTM - метка времени = os.clock() перед отправкой sendTransaction(transaction) в которой формируется идентификатор Trans_id_SELL.<br /><br />По всем вчерашним неверным флагам замечено, что обработчик OnOrder вызывается спустя 1 мс после вызова функции sendTransaction(transaction).<br /><br />Обычный тайминг около 80-120 мс когда проблем с флагами OnOrder не наблюдается.<br /><br />Вообще среднее время 100 мс - это нормальный такой тайминг callback-функций Квика на отправку транзакции, как здесь может возникать одна миллисекунда ?!<br /><br />Наверное это как-то связано с часами Квика, которые начинают &quot;сбоить&quot; и работать аритмично относительно нормального времени Windows.<br /><br />То есть получается как будто OnOrder вызывается и обрабатывается в тот момент когда флаги ещё не установлены, этой лимитной заявки в системе как бы нет.<br /><br />Вопросы:<br /><br />1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ??<br /><br />2) Возможно ли что в <B>первичный </B>вызов OnOrder флаги ещё не приняли правильного положения и будут установлены в последующих вызовах OnOrder ??<br /><br />3) Что можно ещё сделать в данной ситуации для улучшения стабильности ? <br />
			<i>03.05.2023 08:48:57, Alexey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69311/topic8035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69311/topic8035/</guid>
			<pubDate>Wed, 03 May 2023 08:48:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
