<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Как и где правильно написать условие по выполненной заявке?]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Как и где правильно написать условие по выполненной заявке? форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 22:31:59 +0300</pubDate>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36995/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_v5tICRBY" href="/user/1103/" bx-tooltip-user-id="1103">Imersio Arrigo</a> написал:<br />Поразительное упорство незамечать на что нужно обратить внимание :) Три человека говорят одно и тоже, а он упорно игнорирует :))<br />=============<br />А кто третий? Я? Так я автор топика, только переименовался, поскольку Сергеев тут слишком до фига :) <br /><br />Вопрос в оптимизации. Вот _sk_ утверждал, что менее, чем в 1000 строк управление заявками-сделками организовать нельзя, причем большинство пытается использовать абсолютно все поступающие данные, включая OnTransReply().<br /><br /><B>Вы используете OnTransReply()? Если да, то зачем?</B><br /><br /><br /><br />====quote====<br /><br />====quote====<br />Пожалуйста, обоснуйте. Чем OnTrade() в данном плане хуже OnOrder()?<br />=============<br />Что значит &quot;обоснуйте&quot;? Он не хуже. Он другой, и сообщает о других событиях.<br />Это примерно как &quot;обоснуйте почему ноги хуже рук&quot;.<br />OnTrade вызывается при приходе сделок(!). И только их. Неважно откуда они взялись. (может брокер за вас исполнил заявку, или маржинколл, или экспирация опционов. Неважно).<br />А OnOrder вызвается когда есть изменения в ЗАЯВКЕ(!). Сделок может и не быть (например если заявка выставлена и тут же снята), и поэтому если нужен статус заявки, то анализировать нужно OnOrder.<br />=============<br /><br />OnTrade() прекрасен тем, что приходит только один раз с одним trade_num, а также там есть trans_id из заявки.<br />Есть там и флаги ЗАЯВКИ. Не сделки, не транзакции, а именно заявки. Если бы они корректно показывали, что заявка полностью налита и более не существует, то очень разумно не ждать более ничего в OnOrder(). <br /><br /><br /><br />====quote====<br />OnTrade может срабатывать раньше, может позже. Колбеки - штука асинхронная. Вообще нельзя полагаться на порядок их вызова.<br />Понять &nbsp;что по OnTrade &quot;на заявку можно забить&quot; только в том случае, если все &nbsp;OnTrade-ы по одной заявке (надо отслеживать номер) в сумме дали кол-во &nbsp;указанное в заявке. Но этого может не произойти, потому что частично &nbsp;исполненная заявка может быть снята, и тогда это никогда не произойдет.<br />=============<br />Опять же, вопрос исключительно в поиске оптимального и надежного решения. <br /><br />Ну, приходит в OnTrade() статус заявки. Как без ваших ответов и экспериментов можно было узнать, что это неправильный путь?<br />Но глобально для меня вопрос решен, спасибо за помощь! <br />
			<i>15.03.2019 09:52:01, sergei.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36995/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36995/topic4366/</guid>
			<pubDate>Fri, 15 Mar 2019 09:52:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36982/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Поразительное упорство незамечать на что нужно обратить внимание :) Три человека говорят одно и тоже, а он упорно игнорирует :))<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Ra2t799A" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />Конкретные проверки выше.<br />=============<br />Эта?<br />if bit.band(order.flags,2) &gt; 0 then<br />Это недостаточное условие. Оно отображает только &quot;снята или исполнена&quot;, а нужно еще проверять &quot;активна или нет&quot;. Как описано здесь:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_62B0hqi4" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />bit.band(order.flags,3) == 0<br />=============<br />Это правильный вариант.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_B02gzYla" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />Пожалуйста, обоснуйте. Чем OnTrade() в данном плане хуже OnOrder()?<br />=============<br />Что значит &quot;обоснуйте&quot;? Он не хуже. Он другой, и сообщает о других событиях.<br />Это примерно как &quot;обоснуйте почему ноги хуже рук&quot;.<br />OnTrade вызывается при приходе сделок(!). И только их. Неважно откуда они взялись. (может брокер за вас исполнил заявку, или маржинколл, или экспирация опционов. Неважно).<br />А OnOrder вызвается когда есть изменения в ЗАЯВКЕ(!). Сделок может и не быть (например если заявка выставлена и тут же снята), и поэтому если нужен статус заявки, то анализировать нужно OnOrder.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_W4NgzL8D" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />OnTrade() стабильно срабатывает раньше OnOrder(), и я б не стал дожидаться ничего другого, если мне в OnTrade() сразу и скажут, что на эту заявку можно &quot;забить&quot;, т.к. она более не существует.<br />=============<br />OnTrade может срабатывать раньше, может позже. Колбеки - штука асинхронная. Вообще нельзя полагаться на порядок их вызова.<br />Понять что по OnTrade &quot;на заявку можно забить&quot; только в том случае, если все OnTrade-ы по одной заявке (надо отслеживать номер) в сумме дали кол-во указанное в заявке. Но этого может не произойти, потому что частично исполненная заявка может быть снята, и тогда это никогда не произойдет. <br />
			<i>14.03.2019 18:11:54, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36982/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36982/topic4366/</guid>
			<pubDate>Thu, 14 Mar 2019 18:11:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36973/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GfFKF7S9" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />Данные два варианта точно эквивалентны? Я всерьез, т.к. не проф. программер и биты не люблю :)<br />=============<br />Точно эквивалентны. С точки зрения логики это одно и то же условие.<br /><br />По поводу флагов. Коллеги, поймите простую вещь, кто еще не понял. Биты 0 и 1 в trade.flags анализировать бессмысленно, так как они <B><I><U>не</U></I></B> отражают текущий статус соответствующей заявки. Для сделок они <B><I><U>невалидны</U></I></B> и могут иметь <B><I><U>любые</U></I></B> случайные значения. <br />
			<i>14.03.2019 15:24:25, SDL.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36973/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36973/topic4366/</guid>
			<pubDate>Thu, 14 Mar 2019 15:24:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36972/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Эксперимент показал, что <noindex><a href="https://forum.quik.ru/user/966/" target="_blank" rel="nofollow">SDL</a></noindex> абсолютно прав. В OnTrade() заявка может быть и снята, и исполнена по флагам, но OnOrder() все равно надо дождаться, т.к. там order.balance может не быть равен нулю. В OnTrade() остаток не проверить. <br />
			<i>14.03.2019 13:47:30, sergei.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36972/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36972/topic4366/</guid>
			<pubDate>Thu, 14 Mar 2019 13:47:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36961/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br />Применять к сделкам эти биты никак нельзя. Документация и здравый смысл правы. Смотреть на них в OnTrade() просто не надо. Совсем.<br />=============<br />Пожалуйста, обоснуйте. Чем OnTrade() в данном плане хуже OnOrder()?<br />
