<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Извечный вопрос: повторные вызовы OnTrade]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Извечный вопрос: повторные вызовы OnTrade форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 18:45:15 +0300</pubDate>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80993/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_oE6ocDU7" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br />Какие варианты?<br />Например, хранить данные портфеля в файле и не начинать торговлю, пока данные в квике не совпадут с нашими?<br />=============<br />Это уже сами решайте, что важно. У меня скрипты сами считают портфель по сделкам. Поэтому мне важнее таблицы сделок, ордеров. Да и бывает иногда, что брокера показывают нули в портфеле, в результате ошибок на сервере, хотя таблицы загружены.<br /><br />Поэтому самое важное - это определить момент загрузки таблиц. А т.к. Квик не предоставляет методов для контроля этого, то приходится придумывать разные экзотические варианты. <br />
			<i>22.01.2026 12:39:33, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80993/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80993/topic9419/</guid>
			<pubDate>Thu, 22 Jan 2026 12:39:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80992/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_mUxVfZr9" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />дождаться их загрузки<br />=============<br />Какие варианты?<br />Например, хранить данные портфеля в файле и не начинать торговлю, пока данные в квике не совпадут с нашими? <br />
			<i>22.01.2026 12:34:57, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80992/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80992/topic9419/</guid>
			<pubDate>Thu, 22 Jan 2026 12:34:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80990/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_ILqWKoCS" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br /><br />Но, если брокер разорвал соединение и перезапустил шлюзы с очисткой данных, то OnConnected будет вызван с флагом true.<br />Получается в скрипте нужно хранить информацию об обработанных заявках/сделках, как минимум, до смены торговой даты.<br />=============<br />Сам OnConnected не столь важен. Если вызван OnClenUp, то все данные таблиц пустые. А значит если логика скрипта проверяет данные из таблиц, то если не дождаться их загрузки, будут получены некорректные данные. А загрузка происходит совсем не мгновенно, иногда через минуты после прихода OnConnected. <br />
			<i>22.01.2026 11:38:41, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80990/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80990/topic9419/</guid>
			<pubDate>Thu, 22 Jan 2026 11:38:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80988/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_dVVeRuBx" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />брокер может разорвать соединение, вызвать OnClenUp<br />=============<br /><br />OnConnected может быть вызван и без разрыва соединения. И это штатная ситуация.<br /><br />====quote====<br />OnConnected<br /><br />Функция вызывается терминалом QUIK при установлении связи с сервером QUIK и получении терминалом описания хотя бы одного класса. Если в течение торгового дня терминал получает новый класс, то функция вызывается еще раз, при этом параметр вызова flag принимает значение «false».<br />=============<br /><br />Но, если брокер разорвал соединение и перезапустил шлюзы с очисткой данных, то OnConnected будет вызван с флагом true.<br />Получается в скрипте нужно хранить информацию об обработанных заявках/сделках, как минимум, до смены торговой даты. <br />
			<i>22.01.2026 11:11:38, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80988/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80988/topic9419/</guid>
			<pubDate>Thu, 22 Jan 2026 11:11:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80950/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_UA1PVBHP" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />вызвать OnClenUp<br />=============<br />Не обратил внимание на данный нюанс. У меня скрипт очищает таблицы при получении OnClenUp.<br />Надо будет внести правки в скрипт. <br />
			<i>18.01.2026 22:06:58, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80950/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80950/topic9419/</guid>
			<pubDate>Sun, 18 Jan 2026 22:06:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80849/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_wv29sadY" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />А как Вам это<br />=============<br />Бывает.<br /><noindex><a href="https://take-profit.org/newsreview.php?mid=9352" target="_blank" rel="nofollow">Сбой в работе алгоритмической системы одного из участников торгов фьючерсами на доллар/рубль на бирже ММВБ-РТС мог принести владельцу максимальный убыток в $4,3 миллиона.</a></noindex><br />Один из программистов этого робота по секрету поделился, что они не успели протестировать алгоритм, но начальник приказал его запускать в бой. Сказано - сделано. <br />
			<i>10.01.2026 20:47:34, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80849/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80849/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 20:47:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80848/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/17142/" target="_blank" rel="nofollow">Йцукен</a></noindex>,<br />А как Вам это:<br /><br />3 февраля 2010 года ошибка в алгоритме HFT-робота компании Infinium Capital Management, торговавшего нефтяными контрактами, привела к неконтролируемому росту заявок и скачку цены на нефть на 1,3% прямо перед закрытием биржи. Примерно за секунду работы робот сгенерировал убытков на $1 млн. <noindex><a href="https://www.kommersant.ru/doc/1888604" target="_blank" rel="nofollow">kommersant.ru</a></noindex><br />------------------------<br />С HFT-трейдингом связывают обвал на американском фондовом рынке 6 мая 2010 года. За пять минут индекс DJIA, и без того снижавшийся весь день, потерял около 7%, чтобы ещё через 15 минут отыграть большую часть падения. Многие трейдеры сочли это естественным результатом насыщения рынка роботами: реагируя на продажи, те драматически усилили уже наметившееся движение. <noindex><a href="https://www.kommersant.ru/doc/1888604" target="_blank" rel="nofollow">kommersant.ru</a></noindex><noindex><a href="https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%BD%D1%8B%D0%B9_%D1%82%D1%80%D0%B5%D0%B9%D0%B4%D0%B8%D0%BD%D0%B3" target="_blank" rel="nofollow">ru.wikipedia.org*</a></noindex><br /><br />23 марта 2012 года компьютерный HFT-алгоритм, запущенный с терминалов неопознанного трейдера, «убил» попытку американской компании BATS Global Markets провести IPO. Попытка вывести акции на биржу продолжалась ровно 9 секунд, в течение которых бумаги компании обесценились практически до нуля, торги по ним были приостановлены, а через некоторое время руководство компании заявило о полном отказе выходить на биржу в обозримом будущем. &nbsp; <br />
			<i>10.01.2026 20:05:28, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80848/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80848/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 20:05:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80847/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_okOAgq86" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />мой алгоритм оставленный мной без присмотра, поймал какую то &nbsp;ошибку (уже и не припомню причину) наделал столько заявок, что брокер заблокировал канал, а затем выставил штраф.<br />=============<br />Я думаю, тут надо какую-то защиту "от дурака" реализовывать: типа, при превышении заданного порога количества ошибочных транзакций подряд, останавливать скрипт до выяснения причин. <br />
			<i>10.01.2026 18:24:15, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80847/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80847/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 18:24:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80846/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_KxVTqdtB" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/16131/" target="_blank" rel="nofollow">VPM</a></noindex> написал:<br />особенно в скоростных алгоритмах<br />=============<br /> &nbsp; &nbsp; Какие скоростные алгоритмы? Когда есть ограничение архитектуры QUIK. Факторами возможных задержек в нем являются &lt;Реализация скрипта&gt; &nbsp;-&gt; &nbsp;&lt;Реализация QUIK&gt; &nbsp;-&gt; &nbsp;&lt;Используемая аппаратура ПК&gt; &nbsp;-&gt; &lt;Канал связи с брокером&gt; -&gt; &lt;Сервер брокера&gt; -&gt; &nbsp;-&gt; &lt;Канал связи брокера с биржей&gt; -&gt; &lt;Биржа&gt;.<br />=============<br />Я не очень понимаю, что Вы хотите донести, и о чем спорите? И &nbsp;при этой архитектуре можно строить торговлю спредом, с выставление огромного количества ордеров, а следовательно нужна обработка как ордеров так и сделок. Например, мой алгоритм оставленный мной без присмотра, поймал какую то &nbsp;ошибку (уже и не припомню причину) наделал столько заявок, что брокер заблокировал канал, а затем выставил штраф. Это я к тому что все возможно! <br />
			<i>10.01.2026 17:57:36, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80846/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80846/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 17:57:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80845/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_RtqyEGJW" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />А во время простоя исполнились ордера, то колбеки пропущены<br />=============<br />Ещё раз:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_A1JkROEn" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br />При запуске скрипта обработка таблиц происходит в OnInit.<br />=============<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_RLUJj48T" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Если только при запуске Вы сами не проверите что изменилось в таблицах с прошлого запуска.<br />=============<br />Скрипт сохраняет, допустим, номер своей активной заявки или id транзакции в файл. И при запуске он в состоянии проверить результат транзакции/заявки, пробежав однократно по соответствующим таблицам.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_ws4qnbzm" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />брокер может разорвать соединение, вызвать OnClenUp и тогда приедут ВСЕ колбеки с начала сессии<br />=============<br />Да и пофиг: скрипт запомнил, какие заявки/сделки (в т.ч. и те, что были в таблицах при запуске скрипта) он обработал и дубли проигнорирует. <br />
			<i>10.01.2026 17:51:45, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80845/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80845/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 17:51:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80844/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_qgNNXRBO" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/13952/" target="_blank" rel="nofollow">TGB</a></noindex> написал:<br />Обработка перезапусков скрипта по любой неконтролируемой вами причине у вас не предусмотрена? Пока он перезапускается заявки на бирже могут быть выполнены, а коллбеки пропущены.<br />=============<br /> При запуске скрипта обработка таблиц происходит в OnInit. Соответственно, все новые колбеки будут получены и обработаны после выхода из OnInit.<br /><br /> <br />====quote====<br /><noindex><a href="/user/13952/" target="_blank" rel="nofollow">TGB</a></noindex> написал:<br />Вы предполагаете что и коллбеки в работающем скрипте не теряются?<br />=============<br /> Если колбеки потеряются, то и данные в таблицах квика не будут заполняться.<br />=============<br />Как много чудесных открытий Вас ждет. Если скрипт был остановлен, например по ошибке, терминал же работает. А во время простоя исполнились ордера, то колбеки пропущены, т.к. событие прошло. Колбек же - это реакция на событие. Иногда брокер может разорвать соединение, вызвать OnClenUp и тогда приедут ВСЕ колбеки с начала сессии. Но это исключение.<br /><br />OnInit - это событие запуска скрипта, ни коим образом не связанное с таблицами. Если только при запуске Вы сами не проверите что изменилось в таблицах с прошлого запуска. <br />
			<i>10.01.2026 17:24:08, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80844/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80844/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 17:24:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80843/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_r86TDTB1" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />Обработка перезапусков скрипта по любой неконтролируемой вами причине у вас не предусмотрена? Пока он перезапускается заявки на бирже могут быть выполнены, а коллбеки пропущены.<br />=============<br />При запуске скрипта обработка таблиц происходит в OnInit. Соответственно, все новые колбеки будут получены и обработаны после выхода из OnInit.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_AXM8oFqk" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />Вы предполагаете что и коллбеки в работающем скрипте не теряются?<br />=============<br />Если колбеки потеряются, то и данные в таблицах квика не будут заполняться. <br />
			<i>10.01.2026 17:17:44, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80843/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80843/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 17:17:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80842/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_t4NWTaj4" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />особенно в скоростных алгоритмах<br />=============<br /> &nbsp; &nbsp;Какие скоростные алгоритмы? Когда есть ограничение архитектуры QUIK. Факторами возможных задержек в нем являются &lt;Реализация скрипта&gt; &nbsp;-&gt; &nbsp;&lt;Реализация QUIK&gt; &nbsp;-&gt; &nbsp;&lt;Используемая аппаратура ПК&gt; &nbsp;-&gt; &lt;Канал связи с брокером&gt; -&gt; &lt;Сервер брокера&gt; -&gt; &nbsp;-&gt; &lt;Канал связи брокера с биржей&gt; -&gt; &lt;Биржа&gt;. <br />
			<i>10.01.2026 16:50:37, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80842/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80842/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 16:50:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80841/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_tFySV3A4" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br />Думаю такой подход сложнее, чем обработка колбеков.<br />=============<br /> &nbsp; &nbsp;Обработка перезапусков скрипта по любой неконтролируемой вами причине у вас не предусмотрена? Пока он перезапускается заявки на бирже могут быть выполнены, а коллбеки пропущены. &nbsp;Вы предполагаете что и коллбеки в работающем скрипте не теряются? <br />
			<i>10.01.2026 16:24:45, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80841/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80841/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 16:24:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80840/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_HvGm6D4q" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />Учет комиссий не решается колбеками и данными из таблиц. Решается же он через обработку отчетов брокера. Комиссия биржи транслируется вместе с сделкой, поэтому её условно можно считать. Брокера же чаще всего транслирует &quot;ерунду&quot;. И только в отчете за день будут точные цифры, т.к. они могу зависеть от оборота за день, типа инструмента и др, и в момент сделки точных банально нет. Так что гораздо проще в алгоритм вбить процент либо величину комиссии и учитывать её. А корректировать через разбор отчета брокера.<br />=============<br />Комиссия брокера считается в конце дня, так как реально сделки урегулируются лишь после сессии клиринговыми компаниями. <br />Только эти компании могут списывать и зачислять денежные средства в оплату сделок. <br />После получения их отчета, брокер соответственно списывает деньги у клиентов и начисляет свою комиссию. <br />
			<i>10.01.2026 15:54:21, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80840/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80840/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 15:54:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80838/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Учет комиссий не решается колбеками и данными из таблиц. Решается же он через обработку отчетов брокера. Комиссия биржи транслируется вместе с сделкой, поэтому её условно можно считать. Брокера же чаще всего транслирует &quot;ерунду&quot;. И только в отчете за день будут точные цифры, т.к. они могу зависеть от оборота за день, типа инструмента и др, и в момент сделки точных банально нет. Так что гораздо проще в алгоритм вбить процент либо величину комиссии и учитывать её. А корректировать через разбор отчета брокера. <br />
			<i>10.01.2026 14:49:21, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80838/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80838/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 14:49:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80837/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_4sosjDKA" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />можно проверять циклически, по изменению их размеров, нужные вам таблицы QUIK (таблицы заявок, стоп-заявок, сделок и т.д.)?<br />=============<br />Думаю такой подход сложнее, чем обработка колбеков.<br />На примере данной ситуации: если пришедший колбек не содержит значения нужных мне параметров, то я его пропускаю и жду колбек, который их содержит.<br />В случае же обработки таблиц вместо колбеков, нужно хранить не просто индекс последней обработанной строки таблицы, а индексы всех обработанных строк либо общее количество строк и индексы необработанных строк (пропущенных по причине отсутствия в них значений нужных параметров). И циклически проверять, не появились ли новые значения в пропущенных строках. <br />
			<i>10.01.2026 13:55:24, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80837/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80837/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 13:55:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80836/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день <a class="blog-p-user-name" id="bp_ndezknc5" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;то что Вы описываете в определённых стратегиях конечно надежней, но задача далеко не тривиальна, особенно в скоростных алгоритмах. Да и автор вопроса применяет событийный подход. А вопрос звучит так:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_hri7qNA0" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a> написал:<br />Речь о том, как проигнорировать бесполезный вызов и не посчитать дважды то, что нужно? Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают (спрашивал об этом вот здесь: &nbsp;<noindex><a href="https://forum.quik.ru/forum10/topic9409/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic9409/</a></noindex> &nbsp;). Значит нужно вводить отдельную переменную - количество акций, и при каждом OnTrade обновлять. Но тогда при повторном OnTrade происходит повторное обновление, и пожалуйста - ошибка. &nbsp;<br />=============<br />Плюс учет различных комиссий в принятии решений, насколько помню точность в учете QUIK до шестого знака. Как же тут не сверять свою вторую бухгалтерию?<br /> &nbsp; <br />
			<i>10.01.2026 13:45:20, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80836/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80836/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 13:45:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80835/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_40Y7PYWM" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />И это еще не вся проблематика, ведь нужно данные периодически синхронизировать с данными QUIK. <br />=============<br /> &nbsp; &nbsp;Зачем синхронизировать с данными QUIK, когда можно их использовать всегда? Зачем обрабатывать "сырые" коллбеки, когда можно проверять циклически, по изменению их размеров, нужные вам таблицы QUIK (таблицы заявок, стоп-заявок, сделок и т.д.)? Вы же в своих стратегиях, наверное, учитываете состояние вашего портфеля, а не занимаетесь подсчетом коллбеков <img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> . &nbsp;Коллбеки имеет смысл использовать только там, где без них не обойтись (например, OnTransReply, в которых может быть информация о причине невыполнения транзакции). <br />
			<i>10.01.2026 12:51:49, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80835/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80835/topic9419/</guid>
			<pubDate>Sat, 10 Jan 2026 12:51:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80832/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<table class="data-table"><tr><td>openbal </td><td>NUMBER </td><td>Входящий остаток </td></tr><tr><td>openlimit </td><td>NUMBER </td><td>Входящий лимит </td></tr><tr><td>currentbal </td><td>NUMBER </td><td>Текущий остаток </td></tr><tr><td>currentlimit </td><td>NUMBER </td><td>Текущий лимит </td></tr><tr><td>locked_sell </td><td>NUMBER </td><td>В продаже. Количество инструментов, заблокированное под исполнение заявок &nbsp;клиента на продажу </td></tr><tr><td>locked_buy </td><td>NUMBER </td><td>В покупке. Количество инструментов в активных заявках клиента на &nbsp;покупку</td></tr><tr><td>locked_buy_value </td><td>NUMBER </td><td>Стоимость инструментов, заблокированных под покупку</td></tr><tr><td>locked_sell_value </td><td>NUMBER </td><td>Стоимость инструментов, заблокированных под продажу </td></tr></table> <br />
			<i>09.01.2026 19:02:05, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80832/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80832/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 19:02:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80831/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_b21aE0T7" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a> написал:<br /> <br />Например если в момент OnTrade мне нужно знать общее количество оставшихся акций<br />=============<br />Для этого надо ловить это: <ul><li>OnDepoLimit - изменение позиции по инструментам<br /></ul> <br />
			<i>09.01.2026 18:59:20, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80831/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80831/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 18:59:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80829/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Привел Вам просто базовую свою заготовку, в качестве примера не более. Если вы пишите на луа 5.4, то нужно отказаться от bit.band в пользу продвинутого метода. Что там точно за комиссии, подсказать &nbsp;тоже не могу так как на каждом рынке есть особенности. Для Фондового API QUIK предлагает предварительный расчет через стандартную функцию. Для оценки можно ее воспользоваться. На срочном есть зависимость от гарантийного обеспечения и курсов ... Что касается моего подхода, то я применяю подход &nbsp;Ральфа Винса, а именно, торговый капитал делю изначально на две части: пассивный и активный. Так как в процессе торговле всегда присутствует пассивная часть, нет необходимости вести четкий учет комиссий, сверяю по клирингу. Здесь более важен учет количества и цены, так как на прямую влияют на управление позицией. &nbsp; <br />
			<i>09.01.2026 15:55:59, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80829/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80829/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 15:55:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80828/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_L92gG9kR" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/17107/" target="_blank" rel="nofollow">User12501</a></noindex> написал:<br />Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают<br />=============<br /> Вы подняли очень важный вопрос. Он касается широкого круга пользователей, и широко обсуждался на форуме и приводились различные боевые подходы. На Ваш вопрос выше, ответ нужно организовывать внутренний учет, не только количества но и других параметров зависящих от конкретной сделки сделки (допустим усреднялись). Вот пример подхода которым, часто пользуюсь на скоростных скриптах:<br /> 
