<?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>Fri, 01 May 2026 19:10:50 +0300</pubDate>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48877/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_bhGTGXGE" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/14261/" target="_blank" rel="nofollow">Олег</a></noindex> написал:<br /> Идея хорошая, а можно показать краткий пример?<br />=============<br /> Это сложный вопрос. В самом lua нет многопоточности, поэтому надо организовать некие сущности, хранящие состояния и ждущие ответа.<br />Проще всего это сделать на хеш-таблицах, т.е. на обычных таблицах.<br /><br />Вы можете при подаче транзакции записать данные в некую таблицу по ключу, допустим код инструмента + номер транзакции.<br />А далее организовать ожидание когда в этой таблице появится ответная информация. Ответ может туда записаться, в частности колбеком, или сами, опрашивая сделки, ордера, запишете.<br /><br />Как только ответ получен, делаете что-то дальше. Нет ответа - пропускаете этот инструмент, ждете дальше.<br />Тогда вы не будете зависеть от того как приходят ответы. В какие-то дни быстро, в какие-то очень медленно. Бывало до 10 минут доходило. Вы не можете предсказать когда он придет, поэтому и не можете поставить некое значение переменной ожидания в простом цикле. <br />Как организовать ожидание, и саму подачу транзакции, здесь уже как удобнее. Можно через corutine, запуская их и проверяя в них состояние транзакции. Если нет ответа приостанавливаете ее и переходите к следующей.<br /><br />Можно самому сделать некую сущность &quot;Задача&quot; и периодически опрашивая пул текущих задач, закрывать завершенные.<br />А можно просто сделать таблицу транзакций, опрашивать ее и проверять состояние самой транзакции (допустим, записанное колбеком onTransReply), ордера, записанное другим колбеком и т.д.<br />=============<br />Спасибо за совет, подумаю над ним. <br />
			<i>02.10.2020 14:36:21, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48877/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48877/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 14:36:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48876/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_rIZUusvk" href="/user/14261/" bx-tooltip-user-id="14261">Олег</a> написал:<br /> Идея хорошая, а можно показать краткий пример?<br />=============<br />Это сложный вопрос. В самом lua нет многопоточности, поэтому надо организовать некие сущности, хранящие состояния и ждущие ответа.<br />Проще всего это сделать на хеш-таблицах, т.е. на обычных таблицах.<br /><br />Вы можете при подаче транзакции записать данные в некую таблицу по ключу, допустим код инструмента + номер транзакции.<br />А далее организовать ожидание когда в этой таблице появится ответная информация. Ответ может туда записаться, в частности колбеком, или сами, опрашивая сделки, ордера, запишете.<br /><br />Как только ответ получен, делаете что-то дальше. Нет ответа - пропускаете этот инструмент, ждете дальше.<br />Тогда вы не будете зависеть от того как приходят ответы. В какие-то дни быстро, в какие-то очень медленно. Бывало до 10 минут доходило. Вы не можете предсказать когда он придет, поэтому и не можете поставить некое значение переменной ожидания в простом цикле. <br />Как организовать ожидание, и саму подачу транзакции, здесь уже как удобнее. Можно через corutine, запуская их и проверяя в них состояние транзакции. Если нет ответа приостанавливаете ее и переходите к следующей.<br /><br />Можно самому сделать некую сущность &quot;Задача&quot; и периодически опрашивая пул текущих задач, закрывать завершенные.<br />А можно просто сделать таблицу транзакций, опрашивать ее и проверять состояние самой транзакции (допустим, записанное колбеком onTransReply), ордера, записанное другим колбеком и т.д. <br />
			<i>02.10.2020 13:48:57, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48876/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48876/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 13:48:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48869/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_EQd4zFU9" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br /> Если цена &quot;рыночная&quot;, то да, можно ожидать исполнения.<br />=============<br />Выставляю так<br />&#91;&#39;ACTION&#39;&#93; &nbsp; &nbsp; &nbsp;= &#39;NEW_ORDER&#39;,<br />&#91;&#39;TYPE&#39;&#93; &nbsp; &nbsp; &nbsp; &nbsp;= &#39;L&#39;,<br />&#91;&#39;TRANS_ID&#39;&#93; &nbsp; &nbsp;= tostring(t_transaction.id),<br />====quote====<br /><a class="blog-p-user-name" id="bp_ZM5BwUS1" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Т.е. отправил транзакцию из main, там же циклы.<br />=============<br />Да, реализовано так.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_s1KYaCzY" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Если, допустим, скрипт работает с несколькими инструментами<br />=============<br />Пока до такого еще не дошел, один скрипт - один инструмент. За совет спасибо.<br />====quote====<br /><a class="blog-p-user-name" id="bp_70SW5W6E" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Лучше сделать так, чтобы ответный сигнал вызывал реакцию, но не простой всего алгоритма. Т.е. пока идет сигнал можно было бы выполнять что-то другое.<br />=============<br />Идея хорошая, а можно показать краткий пример?<br /><br />Спасибо <br />
			<i>02.10.2020 10:27:58, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48869/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48869/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 10:27:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48867/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как правильно заметил Anton, сначала надо определиться что за заявку отправляете. Если цена &quot;рыночная&quot;, то да, можно ожидать исполнения.<br /><br />Что касается ожиданий, здесь вопрос организации этих циклов. Корректно не делать их в колбеках. Т.е. отправил транзакцию из main, там же циклы. А колбеки - это просто семафоры, что есть что-то.<br />Также советую не делать циклы ожидания на транзакции. Если, допустим, скрипт работает с несколькими инструментами, то пока Вы ждете по одному, другие не смогут свои сигналы отработать.<br />Лучше сделать так, чтобы ответный сигнал вызывал реакцию, но не простой всего алгоритма. Т.е. пока идет сигнал можно было бы выполнять что-то другое. <br />
			<i>02.10.2020 10:10:21, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48867/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48867/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 10:10:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48863/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_JLgNLjAk" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Зависит от схемы написания Вашего скрипта. Можете использовать колбек, как сигнал, что сделка прошла.<br />Можете, наоборот, сами читать таблицу сделок, запоминая, допустим, последний индекс, для уменьшения последующих выборок.<br /><br />Что касается времени срабатывания, то здесь нет понятия &quot;нормально&quot;. Можно было бы сказать среднеожидаемое, и оно, действительно, будет небольшим, до 1 сек.<br />Но сервер брокера может быть загружен, канал связи может плохим и т.д. Так что время может вырастать до минут.<br /><br />Впрочем, еще есть один вариант, что некорректно производится ожидание сигнала, допустим, цикл ожидания в колбеке.<br />=============<br />Спасибо за ответ.<br /><br />Действительно все ответы о сделки приходят до 10 секунд (у меня на это стоит проверка в цикле) и этот самый цикл ожидания организован <B>не </B>в колбэке.<br />Если я правильно Вас понял,
