<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Отладка QUIK 8.13]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Отладка QUIK 8.13 форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 18:10:26 +0300</pubDate>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64043/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ByEe0ZyL" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, Да не надо ускорять то, что у меня уже есть! Мой скрипт и сейчас без напряжения обслуживает тысячу тикеров, если не две! А где я теперь столько тикеров наберу? Это на валютных бумагах их много, а здесь их у меня осталось меньше сотни. И на кой мне &quot;просто забирать только вновь появившиеся заявки из таблицы orders&quot;, если стек - это таблица Lua, а не таблица QUIK? Прямое обращение к данным, а не через getIten - тут УЖЕ порядок по скорости сидит, не говоря уже про надёжность! <br />
			<i>01.07.2022 09:48:31, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64043/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64043/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 09:48:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64042/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если бы вы это не написали:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_WDfTJHGr" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Тут как бы пару порядков по скорости не набежало!<br />=============<br /> &nbsp;то мне комментировать было бы нечего.<br /> &nbsp;А так у меня есть предложение как ускорить то, что у вас уже есть.<br /> &nbsp; &nbsp; Не надо обрабатывать OnTrade. Четвертьсекундный обработчик - ничего не ищет, а просто забирает только вновь появившиеся заявки из таблицы orders а далее как у вас описано но без обработки вашего стека. <br />
			<i>01.07.2022 09:39:49, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64042/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64042/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 09:39:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64041/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_IuasOZth" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, Ну и пусть пухнет - я же ею не пользуюсь! <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" /> <br /><br />Да, стек прерываний у меня обрабатывает четвертьсекундный обработчик - он ничего не ищет, а просто забирает элемент с вершины стека (это тоже довольно редко - обычно стек полностью выбран), а потом ищет его (как раз по ID транзакции) в стеке активных заявок (тот стек тоже редко превышает десяток элементов от всех тикеров, поскольку сделки заявки мои в подавляющем большинстве случаев исполняются немедленно), корректирует данные портфеля и кошелька и, если заявка полностью исполнена, выбрасывает этот элемент уже из второго стека. А 10-секундный пробегается по этому стеку и если время вышло, снимает эту заявку (если она всё ещё активна). Тут как бы пару порядков по скорости не набежало! <br />
			<i>01.07.2022 09:18:50, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64041/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64041/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 09:18:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64038/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_DCBY1ap7" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />И одно это уже даёт порядок по скорости.<br />=============<br /> &nbsp; &nbsp;Интересно где этот порядок по скорости?<br /> &nbsp; &nbsp;Сначала, по колбеку вы заносите данные колбека в свой стек, а затем, наверное, по какому-то таймеру обрабатываете свой стек. И где в таком случае порядок по скорости? <br />
			<i>01.07.2022 08:59:42, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64038/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64038/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 08:59:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64037/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Wsg31lDE" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />А меня не устраивает, что таблица пухнет. <br />=============<br /> &nbsp; Хотите вы это или нет таблица все равно пухнет &nbsp;<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" /> <br />
			<i>01.07.2022 08:49:37, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64037/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64037/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 08:49:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64036/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ajVtelub" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, А меня не устраивает, что таблица пухнет. Не устраивает даже поиск по ней, даже по маленькой. Мой скрипт всегда ТОЧНО знает, что ему делать, без всякого поиска. И одно это уже даёт порядок по скорости.<br /><br />Нет, я не знаю, а только предполагаю, что данные в ней столь же недостоверные, чем в колбеках, если не хуже, ибо системный софт просто УЖАСЕН!<br /><br />Нет, нельзя &quot;обрабатывать только вновь поступившие её элементы&quot;. Во-первых, там данные тоже могут изменяться в случайные моменты времени. Во-вторых, всё равно придётся искать, по какому тикеру эта сделка, по какой заявке, исполнена ли та заявка полностью или частично. В-третьих, я уже сказал, что считаю тот вариант, который использую, самым оптимальным и рассматривать другие просто не хочу.<br /><br />Я и так использую только ОДИН коллбек, как минимально необходимый. Есть ещё OnStop, но он просто на всякий случай, если случайно кликнуть по кнопке &quot;остановить&quot;. <br />
			<i>01.07.2022 08:40:30, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64036/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64036/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 08:40:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64034/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_cB6TJRVH" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />А таблица с течением времени только пухнет, данные там тоже недостоверные, да ещё и всё более затратный поиск. Нафиг нужно такое счастье?<br />=============<br /> &nbsp; &nbsp; Ну и пусть таблица пухнет. Вы знаете, что данные в ней более недостоверные, чем колбеки? Откуда все более затратный поиск в ней, если можно обрабатывать только вновь поступившие ее элементы (между циклами ее обработки)?<br /> &nbsp; &nbsp; Я не утверждаю, что заявки и сделки надо обрабатывать именно предлагаемым мною способом. Это, всего-навсего, альтернативный и вполне работающий вариант, избавляющий от обработки промежуточных колбеков. В принципе, чем меньше разных колбеков вы используете (при этом решая свои задачи), тем потенциально надежнее ваш скрипт. <br />
			<i>01.07.2022 07:54:32, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64034/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64034/topic6356/</guid>
			<pubDate>Fri, 01 Jul 2022 07:54:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64030/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_FZXAAq3O" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, Я сроду ни на кого и не на что не жалуюсь.<br /><br />Ладно, объясняю. Данные из таблицы orders я использую, предпочитая не связываться с глючным софтом Квика - только в случае крайней необходимости. Заявки мне нужны только для того, чтобы их снять как неисполненные (или частично исполненные). Их я и &quot;проверяю с некоторой периодичностью&quot;, что бывает довольно редко - примерно 90% моих заявок исполняется. То есть несколько десятков раз в сутки, а то и того меньше. Шастать же по таблице сделок элементарно невыгодно: сделки могут происходить и несколько раз в секунду, и здесь нужно именно прерывание, в котором уже ничего искать не нужно, а только быстренько обработать готовое событие. Скрипту и без того есть чем заняться: он <B>принимает решения </B>о новых сделках, он мониторит рынок, считает и анализирует свечи разных таймфреймов, он рисует всю эту фигню на экране (если не установлен &quot;спящий режим&quot;), а обслуживать сотни или тысячи тикеров не так-то просто. Ему тупо НЕКОГДА ползать ещё и по таблице сделок, в которой непонятно когда и как обновляется информация. Сделка совершена - всё, забыли про неё - она уже обработана! А таблица с течением времени только пухнет, данные там тоже недостоверные, да ещё и всё более затратный поиск. Нафиг нужно такое счастье?<br /><br /><a class="blog-p-user-name" id="bp_60pJ9HBp" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Меня прям умиляют эти распальцованные неучи. Кто тебе сказал, придурок, что я не понимаю разницу между транзакцией и заявкой? И с какого бодуна ты корчишь из себя учителя? Ах, он &quot;подробно расписал&quot;, панимащ! А я тебя об этом спрашивал? Как только увидят знакомое слово, так тут же начинают пытаться изобразить из себя что-то состоятельное. Тьфу на вас! <br />
			<i>30.06.2022 21:58:05, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64030/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64030/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 21:58:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64029/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_TSTmErSD" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Это САМ СКРИПТ <B>формирует</B> айдишки заявок! <br />=============<br />Я ж сказал что ты не понимаешь разницу между транзакцией и заявкой.<br />И даже когда я все подробно расписал - ты, дебила кусок, понять прочитанное не сумел. <br />
			<i>30.06.2022 18:50:05, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64029/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64029/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 18:50:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64028/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Заинтриговали:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_baU0FQuR" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Я несколько раз писал здесь, почему я использую именно OnTrade и крайне редко заглядываю в orders, повторяться лень, так что если интересно, покопайтесь в моих сообщениях.<br />=============<br /> &nbsp; Из того, что вы писали я это не понял. Поэтому, пожалуйста, объясните, чем вам не подходят данные из таблиц orders (Заявки) и trades (Сделки), если вы будете их проверять с некоторой периодичностью. В этих таблицах хранятся не какие-то «прерывания», а &nbsp;выполненные биржей операции (выставленные заявки и выполненные сделки). &nbsp;Или вам интересно «кувыркаться» с «сырыми» «прерываниями - колбеками», которые то приходят, то не приходят? <br />
			<i>30.06.2022 18:04:13, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64028/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64028/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 18:04:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64025/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_NSnR7pFF" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Коротко: я считаю этот вариант самым оптимальным.<br />=============<br /> &nbsp;А что же жалуетесь на нестабильность &nbsp;<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" /> ? <br />
			<i>30.06.2022 17:02:12, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64025/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64025/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 17:02:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64024/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_i6MABjXu" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Лапуль, я же подробнейшим образом описал, в чём ахинея. Только вот информация полностью определяется приёмником. Распальцованные откровения, что информация от биржи поступает в произвольные моменты времени наверняка известны в любой младшей ясельной группе. Ладно, ещё разок: ахинея, лапуль, в том, что информация приходит с биржи. Это САМ СКРИПТ формирует айдишки заявок! И терминал Квика узнаёт о них раньше всех (если предположить, что брокер или биржа вообще их знают, ибо им-то они уж точно нафиг не нужны. Терминал также прекрасно знает, от кого пришла заявка - он же передаёт управление в коллбек! Так айдишку-то отдай, зараза! Ты же её лучше любой биржи должен знать! А если не знаешь, какого хера коллбек вызываешь?<br /><br /><a class="blog-p-user-name" id="bp_Qv6oRcNL" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, Всё наоборот: я люблю писать компактные и эффективные программы. Да, я завожу новый элемент стека и пишу туда то, и только то, что мне требуется записать, а не всю ту хрень, которая пришла в OnTrade. К тому же, имена массивов по многим причинам у меня все числовые. А Ваш пример - это липовая экономия.<br /><br />Серьёзно? А ну, шайбу! Вот кусочек кода после того, как данные из OnTrade окажутся всё-таки корректными. Не затрахаетесь &quot;место непонятных числовых индексов использовать более содержательные текстовые ключи&quot;?