====code====
<pre>&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp; ----- comission&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91; 7 &#93; = trade.clearing_comission + trade.exchange_comission + trade.tech_center_comission;
&nbsp;&nbsp; </pre>
=============
 <br />=============<br />Кстати раз уж вы выложили код, есть вопрос по вот этой строке. Сейчас проверил в тех сделках, которые у себя отлавливал: там есть поле broker_comission, которое я воспринимал как итоговую сумму всех комиссий. И оно больше, чем написанная вами сумма. Например для одного лота MOEX: <br />tech_center_comission = 0<br />clearing_comission = 0.22<br />exchange_comission = 0.3<br />broker_comission = 1.57<br /><br />Проверка по остатку на счёте показывает, что 1.57 - точное значение итоговой комиссии, т.е. уже включает в себя всё остальное (и ещё что-то). &nbsp; <br />
			<i>09.01.2026 15:32:57, User12501.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80828/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80828/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 15:32:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80827/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_FRqVbizm" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a>, &nbsp;И это еще не вся проблематика, ведь нужно данные периодически синхронизировать с данными QUIK. &nbsp; <br />
			<i>09.01.2026 15:29:03, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80827/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80827/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 15:29:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80825/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_vNPn1VFe" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/17107/" target="_blank" rel="nofollow">User12501</a></noindex> написал:<br />Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают<br />=============<br /> Вы подняли очень важный вопрос. Он касается широкого круга пользователей, и широко обсуждался на форуме и приводились различные боевые подходы. На Ваш вопрос выше, ответ нужно организовывать внутренний учет, не только количества но и других параметров зависящих от конкретной сделки сделки (допустим усреднялись). Вот пример подхода которым, часто пользуюсь на скоростных скриптах:<br /> 
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp; </pre>
=============
 <br />=============<br /><br />Спасибо. Принцип такого костыля понятен, но очень надеялся, что можно как-то проще. Видимо нельзя. &nbsp; <br />
			<i>09.01.2026 15:16:16, User12501.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80825/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80825/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 15:16:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80823/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_3tNX0Ypt" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a> написал:<br />Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают<br />=============<br />Вы подняли очень важный вопрос. Он касается широкого круга пользователей, и широко обсуждался на форуме и приводились различные боевые подходы. На Ваш вопрос выше, ответ нужно организовывать внутренний учет, не только количества но и других параметров зависящих от конкретной сделки сделки (допустим усреднялись). Вот пример подхода которым, часто пользуюсь на скоростных скриптах:<br />