====code====
<pre>bit.band(order.flags,1) == 0 and bit.band(order.flags,2) == 0</pre>
=============

====code====
<pre>bit.band(order.flags,3) == 0</pre>
=============
Данные два варианта точно эквивалентны? Я всерьез, т.к. не проф. программер и биты не люблю :) <br />
			<i>13.03.2019 22:50:07, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36961/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36961/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 22:50:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36959/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_hC8TrzAj" href="/user/966/" bx-tooltip-user-id="966">SDL</a> написал:<br />Проверки статуса заявок (1-й и 2-й биты flags):<br /><br />=============<br /><br />Вот эти можно немного оптимальнее, если так будет понятно:<br /><br />&quot;Исполнена&quot;:<br />
====code====
<pre>bit.band(order.flags,3) == 0</pre>
=============
&quot;Снята&quot;:<br />
====code====
<pre>bit.band(order.flags,3) == 2
</pre>
============= <br />
			<i>13.03.2019 22:21:03, SDL.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36959/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36959/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 22:21:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36958/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Проверки статуса заявок (1-й и 2-й биты flags):<br /><br />&quot;Активна&quot;:<br />
====code====
<pre>bit.band(order.flags,1) &#62; 0</pre>
=============
&quot;Нективна&quot; (исполнена либо снята):<br />
====code====
<pre>bit.band(order.flags,1) == 0</pre>
=============
&quot;Исполнена&quot;:<br />
====code====
<pre>bit.band(order.flags,1) == 0 and bit.band(order.flags,2) == 0</pre>
=============
&quot;Снята&quot;:<br />
====code====
<pre>bit.band(order.flags,1) == 0 and bit.band(order.flags,2) &#62; 0</pre>
=============
Не надо трогать OnTrade() и trade.flags, они тут совершенно ни при чем. Можете, конечно, контролировать исполнение подсчетом количества в сделках по заявке, но это будет другой способ.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_VKSRncL3" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />Какой гарантирует, что заявка была на 100% filled? <br />=============<br /><br />Статус &quot;Исполнена&quot; - заявка была на 100% filled, можно не сомневаться.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_XHGbmS7X" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />что первый и второй биты касаются именно ЗАЯВКИ. Собственно, по-другому &nbsp;их и интерпретировать нельзя. Что значит применительно к сделке &quot;снята&quot; и &nbsp;как сделка может не быть исполнена<br />=============<br />Применять к сделкам эти биты никак нельзя. Документация и здравый смысл правы. Смотреть на них в OnTrade() просто не надо. Совсем. <br />
			<i>13.03.2019 22:14:46, SDL.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36958/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36958/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 22:14:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36949/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0CoCXjfm" href="/user/1103/" bx-tooltip-user-id="1103">Imersio Arrigo</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/696/" target="_blank" rel="nofollow">Сергей</a></noindex> написал:<br />В документации и на форумах много разных вариантов проверки. Какой гарантирует, что заявка была на 100% filled?&quot;Не активна&quot; + &quot;исполнена&quot; почему-то не работает.Только флагами и непосредственно в OnTrade() определяется или без order.balance не обойтись?<br />=============<br /> Причем тут OnTrade? Надо узнать статус заявки? Обрабатываем OnOrder.<br />Нас интересуют два флага:<br />OF_ACTIVE = 0x01<br />OF_KILL = 0x02<br />По определению: первый флаг показывает активная ли заявка, второй снята или исполнена если не активна. Т.о. существует всего 3 состояния.<br />0х01 = активна. order.balance (если не ошибаюсь) показывает неисполненный остаток.<br />0х02 = неактивна, снята. &nbsp;order.balance &nbsp;показывает неисполненный остаток.<br />0х00 = неактивна, исполнена полностью.<br /><br />OnTrade показывает статусы сделок.<br /><br /> <br />====quote====<br /><noindex><a href="/user/696/" target="_blank" rel="nofollow">Сергей</a></noindex> написал:<br />&quot;Не активна&quot; + &quot;исполнена&quot; почему-то не работает.<br />=============<br /> Почему не работает? Можно кусочек кода?<br />=============<br />Конкретные проверки выше.<br />OnTrade() стабильно срабатывает раньше OnOrder(), и я б не стал дожидаться ничего другого, если мне в OnTrade() сразу и скажут, что на эту заявку можно &quot;забить&quot;, т.к. она более не существует.<br /><br />В официальной справке QLUA по OnTrade() указано, что первый и второй биты касаются именно ЗАЯВКИ. Собственно, по-другому их и интерпретировать нельзя. Что значит применительно к сделке &quot;снята&quot; и как сделка может не быть исполнена (частично хотя бы), если OnTrade() сработал? Определенно о заявках это. <br />
			<i>13.03.2019 21:07:45, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36949/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36949/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 21:07:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36948/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_S3gSnLSW" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />В документации и на форумах много разных вариантов проверки. Какой гарантирует, что заявка была на 100% filled?&quot;Не активна&quot; + &quot;исполнена&quot; почему-то не работает.Только флагами и непосредственно в OnTrade() определяется или без order.balance не обойтись?<br />=============<br />Причем тут OnTrade? Надо узнать статус заявки? Обрабатываем OnOrder.<br />Нас интересуют два флага:<br />OF_ACTIVE = 0x01<br />OF_KILL = 0x02<br />По определению: первый флаг показывает активная ли заявка, второй снята или исполнена если не активна. Т.о. существует всего 3 состояния.<br />0х01 = активна. order.balance (если не ошибаюсь) показывает неисполненный остаток.<br />0х02 = неактивна, снята. &nbsp;order.balance &nbsp;показывает неисполненный остаток.<br />0х00 = неактивна, исполнена полностью.<br /><br />OnTrade показывает статусы сделок.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_tFZT7LPF" href="/user/696/" bx-tooltip-user-id="696">Сергей</a> написал:<br />&quot;Не активна&quot; + &quot;исполнена&quot; почему-то не работает.<br />=============<br />Почему не работает? Можно кусочек кода? <br />
			<i>13.03.2019 20:49:43, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36948/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36948/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 20:49:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как и где правильно написать условие по выполненной заявке?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36943/topic4366/">Как и где правильно написать условие по выполненной заявке?</a></b> <i>...когда она не перемещена, не убита, а именно полностью filled?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В документации и на форумах много разных вариантов проверки. Какой гарантирует, что заявка была на 100% filled?<br />&quot;Не активна&quot; + &quot;исполнена&quot; почему-то не работает.<br />Только флагами и непосредственно в OnTrade() определяется или без order.balance не обойтись?<br /><br /><br /><br />OnTrade()?
====code====
<pre>if bit_set(trade.flags, 0) == false and bit_set(trade.flags, 1) == false then</pre>
=============
<br />OnOrder()?
====code====
<pre>if bit.band(order.flags,2) &#62; 0 then</pre>
============= <br />
			<i>13.03.2019 19:50:04, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36943/topic4366/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36943/topic4366/</guid>
			<pubDate>Wed, 13 Mar 2019 19:50:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