====code====
<pre>if a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;4&#93;=="B" then if k&#62;0 then 
a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;=a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;+a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
if a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;==0 then Y(n,k,0,0);
a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;k&#93;=0;a&#91;n&#93;&#91;1&#93;&#91;6&#93;&#91;k&#93;=0;
end;else a&#91;n&#93;&#91;4&#93;&#91;0&#93;&#91;l&#93;=a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
a&#91;n&#93;&#91;4&#93;&#91;0&#93;&#91;l+1&#93;=a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;6&#93;;
a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;k&#93;=a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;k&#93;+2;end;
else a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;=a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;-a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
else if a&#91;n&#93;&#91;4&#93;&#91;0&#93;&#91;l-2&#93;==0 then a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;k&#93;=a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;k&#93;-2;end;
a&#91;n&#93;&#91;6&#93;=a&#91;n&#93;&#91;6&#93;+l;end;

Или вот кусочек из другого места:
a&#91;n&#93;&#91;4&#93;&#91;0&#93;&#91;a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;0&#93;&#93;=a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
a&#91;n&#93;&#91;4&#93;&#91;0&#93;&#91;a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;0&#93;+1&#93;=a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-3&#93;-a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-1&#93;+a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;6&#93;;
a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;0&#93;=a&#91;n&#93;&#91;1&#93;&#91;4&#93;&#91;0&#93;+2;
a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;=a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;+a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-4&#93;=a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-4&#93;-a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;;
if a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-2&#93;==0 then 
if a&#91;n&#93;&#91;4&#93;&#91;k&#93;&#91;l-4&#93;&#62;0 then Y(n,k,0,0);end;end;

