<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Дублируются пользовательские сообщения из скрипта lua]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Дублируются пользовательские сообщения из скрипта lua форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 08 Apr 2026 04:06:36 +0300</pubDate>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message72119/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_U4daRUdd" href="/user/2047/" bx-tooltip-user-id="2047">Станислав</a> написал:<br />Порядок прихода сделок по возрастанию номера не гарантирован.<br />=============<br />Это да. По этому другой вариант - отбрасывать сделки где last_trade==tnord <br />
			<i>27.09.2023 11:35:50, Kolossi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message72119/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message72119/topic8098/</guid>
			<pubDate>Wed, 27 Sep 2023 11:35:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message72117/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Порядок прихода сделок по возрастанию номера не гарантирован. <br />
			<i>27.09.2023 10:50:54, Станислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message72117/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message72117/topic8098/</guid>
			<pubDate>Wed, 27 Sep 2023 10:50:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message72116/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Естественно last_trade прописана как глобальная переменная <br />
			<i>27.09.2023 10:43:22, Kolossi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message72116/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message72116/topic8098/</guid>
			<pubDate>Wed, 27 Sep 2023 10:43:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message72114/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я просто сделал проверку на то, что каждый получаемый trade_num , был больше предыдущего и дубли исчезли.
====code====
<pre>function OnTrade(trade) -- обработчик события сделки
&nbsp;&nbsp;&nbsp;if trade.client_code~=p_clientcode or trade.sec_code~=trw.p_seccode then return end -- чужая заявка
&nbsp;&nbsp;&nbsp;local tnord=trade.trade_num --номер сделки
&nbsp;&nbsp;&nbsp;local on ord=trade.order_num --номер заявки
&nbsp;&nbsp;&nbsp;local price=trade.price --цена сделки
&nbsp;&nbsp;&nbsp;local dir="" if bit.test(trade.flags,2)==true then dir="S" else dir="B" end -- направление сделки&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;if tnord&#62;last_trade then --в обработку
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last_trade=tnord
...
...
...
&nbsp;&nbsp;end
end

</pre>
=============
 &nbsp; <br />
			<i>27.09.2023 10:34:21, Kolossi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message72114/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message72114/topic8098/</guid>
			<pubDate>Wed, 27 Sep 2023 10:34:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message72034/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_O0yLr3Ui" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><br />=============<br />2) Если сделок миллион. Сколько времени уйдет на поиск &nbsp; t_trades&#91;trade.order_num&#93;?<br />=============<br />Там хеш-таблица. Много времени не уйдет. <br />
			<i>21.09.2023 09:48:26, paluke.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message72034/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message72034/topic8098/</guid>
			<pubDate>Thu, 21 Sep 2023 09:48:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69897/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SuKGrChC" href="/user/62/" bx-tooltip-user-id="62">nikolz,</a><br /><br /><br />=============<br />Может, у вас есть вариант решения проблемы, чтобы сообщения не повторялись? <br />
			<i>09.06.2023 18:32:39, Алексей А..</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69897/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69897/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 18:32:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69896/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_2oNNNVxS" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />1) Зачем дублировать таблицу сделок?<br />=============<br />Честно говоря, не знаю. Код работает, да и ладно. <br />====quote====<br /><a class="blog-p-user-name" id="bp_9dNfqp5S" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />2) Если сделок миллион.<br />=============<br />Миллиона не будет. Возможно, около 50. <br />
			<i>09.06.2023 18:31:19, Алексей А..</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69896/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69896/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 18:31:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69895/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_7ij0E6uO" href="/user/16069/" bx-tooltip-user-id="16069">Алексей А.</a> написал:<br />Благодарю за ответ.<br />Вот здесь нашел решение - &nbsp;<noindex><a href="https://quik2dde.ru/viewtopic.php?id=310" target="_blank" rel="nofollow">https://quik2dde.ru/viewtopic.php?id=310</a></noindex> &nbsp;.<br />Вставил в начало кода: 
