<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: OnOrder вызывается дважды Ontrade трижды!  Что за глюч]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме OnOrder вызывается дважды Ontrade трижды!  Что за глюч форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 19 Apr 2026 21:43:18 +0300</pubDate>
		<item>
			<title>OnOrder вызывается дважды Ontrade трижды!  Что за глюч</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message18045/topic2064/">OnOrder вызывается дважды Ontrade трижды!  Что за глюч</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А править свои сообщения нельзя?<br />Вопрос снимаю, разобрались. <br />
			<i>31.08.2016 18:14:27, name.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message18045/topic2064/</link>
			<guid>http://forum.quik.ru/messages/forum10/message18045/topic2064/</guid>
			<pubDate>Wed, 31 Aug 2016 18:14:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnOrder вызывается дважды Ontrade трижды!  Что за глюч</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message18037/topic2064/">OnOrder вызывается дважды Ontrade трижды!  Что за глюч</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А помогите разобраться с OnOrder. Пытаюсь вести контроль открытых заявок и сделок, чтобы не вылазить за риск. При новой заявке просто добавляю количество из заявки, а при изменении уже открытой смотрю, что пришло. Если изменение по активной, то убираю количество исполненного, если по снятой, то убираю весь объем снятой.<br />Вот код:<br />
====code====
<pre>OnOrderCl ock={}
CheckedOrderNum={}

function OnOrder(order)

OnOrderClock&#91;#OnOrderClock+1&#93;=os.clock()

&nbsp;&nbsp;&nbsp;for i=1,#CheckedOrderNum do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local find = false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- если пришла заявка из массива
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CheckedOrderNum&#91;i&#93; == order.order_num then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find = true

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- если время между заявками меньше определенного, выходим из функции
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OnOrderClock&#91;#OnOrderClock&#93;-OnOrderClock&#91;#OnOrderClock-1&#93; &#60; 0.15 then return end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- иначе обрабатываем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- если это активная заявка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not TestBit(order.flags, 1) then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... уменьшаем на количество исполненных заявок
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- если это снятая заявка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif TestBit(order.flags, 1) then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... уменьшаем на количество лотов снятой заявки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;-- иначе пришла новая заявка
&nbsp;&nbsp;&nbsp;if not find then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... добавляем заявки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckedOrderNum&#91;#CheckedOrderNum+1&#93; = order.order_num
&nbsp;&nbsp;&nbsp;end
end

function TestBit(x, bit_num)
&nbsp;&nbsp;local p = 2 ^ bit_num
&nbsp;&nbsp;return x % (p + p) &#62;= p
end</pre>
=============
<br />Но есть проблема. Я отправляю ордер и начинаю его двигать, чтобы проверить. Так понял, когда я на графике передвигаю ордер, старая заявка автоматом снимается и выставляется новая.<br />Почему-то проверка флага работает с перебоями. Т.е. двину ордер, функция TestBit видит, что заявка снятая и количество заявок уменьшается, а при появлении новой - добавляется и все нормально. А иногда, после переноса ордера, функция TestBit видит, что заявка не снятая, а активная и, соответственно, расчет идет уже не верно.<br /><br />Всегда ли при изменении заявки первой приходит инфо по снимаемой заявке, а уже потом по новой? Не бывает так, что сначала приходит инфо по новой, а следом по снимаемой старой? (аккаунт демо) <br />
			<i>31.08.2016 14:36:52, name.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message18037/topic2064/</link>
			<guid>http://forum.quik.ru/messages/forum10/message18037/topic2064/</guid>
			<pubDate>Wed, 31 Aug 2016 14:36:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnOrder вызывается дважды Ontrade трижды!  Что за глюч</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17998/topic2064/">OnOrder вызывается дважды Ontrade трижды!  Что за глюч</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, да, вопрос уже неоднократно обсуждался на форуме. Можно почитать здесь:<br /><br /><noindex><a href="https://forum.quik.ru/forum10/topic1082/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic1082/</a></noindex> <br />
			<i>29.08.2016 07:09:32, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17998/topic2064/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17998/topic2064/</guid>
			<pubDate>Mon, 29 Aug 2016 07:09:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnOrder вызывается дважды Ontrade трижды!  Что за глюч</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17992/topic2064/">OnOrder вызывается дважды Ontrade трижды!  Что за глюч</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			да, уже обсуждалось <br />
			<i>29.08.2016 03:19:39, Женя.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17992/topic2064/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17992/topic2064/</guid>
			<pubDate>Mon, 29 Aug 2016 03:19:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnOrder вызывается дважды Ontrade трижды!  Что за глюч</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17991/topic2064/">OnOrder вызывается дважды Ontrade трижды!  Что за глюч</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Пишу скрипт на ЛУА<br /><br />При наступлении события с заявкой - OnOrder вызывается дважды хотя должны 1 раз<br />При наступлении события OnTrade вызывается вообще Трижды<br /><br />Господа у всех там или только у меня ? вот лог:<br /><br />16:01:24 OnOrder 3478651900 bit0 true bit1 false bit2 false <br />16:01:24 OnOrder 3478651900 bit0 true bit1 false bit2 false <br /><br />16:01:25 OnTrade 3478651900 192427030 bit0 false bit1 false bit2 false<br />16:01:25 OnTrade 3478651900 192427030 bit0 false bit1 false bit2 false <br />16:01:25 OnTrade 3478651900 192427030 bit0 false bit1 false bit2 false <br />
			<i>28.08.2016 18:12:21, max max.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17991/topic2064/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17991/topic2064/</guid>
			<pubDate>Sun, 28 Aug 2016 18:12:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