====code====
<pre>Можете использовать колбек, как сигнал, что сделка прошла.</pre>
=============
то как раз это и делаю - отправляю sendtransaction, в цикле жду ответа от OnTransReply и потом во втором цикле жду ответа от OnTrade.<br /><br />Если читать таблицу сделок, видимо ничего не изменится, так как там данные появятся в то же время что и данные из OnTrade, верно? <br />
			<i>02.10.2020 09:52:08, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48863/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48863/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 09:52:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48860/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Заявка это заявка, сделка это сделка. Если выставить заявку на покупку по нижнему лимиту, она и вообще никогда не исполнится (ну почти никогда). <br />
			<i>02.10.2020 09:44:09, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48860/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48860/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 09:44:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48859/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Зависит от схемы написания Вашего скрипта. Можете использовать колбек, как сигнал, что сделка прошла.<br />Можете, наоборот, сами читать таблицу сделок, запоминая, допустим, последний индекс, для уменьшения последующих выборок.<br /><br />Что касается времени срабатывания, то здесь нет понятия &quot;нормально&quot;. Можно было бы сказать среднеожидаемое, и оно, действительно, будет небольшим, до 1 сек.<br />Но сервер брокера может быть загружен, канал связи может плохим и т.д. Так что время может вырастать до минут.<br /><br />Впрочем, еще есть один вариант, что некорректно производится ожидание сигнала, допустим, цикл ожидания в колбеке. <br />
			<i>02.10.2020 09:36:23, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48859/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48859/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 09:36:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Долгое исполнение сделки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48856/topic5844/">Долгое исполнение сделки</a></b> <i>Сделка на демо счете отработала более чем за 30 сек.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Доброе утро.<br />Выставил заявку на демо счете, ожидаю транзакцию OnTransReply, получаю статус = 3, перехожу к ожиданию сделки из функции OnTrade и иногда из этой функции обратного вызова данные приходят более чем через 30 сек.<br />Пример из таблиц Quick Заявки и Сделки:<br />Заявка №1182431621 выставлена в 16:37:<B><span class="bx-font" style="color:#ff0000">02</span></B> <B>01.10.2020</B><br /><br />Сделка №72323274 (Заявка №1182431621) Продажа в 16:37:<B><span class="bx-font" style="color:#ff0000">37</span></B> <B> 01.10.2020</B><br /><br />Это нормальное поведение? <br /><br />Правильно, что данные по сделку ожидаю от таблицы обратного вызова или нужно другим способом сделки получать?<br /><br />Спасибо. <br />
			<i>02.10.2020 09:18:35, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48856/topic5844/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48856/topic5844/</guid>
			<pubDate>Fri, 02 Oct 2020 09:18:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