</pre>
=============
<br />И кто Вам сказал, что читабельность моей программы улучшилась бы? Мы с моим скриптом прекрасно всё читаем. А лучше всего об этом написал 21 год назад один человек (к слову, программист высочайшей квалификации: &quot;Так я же не поленился, скопировал код, и отформатировал его. Клянусь - readability не на грамм не повысилась. Как не понимал ни бельмеса в том, что там творится, так и не понял&quot;.<br /><br />Я несколько раз писал здесь, почему я использую именно OnTrade и крайне редко заглядываю в orders, повторяться лень, так что если интересно, покопайтесь в моих сообщениях. Коротко: я считаю этот вариант самым оптимальным.<br /><br />Я?! Это он на меня наезжает. Далеко не первый раз, кстати. Камикдзе... &nbsp;<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" /> Кстати, что за &quot;существенную информацию&quot; он умудрился сообщить? Лично я кроме словесного поноса на грани истерики ничего не заметил. <br />
			<i>30.06.2022 16:49:48, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64024/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64024/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 16:49:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64018/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_OWiNJbCh" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Вот полный код моего обработчика:Код<br />function OnTrade(n)<br />local i;<br />i=a[0][7][0]+1;   -- новый размер стека сделок из прерывания<br />a[0][7][0]=i;   -- записываем изменение<br />a[0][7][i]={};   -- заводим новый элемент стека<br />a[0][7][i][0]=n.trans_id;   -- ID транзакции<br />a[0][7][i][1]=n.order_num;   -- ID заявки<br />a[0][7][i][2]=n.trade_num;   -- ID сделки<br />a[0][7][i][3]=n.sec_code;   -- ID тикера<br />a[0][7][i][4]=&quot;B&quot;;   -- по умолчанию это покупка<br />if bit.band(n.flags,4)~=0 then a[0][7][i][4]=&quot;S&quot;;end;<br />a[0][7][i][5]=n.qty;   -- объём сделки в лотах<br />a[0][7][i][6]=n.price;   -- цена сделки<br />end;<br />=============<br /> &nbsp; Зачем вы заводите новый элемент стека, когда можно было сделать так:<br />
====code====
<pre>
function OnTrade(n)
local i;
i=a&#91;0&#93;&#91;7&#93;&#91;0&#93;+1;&nbsp;&nbsp; -- новый размер стека сделок из прерывания
a&#91;0&#93;&#91;7&#93;&#91;0&#93;= i;&nbsp;&nbsp; -- записываем изменение
a&#91;0&#93;&#91;7&#93;&#91;i&#93;= n;&nbsp;&nbsp; -- записываем таблицу из OnTrade
end;
</pre>
=============
<br /> Вы любите писать длинные и неэффективные программы &nbsp;<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" /> ?<br />-----<br /> &nbsp;Вместо непонятных числовых индексов можно бы было использовать более содержательные текстовые ключи, например: «Тикер», «История сделок» и т.д. Читабельность вашей программы улучшилась бы, а ее эффективность практически не изменилась. Если насчет эффективности у вас есть сомнения, &nbsp;то проведите эксперименты.<br />----<br /> &nbsp;Зачем вы вообще «обрабатываете» OnTrade, когда можно бы было периодически (по таймеру) просматривать таблицы &nbsp;orders (Заявки) и trades (Сделки), в которых отображается готовые состояния по выполнению ващих транзакций ? <br />-------------------------------------- <br />2.	Зачем вы наезжаете на swerg?<br /> &nbsp;Он действительно сообщил существенную информацию (мне, например, она была неизвестна) и за это ему спасибо. <br />
			<i>30.06.2022 15:40:53, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64018/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64018/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 15:40:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64017/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Уточни, в чем ахинея?<br />Я написал как оно устроено.<br />Ты несёшь поток хотелок.<br />Так в чем ахинея, придурок? <br />
			<i>30.06.2022 14:18:49, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64017/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64017/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 14:18:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64016/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_usCJElaF" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Лапуль, ну не надо пороть ахинею с умным видом. Ежу понятно, что информация от биржи поступает в произвольные моменты времени. И я уже давал пару раз предложение, чтобы они сначала накопили все необходимые данные, а уж потом вызывали коллбеки скрипта, ибо несколько прерываний на одно событие есть маразм. И мне совершенно по барабану, что там куда и откуда приходит - я передавал заявку в терминал, и единственное, что знаю я и что обязан знать он - это идентификатор моей транзакции. И я здесь уже писал, что в большинстве случаев, то в ontrade приходит сразу полная информация, включая указанный пользователем ID транзакции и спрашивал, что делать В МЕНЬШИНСТВЕ. И при чём тут сервер Квика? Прерывание вызывает терминал, которому прекрасно известен ID транзакции. За каким хером пользователю нужен этот коллбек, если он в принципе не может определить, по какой именно заявке скрипта он пришёл? И ещё писал, что практически всегда приходят ТРИ прерывания на одно событие и что изредка бывает так, что НИ ОДНО из них не содержит правильных данных. И это есть именно ОШИБКА. <br />
			<i>30.06.2022 13:43:37, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64016/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64016/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 13:43:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64014/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Это не ошибка. Это результат произвольно го порядка поступления информации с биржи. И, соответственно, произвольного порядка наполнения данных в колбеках скрипта.<br />Если от биржи информация о зарегистрированной заявке пришла раньше информации о случившемся сделке, что происходит в большинстве случаев, то в ontrade приходит сразу полная информация, включая указанный пользователем ID транзакции.<br />Если информация о сделке пришла раньше информации и породившей её заявке, то стачала будет ontrade, в котором часть полей, данные в которые попадают с заявки, будут не заполнены. А после того как с биржи придёт информация о заявке, сервер квика сможет опознать заявку для уже известной ему сделки и вызовет ontrade уже с заполненной информацией в полях про заявку <br />
			<i>30.06.2022 13:01:28, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64014/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64014/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 13:01:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64013/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_2Ggg1AsV" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Лапуль, именно нестабильно проявляющиеся ошибки и есть самые сложные для обнаружения - это тоже азбучная истина. <br />
			<i>30.06.2022 12:43:44, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64013/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64013/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 12:43:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64011/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			От же тупень.... "ошибка нестабильная" <br />
			<i>30.06.2022 12:08:22, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64011/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64011/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 12:08:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64009/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_LTffChIy" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Лапуль, да я в тыщу раз лучше тебя знаю, &quot;как оно на самом деле&quot;. Азбучные истины, подаваемые за плод &quot;очень глубокого многолетнего изучения&quot;. А ты вместо того, чтобы что-то ПО ДЕЛУ сказать, продолжаешь выпендриваться по-идиотски. Дурак и напыщеный идиот.<br /><br />Лапуль, я же русским языком сказал, что мне НАСРАТЬ на инфу с сервера - мне нужна правильная информация по МОИМ заявкам, и если эта придурь вместо МОЕЙ ID транзакции подсовывает 0, то это глюк ТЕРМИНАЛА! От него и не требуется &quot;производить содержательной работы со сделкам и заявками&quot; - мой скрипт прекрасно с этим справляется. Сейчас вот вообще всё обложил отладочной печатью, а эта сволочь перестала ошибки давать - ошибка нестабильная. Да ещё и на бирже паника - Газпром грёбнулся почти на 30%. Вроде как золотое время, чтобы всласть порезвиться скрипту, но я лучше подожду - и так количество сделок за полтыщи перевалило - никогда такого не было, а у меня непонятный глюк висит. <br />
			<i>30.06.2022 12:00:15, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64009/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64009/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 12:00:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64007/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я тебе рассказываю как оно на самом деле. Причём инфу эту ты не найдёшь нигде, она из очень глубокого многолетнего изучения.<br />А ты вместо спасибо продолжаешь выпендриваться по-идиотски. Дурак и напыщеный идиот.<br /><br />А сервер при том, что терминал лишь передаёт инфу на сервер и получает её с сервера. Терминал вообще не производит содержательного работы со сделкам и заявками.<br />Впрочем, сервер 4вика тоже. Все биржа. И это абсолютно правильно, иначе барак полный выйдет. <br />
			<i>30.06.2022 11:06:01, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64007/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64007/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 11:06:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64006/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_HOndHe58" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, Лапуль, Вы где-нибудь у меня видели хоть полсловечка на тему, что &quot;прерывания, как я их называю&quot; (а OnTrade - это именно прерывание) приходят НЕ в любом порядке? А хоть полсловечка на тему, что я отправляю не транзакцию, а заявку? Там открытым текстом для особо одарённых указано, что это именно транзакция, нулевое поле элемента стека прерываний. И при чём тут &quot;сервер квика&quot;? ТЕРМИНАЛ Квике получает информацию ОТ МОЕГО СКРИПТА информацию о заявке! А уж зарегистрирована она или нет - это ЕГО проблемы, а не мои. Я ВААПЩЕ НЕ ПОЛЬЗУЮСЬ OnOrder.<br /><br />Да, согласен: &quot;смешно читать про такие наивные &quot;открытия&quot; пальцегнутого балбеса. Это сразу с головой выдаёт его реальный уровень&quot;. С зеркалом разговорились, лапуль? <br />
			<i>30.06.2022 10:17:31, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64006/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64006/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 10:17:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64005/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Но вообще конечно смешно читать про такие наивные "открытия" пальцегнутого балбеса. Это сразу с головой выдаёт его реальный уровень. <br />
			<i>30.06.2022 09:53:06, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64005/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64005/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 09:53:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64004/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_kkGgh7t3" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />Но, господа, это же МОЯ айдишка, это НА МЕНЯ возлагается обеспечение её уникальности, так какие могут быть нули? Откуда им взяться? И это на 146% ошибка именно ПО Квика - ни брокеру, ни бирже до моей айдишки нет никакого дела. Непорядок...<br />=============<br /><br />Нет, это ошибка скриптописателя, который не понимает.<br />"прерывания", как вы их называете, приходят в любом порядке. Но это не болажь квика, а особенность работы биржевых API<br />В том случае, если сервер квика получает об биржи информацию о сделке раньше чем информацию о зарегистрированный заявке, он сообщает вам о сделке вызовом ontrade, но про заявку он ещё не знает, биржа это ещё не сообщила. Соответственно и информацию поставленную вами на заявке он сообщить не может, у него сервера квик в этот момент ещё нет такой заявки, он про неё не знает<br />Потом, когда с биржи приходит информация про зарегмюистрированную заявку, в скрипте вызывается снова ontrade, но уже с поставленной информацией о заявке,т.к.теперь появилась возможность все это связать, теперь сервар знает про заявку и сделку. Ещё в этот момент будет вызван onorder, конечно.<br /><br />А то что вы отправляете - это транзакция а не заявка. <br />
			<i>30.06.2022 09:37:32, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64004/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64004/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 09:37:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64002/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_pDFq6xaB" href="/user/54/" bx-tooltip-user-id="54">Старатель</a>, Кстати, да - ошибка моя (по поводу одинаковых значений всех полей) - вот код<br />F:write(ST()..&quot;Не нашли - левая сделка по &quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;3&#93;..&quot; 0=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot; 1=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot; 2=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot; 4=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot; 5=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot; 6=&quot;..a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;..&quot;\n&quot;);<br />В заголовках скопированный нолик поправил, а в самих значениях забыл. Но это не отменяет того факта, что сделки ТЕРЯЮТСЯ, несмотря на то, что прерывания по ним ПРИХОДЯТ. И эта ошибка никуда не исчезла - моя оказалась всего лишь в выводе <br />
			<i>30.06.2022 07:44:09, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64002/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64002/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 07:44:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64000/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ownAvydU" href="/user/54/" bx-tooltip-user-id="54">Старатель</a>, Исходя из представленного кода, НЕ ТОЛЬКО &quot;в 4-м параметре не может быть нуля от слова совсем&quot;. Его точно так же не может быть от того же самого слова и в других полях тоже: в 0-м должно сидеть trans_id, в 1-м - order_num, во 2-м - trade_num, в 3-м - sec_code, в 5-м - qty, в 6-м - price. И в 99 случаях из 100 они именно там и сидят. И это ЕДИНСТВЕННОЕ место в скрипте, когда в стек что-то ПИШЕТСЯ. Читается - да, в другом месте, в обработчике по таймеру, но, во-первых, там ЧИТАЕТСЯ, а во-вторых, даже если там и были нули, в следующем прерывании, как правило, сидят уже корректные данные, и данные эти готовлю НЕ Я - ни в случае ошибок, ни в каком-либо другом случае. Кстати, когда я впервые обнаружил этот 0 вместо ID транзакции, в остальных полях сидели ПРАВИЛЬНЫЕ значения. Более того: если ХОТЬ В ОДНОМ из трёх прерываний приходят верные данные, сделка корректно обрабатывается. В-третьих, к элементам стека сделок я не прикасаюсь ВААПЩЕ - я даже не уничтожаю этот элемент стека после обработки - должен же и сборщик мусора чем-то заниматься. Наконец, я уже не раз писал, что четверть, если не треть моего кода написана исключительно с целью компенсации глюков системного софта Квика, коих тут просто НЕМЕРЯЯНО, и от версии к версии положение всё ухудшается. В данном случае сделки ТЕРЯЮТСЯ, а теряться они НЕ ДОЛЖНЫ. Я не бог, я могу и ошибаться, но &quot;рукожопость&quot; здесь, как минимум, НЕ ТОЛЬКО у меня. <br />
			<i>30.06.2022 07:28:17, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64000/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64000/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 07:28:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message63996/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_CHjuXdGx" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />не только айдишка, но и все остальные поля бывают в нуле.<br />=============<br />Исходя из представленного кода, в 4-м параметре не может быть нуля от слова совсем. Там должно быть либо "B" либо "S". Значит нули забиваются где-то в другом месте скрипта.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_U0Ab0UxQ" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />А вот картина маслом<br />=============<br />Думаю ноги растут оттуда же.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_BR8YEtSL" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />как можно написать софт, который способен вытворять ТАКОЕ.<br />=============<br />Этот вопрос следует адресовать рукожопому скриптеру.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_p8DaVtj8" href="/user/14299/" bx-tooltip-user-id="14299">Владимир</a> написал:<br />И что прикажете делать?<br />=============<br />Искать ошибки в своём скрипте, а не скулить на весь форум. <br />
			<i>30.06.2022 00:13:39, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message63996/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message63996/topic6356/</guid>
			<pubDate>Thu, 30 Jun 2022 00:13:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message63995/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вдогонку к предыдущему моему сообщению <noindex><a href="https://forum.quik.ru/messages/forum10/message63758/topic6356/#message63758" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message63758/topic6356/#message63758</a></noindex>. Ситуация оказалась куда более неприятной, чем я предполагал.<br /><br />Вот полный код моего обработчика:
====code====
<pre>function OnTrade(n)
local i;
i=a&#91;0&#93;&#91;7&#93;&#91;0&#93;+1;&nbsp;&nbsp;&nbsp;-- новый размер стека сделок из прерывания
a&#91;0&#93;&#91;7&#93;&#91;0&#93;=i;&nbsp;&nbsp;&nbsp;-- записываем изменение
a&#91;0&#93;&#91;7&#93;&#91;i&#93;={};&nbsp;&nbsp;&nbsp;-- заводим новый элемент стека
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;0&#93;=n.trans_id;&nbsp;&nbsp;&nbsp;-- ID транзакции
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;1&#93;=n.order_num;&nbsp;&nbsp;&nbsp;-- ID заявки
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;2&#93;=n.trade_num;&nbsp;&nbsp;&nbsp;-- ID сделки
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;3&#93;=n.sec_code;&nbsp;&nbsp;&nbsp;-- ID тикера
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;4&#93;="B";&nbsp;&nbsp;&nbsp;-- по умолчанию это покупка
if bit.band(n.flags,4)~=0 then a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;4&#93;="S";end;
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;5&#93;=n.qty;&nbsp;&nbsp;&nbsp;-- объём сделки в лотах
a&#91;0&#93;&#91;7&#93;&#91;i&#93;&#91;6&#93;=n.price;&nbsp;&nbsp;&nbsp;-- цена сделки
end;
</pre>
=============
Некоторые пояснения: a&#91;0&#93;&#91;7&#93; - стек прерываний. В нулевом элементе хранится размер стека, остальные представляют собой структуры из 7 элементов (каких именно - видно по коду). Стек сделан для того, чтобы не сидеть долго в обработчике и минимизировать риски столкновения прерываний. Поэтому обработчик только забирает оттуда данные, а разбирается с ними &quot;в спокойной обстановке&quot; уже обработчик по таймеру. В большинстве случаев всё работает нормально, но &quot;в меньшинстве&quot;, как я уже говорил, вместо ID транзакции прилетает 0. Это было не страшно, поскольку прерывания на одно событие приходят целой пачкой и потому вероятность, что если не все три, то хотя бы одно из них содержит правильные данные, довольно высока. Но сделки у меня продолжали пропадать. Я вывел в отладочную печать все до единого поля элемента стека. Оказалось всё ещё круче: не только айдишка, но и все остальные поля бывают в нуле. Вот фрагменты сегодняшнего лога:
====code====
<pre>10:04:09 Не нашли - левая сделка по IRAO 0=0 1=0 2=0 4=0 5=0 6=0
10:18:31 Не нашли - левая сделка по RASP 0=0 1=0 2=0 4=0 5=0 6=0
11:40:44 Не нашли - левая сделка по AFKS 0=0 1=0 2=0 4=0 5=0 6=0
</pre>
=============
Все эти сделки были корректно обработаны, поскольку следом приходили &quot;нормальные&quot; прерывания. А вот картина маслом в тех случаях, когда сделки терялись (тоже из сегодняшнего лога):
====code====
<pre>10:05:19 Не нашли - левая сделка по MAGN 0=41335830 1=41335830 2=41335830 4=41335830 5=41335830 6=41335830
10:05:19 Не нашли - левая сделка по MAGN 0=41335830 1=41335830 2=41335830 4=41335830 5=41335830 6=41335830
10:05:19 Не нашли - левая сделка по MAGN 0=41335830 1=41335830 2=41335830 4=41335830 5=41335830 6=41335830

10:14:39 Не нашли - левая сделка по VTBR 0=41335877 1=41335877 2=41335877 4=41335877 5=41335877 6=41335877
10:14:39 Не нашли - левая сделка по VTBR 0=41335877 1=41335877 2=41335877 4=41335877 5=41335877 6=41335877
10:14:39 Не нашли - левая сделка по VTBR 0=41335877 1=41335877 2=41335877 4=41335877 5=41335877 6=41335877

11:21:11 Не нашли - левая сделка по ISKJ 0=41336338 1=41336338 2=41336338 4=41336338 5=41336338 6=41336338
11:21:11 Не нашли - левая сделка по ISKJ 0=41336338 1=41336338 2=41336338 4=41336338 5=41336338 6=41336338
11:21:11 Не нашли - левая сделка по ISKJ 0=41336338 1=41336338 2=41336338 4=41336338 5=41336338 6=41336338

11:40:17 Не нашли - левая сделка по CHMF 0=41336414 1=41336414 2=41336414 4=41336414 5=41336414 6=41336414
11:40:17 Не нашли - левая сделка по CHMF 0=41336414 1=41336414 2=41336414 4=41336414 5=41336414 6=41336414
11:40:17 Не нашли - левая сделка по CHMF 0=41336414 1=41336414 2=41336414 4=41336414 5=41336414 6=41336414

11:41:13 Не нашли - левая сделка по BANE 0=41336439 1=41336439 2=41336439 4=41336439 5=41336439 6=41336439
11:41:13 Не нашли - левая сделка по BANE 0=41336439 1=41336439 2=41336439 4=41336439 5=41336439 6=41336439
11:41:13 Не нашли - левая сделка по BANE 0=41336439 1=41336439 2=41336439 4=41336439 5=41336439 6=41336439

</pre>
=============
Теперь, как видим, там уже не нули, но все поля похожи как однояйцевые близнецы. А знаете, что это за цифири? Это всё те же ID транзакций, только правильные - это я их формировал. Повторяю: это фрагмент лога один неполный день торгов! Не кажется ли вам, что ошибок, мягко говоря, до хрена? И у меня снова фантазии не хватает, как можно написать софт, который способен вытворять ТАКОЕ. И что прикажете делать? Тем более, что функция сверки портфелей тоже глючит. <br />
			<i>29.06.2022 22:19:22, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message63995/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message63995/topic6356/</guid>
			<pubDate>Wed, 29 Jun 2022 22:19:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message63760/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qBi5zYen" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />4. В файле &nbsp; lvm.с &nbsp;после строки: &nbsp;StkId ra; &nbsp;/* instruction's A register */ &nbsp; добавить: &nbsp; &nbsp; <br />int const Период_переключения_State = 1000; &nbsp; <br />if (++L-&gt;Счетчик_для_переключения_State &gt; Период_переключения_State) { &nbsp; &nbsp;<br /> &nbsp; &nbsp; L-&gt;Счетчик_для_переключения_State = 0; &nbsp; &nbsp; <br /> &nbsp; &nbsp; // &nbsp;! Имитация вызова "пустой" C-функции &nbsp;-- &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; ProtectNT((lua_unlock(L), lua_lock(L))); &nbsp; <br /> }<br />=============<br /> &nbsp; &nbsp; Строка: &nbsp;ProtectNT((lua_unlock(L), lua_lock(L))); &nbsp;ошибочна (выяснилось при длительном, недельном тестировании) и ее &nbsp;следует заменить<br /> &nbsp; &nbsp; на строку: &nbsp;savestate(L, ci), lua_unlock(L), lua_lock(L), updatetrap(ci); <br />
			<i>16.06.2022 17:44:33, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message63760/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message63760/topic6356/</guid>
			<pubDate>Thu, 16 Jun 2022 17:44:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message63758/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вчера и сегодня поймал редко встречающуюся ошибку в прерывании OnTrade. Не только редкую, но и давно компенсированную &quot;заочно&quot; кодом моего скрипта. Ошибка такая: в данных от прерывания приходит нулевое значение trans_id. Поскольку прерывания приходят пачками, а ошибка редкая, то одно из них скорее всего будет обработано, второе отловлено как дубль и проигнорировано, а это интерпретировано как &quot;сделка по левой заявке&quot; (у меня такие сделки тоже игнорируются). Но, господа, это же МОЯ айдишка, это НА МЕНЯ возлагается обеспечение её уникальности, так какие могут быть нули? Откуда им взяться? И это на 146% ошибка именно ПО Квика - ни брокеру, ни бирже до моей айдишки нет никакого дела. Непорядок... <br />
			<i>16.06.2022 17:31:20, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message63758/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message63758/topic6356/</guid>
			<pubDate>Thu, 16 Jun 2022 17:31:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отладка QUIK 8.13</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message63707/topic6356/">Отладка QUIK 8.13</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_OZQjleEw" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, Ну, в таком случае &quot;длинный цикл&quot; имеет смысл разве что для написания дурацких тестов, потому как обычный здравый смысл запрещает пользователю написать &quot;содержательный фрагмент кода без использования C-функций и исполняющийся достаточно долго&quot;. Самый длинный цикл в моём скрипте - по тикерам, за которыми он следит, т.е. обычно несколько сотен. И только один раз он составил 20000 или чуть больше - это когда я хотел посмотреть на бумаги Финама. Но даже тогда всё работало и ничего не отвисало. Так что у меня даже фантазии не хватает, кому и зачем может понадобиться такой &quot;длинный цикл&quot;. Разве что nikolz для написания подобных текстов. <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; <br />
			<i>13.06.2022 18:26:02, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message63707/topic6356/</link>
			<guid>http://forum.quik.ru/messages/forum10/message63707/topic6356/</guid>
			<pubDate>Mon, 13 Jun 2022 18:26:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