====code====
<pre>function OnTrade(trade)

&nbsp;&nbsp;&nbsp;&nbsp;if not WORKING_FLAG then return end

&nbsp;&nbsp;&nbsp;&nbsp;local key = trade.trans_id
&nbsp;&nbsp;&nbsp;&nbsp;local i = tonumber(sdelka&#91;0&#93;); 
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;if working 
&nbsp;&nbsp;and key and key&#62;0
&nbsp;&nbsp;and (i==0 and key~=sdelka.id) or (i&#62;0 and sdelka&#91;i&#93;&#91;1&#93;~=key)
&nbsp;&nbsp;--and trade.sec_code==symbol --and trade.class_code==class 
&nbsp;&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;i=i+1;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;0&#93;=i;&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;&nbsp;sdelka&#91;i&#93;={};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;0&#93;=sdelka&#91;0&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;1&#93;=trade.trans_id;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;2&#93;=get_date(trade.datetime)
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;3&#93;=get_time(trade.datetime)
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;4&#93;="B"; if bit.band(trade.flags,4)~=0 then sdelka&#91;i&#93;&#91;4&#93;="S"; end;
&nbsp;&nbsp;&nbsp;&nbsp;local dir = sdelka&#91;i&#93;&#91;4&#93;=="B" and 1 or sdelka&#91;i&#93;&#91;4&#93;=="S" and -1 or 0;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;5&#93;=trade.qty*dir;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;6&#93;=trade.price;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;----- comission 
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;7&#93;=trade.clearing_comission+trade.exchange_comission+trade.tech_center_comission;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;8&#93;=trade.order_num;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;9&#93;=trade.trade_num;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka&#91;i&#93;&#91;10&#93;=trade.sec_code;&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;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sdelka.id=trade.trans_id;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Log:info("OnTrade! sdelka "..i .."; "
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; trans_id="..sdelka&#91;i&#93;&#91;1&#93; 
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;2&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;3&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;4&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;5&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;6&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; comission="..sdelka&#91;i&#93;&#91;7&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; onum="..sdelka&#91;i&#93;&#91;8&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; tnum="..sdelka&#91;i&#93;&#91;9&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."; "..sdelka&#91;i&#93;&#91;10&#93;
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.."&#92;n"
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;--local a,v; for a,v in pairs(sdelka&#91;i) do Log:trace( 'OnTrade! sdelka&#91;'..i..'&#93;&#91;'..tostring(a)..'&#93; = '.. tostring(v) ) end;
&nbsp;&nbsp;end
end;</pre>
============= <br />
			<i>09.01.2026 14:25:26, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80823/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80823/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 14:25:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80822/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_l2Dy7m8r" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a> написал:<br /><br />Речь о том, как проигнорировать бесполезный вызов и не посчитать дважды то, что нужно? Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают (спрашивал об этом вот здесь: &nbsp;<noindex><a href="https://forum.quik.ru/forum10/topic9409/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic9409/</a></noindex> &nbsp;). Значит нужно вводить отдельную переменную - количество акций, и при каждом OnTrade обновлять. Но тогда при повторном OnTrade происходит повторное обновление, и пожалуйста - ошибка. &nbsp;<br />=============<br />Ошибка т.к. обработка наивная:<br /><br />pos = pos + sign*traded.qty<br /><br />Естественно при таком подходе повторный вызов даст искажение данных. А если обработка более сложная, то не будет ошибки. Это уже вопрос реализации, зависящий от конкретной задачи. <br />
			<i>09.01.2026 14:02:24, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80822/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80822/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 14:02:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80821/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_lVSu75Qw" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал: <br />Например, если поля broker_comission и broker_comission_currency не важны, то этот второй вызов бесполезен, а если важны, то уже нет. <br />=============<br /><br />Речь о том, как проигнорировать бесполезный вызов и не посчитать дважды то, что нужно? Например если в момент OnTrade мне нужно знать общее количество оставшихся акций, стандартные get-функции не работают (спрашивал об этом вот здесь: <noindex><a href="https://forum.quik.ru/forum10/topic9409/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic9409/</a></noindex> ). Значит нужно вводить отдельную переменную - количество акций, и при каждом OnTrade обновлять. Но тогда при повторном OnTrade происходит повторное обновление, и пожалуйста - ошибка. &nbsp; <br />
			<i>09.01.2026 13:21:00, User12501.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80821/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80821/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 13:21:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80819/topic9419/">Извечный вопрос: повторные вызовы OnTrade</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_aLK6GoM7" href="/user/17107/" bx-tooltip-user-id="17107">User12501</a> написал:<br />Опять отловил два повторных OnTrade, на этот раз совпадали все поля кроме broker_comission и broker_comission_currency (в первом они были 0 и пусто, во втором правильные). Можно ли как-то конкретно определить полный набор полей, которые я должен проверить, чтобы уверенно знать, что данный вызов OnTrade является последним по данной заявке?<br />Речь только про заявки из скрипта qlua, строго на один лот. &nbsp;<br />=============<br />Нельзя ответить на этот вопрос. Например, если поля broker_comission и broker_comission_currency не важны, то этот второй вызов бесполезен, а если важны, то уже нет. Хотя, если говорить о комиссиях брокера, то они их может не транслировать вовсе и можно ждать вечно.<br /><br />Т.е. все зависит от того, что необходимо. Явно поля количества и суммы важны, и, наверно, brokerref. Остальное уже решать Вам.<br /><br />В системах с повторяющимися сигналами принято обновлять ранее поступившие данные. Пришли первоначальные данные - записали их с неким ключом. Пришли повторно обновили их и вызвали метод обновления зависимых данных. Т.е. если строить систему на простейшем принципе однократного учета, то будут проблемы. А если обновлять и пересчитывать, то уже нет. Хотя, конечно, обновление данных - это более сложная реализация. Иногда настолько, что проще не делать. <br />
			<i>09.01.2026 12:37:49, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80819/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80819/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 12:37:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Извечный вопрос: повторные вызовы OnTrade</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message80817/topic9419/">Извечный вопрос: повторные вызовы OnTrade</a></b> <i>Даже при заявке на одну акцию</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Опять отловил два повторных OnTrade, на этот раз совпадали все поля кроме broker_comission и broker_comission_currency (в первом они были 0 и пусто, во втором правильные). Можно ли как-то конкретно определить полный набор полей, которые я должен проверить, чтобы уверенно знать, что данный вызов OnTrade является последним по данной заявке?<br />Речь только про заявки из скрипта qlua, строго на один лот. &nbsp; <br />
			<i>09.01.2026 12:24:50, User12501.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message80817/topic9419/</link>
			<guid>http://forum.quik.ru/messages/forum10/message80817/topic9419/</guid>
			<pubDate>Fri, 09 Jan 2026 12:24:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