====code====
<pre>&nbsp;&nbsp;t_trades&nbsp;&nbsp;=&nbsp;&nbsp;{}
&nbsp;&nbsp;</pre>
=============
 <br />И после function OnTrade(trade) 
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;t_trades&#91;trade.order_num&#93;&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;return 
&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp; t_trades&#91;trade.order_num&#93;&nbsp;&nbsp;=&nbsp;&nbsp; true 
&nbsp;&nbsp;</pre>
=============
 <br />Сейчас сообщения не повторяются.<br />=============<br />Информация к размышлению:<br />------------------------<br />1) Зачем дублировать таблицу сделок? <br />----------------------<br />2) Если сделок миллион. Сколько времени уйдет на поиск &nbsp; t_trades&#91;trade.order_num&#93;? <br />
			<i>09.06.2023 18:21:44, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69895/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69895/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 18:21:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69894/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Благодарю за ответ.<br />Вот здесь нашел решение - <noindex><a href="https://quik2dde.ru/viewtopic.php?id=310" target="_blank" rel="nofollow">https://quik2dde.ru/viewtopic.php?id=310</a></noindex> .<br />Вставил в начало кода:
====code====
<pre>t_trades = {}
</pre>
=============
<br />И после function OnTrade(trade)
====code====
<pre>&nbsp;&nbsp;&nbsp;if t_trades&#91;trade.order_num&#93; then
&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;t_trades&#91;trade.order_num&#93; = true
</pre>
=============
<br />Сейчас сообщения не повторяются. <br />
			<i>09.06.2023 17:54:53, Алексей А..</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69894/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69894/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 17:54:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69893/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Функции обратного вызова вызываются по нескольку раз и это обычное поведение. Вызываются они не только после изменения свойств входящего параметра доступных внутри луа, но и свойств которые остаются &quot;за кадром&quot;. <br />
			<i>09.06.2023 17:32:58, Станислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69893/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69893/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 17:32:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Дублируются пользовательские сообщения из скрипта lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69889/topic8098/">Дублируются пользовательские сообщения из скрипта lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Всем добрый день.<br /><br />Есть такой код:<br />
====code====
<pre>ticker = {"VTBR"}
lot = {"1"}
trans_id = {os.time()+1}
account = "xxxxxx"
class_code = "yyyy"
client_code = "zzzzzzzz"
LastStatus = {nil}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
run = true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

function main()
&nbsp;&nbsp;&nbsp;TransOpenPos() 
&nbsp;&nbsp;&nbsp;while run do sleep(1) 
&nbsp;&nbsp;&nbsp;end
end

function OnStop() 
&nbsp;&nbsp;&nbsp;run = false 
end

function TransOpenPos()
&nbsp;&nbsp;&nbsp;for j = 1, #ticker do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local Transaction={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACCOUNT = account;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLIENT_CODE = client_code;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLASSCODE = class_code;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECCODE = ticker&#91;j&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACTION = 'NEW_ORDER';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPERATION = 'S';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE = 'M';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRICE = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QUANTITY = lot&#91;j&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRANS_ID = tostring(trans_id&#91;j&#93;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local Res = sendTransaction(Transaction)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Res ~= '' then message('TransOpenPos(): Ошибка отправки транзакции: '..Res) else message('TransOpenPos(): Транзакция отправлена') 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end

function OnTrade(trade)
&nbsp;&nbsp;&nbsp;for j = 1, #ticker do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if trade.trans_id == trans_id&#91;j&#93; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(100);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('OnTrade(): По транзакции №'..trade.trans_id..' успешно совершена сделка №'..trade.trade_num..' по цене '..trade.price..' объемом '..trade.qty) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qty_trades = getNumberOf("trades"); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_trade = 0; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 0, qty_trades - 1 do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trade_find = getItem("trades", i); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if trade_find.sec_code == ticker then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_trade = trade_find.trade_num
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Номер сделки в торговой системе - "..trade.trade_num);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(100);&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end
</pre>
=============
<br />Работает нормально, только после выполнения кода почему-то повторяются сообщения, которые находятся внутри functon OnTrade(trade). См. вложенный файл с серией сообщений после выполнения кода.<br />Подскажите, пожалуйста, с чем это связано и как исправить.<br /><br />С уважением. <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=10820&" width="1618" height="641" /><br /><i>09.06.2023 15:11:18, Алексей А..</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69889/topic8098/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69889/topic8098/</guid>
			<pubDate>Fri, 09 Jun 2023 15:11:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
