<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Объединение тиков]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Объединение тиков форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 27 Apr 2026 10:12:57 +0300</pubDate>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65044/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			если надо объединение тиков, то самое простое это смотреть стакан. &nbsp; <br />
			<i>18.08.2022 19:31:22, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65044/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65044/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 19:31:22 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65040/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ROBzr3K0" href="/user/15738/" bx-tooltip-user-id="15738">Максим</a> написал:<br /><br /><br />=============<br />Есть подобный скрипт на lua, на Смартлабе как-то кто-то выкладывал.<br />Если не ошибаюсь там ещё что-то было похожее.<br />Я раньше тоже &nbsp;использовал этот скрипт немного переделав, <br />получалась вот такая штука.<br /><br />Вот только не в курсе работает он сейчас или нет, после всех этих новых версий квика и lua 5.4<br />Очень многие срипты просто перестали нормально функционировать.<br /><br /><table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>
====code====
<pre>-- Вывод таблицы крупных "склеенных" обезличенных сделок по набору инструментов.
-- Для каждого инструмента, идентифицируемого кодом класса и кодом инструмента,
-- задаётся положительная граница размера крупной обезличенной сделки в лотах/контрактах.
local bounds = {
&nbsp;&nbsp;&nbsp;&nbsp;--&#91;&#91;&#91;"TQBR:SBER"&#93; = 500,
&nbsp;&nbsp;&nbsp;&nbsp;&#91;"TQBR:GAZP"&#93; = 200,
&nbsp;&nbsp;&nbsp;&nbsp;&#91;"SPBFUT:SiM0"&#93; = 100,&#93;&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&#91;"SPBFUT:SiH2"&#93; = 3,
}

local isInterrupted = false -- флаг прерывания для завершения работы скрипта
local tableId -- информационная таблица

local SELL_FLAG = 1
local BUY_FLAG = 2

local prevTrade -- информация о предыдущей обезличенной сделке
local currTrade -- информация о текущей обезличенной сделке
local mergedTrade = {} -- информация о "склееной" сделке
local largeTradesCount = 0 -- количество крупных "склеенных" сделок
local largeTrades = {} -- массив крупных "склеенных" сделок
local printCount = 1 -- номер крупной "склеенной" сделки, которую нужно вывести в таблицу

function OnStop()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DestroyTable(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableId = nil
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;isInterrupted = true
end

function OnAllTrade(allTrade)
&nbsp;&nbsp;&nbsp;&nbsp;prevTrade = currTrade
&nbsp;&nbsp;&nbsp;&nbsp;currTrade = allTrade

&nbsp;&nbsp;&nbsp;&nbsp;local key = allTrade.class_code .. ":" .. allTrade.sec_code
&nbsp;&nbsp;&nbsp;&nbsp;local bound = bounds&#91;key&#93;
&nbsp;&nbsp;&nbsp;&nbsp;if type(bound) ~= "number" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;local buySell = 0
&nbsp;&nbsp;&nbsp;&nbsp;if bit.band(currTrade.flags, BUY_FLAG) == BUY_FLAG then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buySell = 1
&nbsp;&nbsp;&nbsp;&nbsp;elseif bit.band(currTrade.flags, SELL_FLAG) == SELL_FLAG then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buySell = -1
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;-- Эвристика buySell
&nbsp;&nbsp;&nbsp;&nbsp;if prevTrade then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if currTrade.class_code == prevTrade.class_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and currTrade.sec_code == prevTrade.sec_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and currTrade.trade_num == prevTrade.trade_num + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and (buySell &#62; 0 and prevTrade.buySell &#62; 0 and currTrade.price &#62;= prevTrade.price or buySell &#60; 0 and prevTrade.buySell &#60; 0 and currTrade.price &#60;= prevTrade.price)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and currTrade.datetime.ms == prevTrade.datetime.ms
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and os.time(currTrade.datetime) == os.time(prevTrade.datetime)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buySell = buySell * 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;currTrade.buySell = buySell

&nbsp;&nbsp;&nbsp;&nbsp;if buySell == 1 or buySell == -1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.datetime = currTrade.datetime
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.tradeNum = currTrade.trade_num
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.price1 = currTrade.price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.price2 = currTrade.price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.prevVolume = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.currVolume = currTrade.qty * buySell
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.count = 1
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.price2 = currTrade.price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.prevVolume = mergedTrade.currVolume
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.currVolume = mergedTrade.currVolume + currTrade.qty * buySell / 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergedTrade.count = mergedTrade.count + 1
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(mergedTrade.currVolume) &#62;= bound then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(mergedTrade.prevVolume) &#60; bound then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Новая крупная "склеенная" обезличенная сделка
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;largeTrades&#91;largeTradesCount + 1&#93; = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time = os.date("%Y-%m-%d %X", os.time(mergedTrade.datetime)) .. string.format(".%03d", mergedTrade.datetime.ms),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classCode = currTrade.class_code,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secCode = currTrade.sec_code,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tradeNum = mergedTrade.tradeNum,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price1 = mergedTrade.price1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price2 = mergedTrade.price2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volume = mergedTrade.currVolume,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = mergedTrade.count,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;largeTradesCount = largeTradesCount + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&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 largeTrade = largeTrades&#91;largeTradesCount&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;largeTrade.price2 = mergedTrade.price2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;largeTrade.volume = mergedTrade.currVolume
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;largeTrade.count = mergedTrade.count
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end

local function rgb(color)
&nbsp;&nbsp;&nbsp;&nbsp;local r, g, b = string.match(color, "#(%x%x)(%x%x)(%x%x)")
&nbsp;&nbsp;&nbsp;&nbsp;return RGB(tonumber(r, 16), tonumber(g, 16), tonumber(b, 16))
end

local function displayInfoTable()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId and IsWindowClosed(tableId) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInterrupted = true
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local count = largeTradesCount
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for rowId = printCount, count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while GetTableSize(tableId) &#60; rowId do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(tableId, -1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local largeTrade = largeTrades&#91;rowId&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 1, largeTrade.time)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 2, largeTrade.secCode)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 3, tostring(largeTrade.price1), largeTrade.price1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 4, tostring(largeTrade.price2), largeTrade.price2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 5, tostring(largeTrade.volume), largeTrade.volume)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 6, tostring(largeTrade.count), largeTrade.count)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 7, tostring(largeTrade.price2 - largeTrade.price1), largeTrade.price2 - largeTrade.price1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--SetCell(tableId, rowId, 3, largeTrade.classCode)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--SetCell(tableId, rowId, 4, tostring(largeTrade.tradeNum), largeTrade.tradeNum)
&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&#91;&#91;local largeTrade = largeTrades&#91;rowId&#93;&nbsp;&nbsp; --Изначальный вариант
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 1, largeTrade.time)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 2, largeTrade.classCode)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 3, largeTrade.secCode)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 4, tostring(largeTrade.tradeNum), largeTrade.tradeNum)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 5, tostring(largeTrade.price1), largeTrade.price1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 6, tostring(largeTrade.price2), largeTrade.price2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 7, tostring(largeTrade.volume), largeTrade.volume)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 8, tostring(largeTrade.count), largeTrade.count)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, rowId, 9, tostring(largeTrade.price2 - largeTrade.price1), largeTrade.price2 - largeTrade.price1)&#93;&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if largeTrade.volume &#62; 0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(tableId, rowId, QTABLE_NO_INDEX, rgb("#0b091c"), rgb("#006f00"), rgb("#0b091c"), rgb("#006f00")) --#9b0000&nbsp;&nbsp; FFE8E8&nbsp;&nbsp;006f00
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif largeTrade.volume &#60; 0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(tableId, rowId, QTABLE_NO_INDEX, rgb("#0b091c"), rgb("#9b0000"), rgb("#0b091c"), rgb("#9b0000"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if printCount &#60; count then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printCount = count
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end

function main()
&nbsp;&nbsp;&nbsp;&nbsp;tableId = AllocTable()
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 1, "Дата/Время", true, QTABLE_STRING_TYPE, 25)
&nbsp;&nbsp;&nbsp;&nbsp;--AddColumn(tableId, 2, "Класс", true, QTABLE_CACHED_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 2, "Тикер", true, QTABLE_CACHED_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;&nbsp;--AddColumn(tableId, 4, "Номер сделки", true, QTABLE_INT_TYPE, 20)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 3, "Нач.Цена", true, QTABLE_DOUBLE_TYPE, 12)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 4, "Кон.Цена", true, QTABLE_DOUBLE_TYPE, 12)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 5, "Кол-во", true, QTABLE_INT_TYPE, 6)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 6, "Частей", true, QTABLE_INT_TYPE, 6)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 7, "Проскальзывание", true, QTABLE_DOUBLE_TYPE, 20)
&nbsp;&nbsp;&nbsp;&nbsp;CreateWindow(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;SetWindowCaption(tableId, "Time and Sales")
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;--&#91;&#91;AddColumn(tableId, 1, "Дата/Время", true, QTABLE_STRING_TYPE, 25)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 2, "Класс", true, QTABLE_CACHED_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 3, "Инструмент", true, QTABLE_CACHED_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 4, "Номер сделки", true, QTABLE_INT_TYPE, 20)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 5, "Нач.Цена", true, QTABLE_DOUBLE_TYPE, 12)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 6, "Кон.Цена", true, QTABLE_DOUBLE_TYPE, 12)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 7, "Кол-во", true, QTABLE_INT_TYPE, 6)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 8, "Частей", true, QTABLE_INT_TYPE, 6)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 9, "Проскальзывание", true, QTABLE_DOUBLE_TYPE, 20)
&nbsp;&nbsp;&nbsp;&nbsp;CreateWindow(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;SetWindowCaption(tableId, "Крупные склеенные обезличенные сделки")&#93;&#93;
&nbsp;&nbsp;&nbsp;&nbsp;while not isInterrupted do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayInfoTable()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(200)
&nbsp;&nbsp;&nbsp;&nbsp;end
end </pre>
=============
<table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td></td></tr></tbody></table></td></tr></tbody></table><br /><img src="https://smart-lab.ru/uploads/2022/images/05/99/80/2022/01/24/579e28.webp" alt="Пользователь добавил изображение" border="0" /> <br />
			<i>18.08.2022 18:20:29, RayIntraday.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65040/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65040/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 18:20:29 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65039/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			пардон, опечатка<br />тик - это и есть сделка между двумя участниками биржи, цены заявок которых совпали либо лучшие из существующих. <br />
			<i>18.08.2022 16:54:02, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65039/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65039/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 16:54:02 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65038/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			тик - это и есть заявка между двумя участниками биржи, цены заявок которых совпали либо лучшие из существующих. <br />
			<i>18.08.2022 16:53:25, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65038/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65038/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 16:53:25 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65037/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LfxUF1aX" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />Делится не сделка, а заявка на сделки.<br /><br />понять, что сделки были рождены одной заявкой можно по времени. Оно должно совпадать с точностью микросекунд и параметр Соunt должен инкриментироваться на единицу<br />=============<br /><br />вообще-то не заявка делится, а это сделки, которые совершены по встречным заявкам, которые совпали по цене с этой заявкой, но количеством меньшим чем в заявке. <br />Объединить Вы их можете, но не в этой таблце так как это таблица сделок - т е одна строка - одна сделка &nbsp; <br />
			<i>18.08.2022 16:52:02, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65037/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65037/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 16:52:02 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65034/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Вот показать пальцем на готовое не смогу. Возможно, кто подскажет.<br /><br /><br />Но сделать на lua аналог таблицы обезличенных сделок с &nbsp;группировкой - почему нет? Можно.. <br />
			<i>18.08.2022 14:11:27, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65034/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65034/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 14:11:27 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65033/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_jJa4034I" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />Средствами самого терминала - нет. &nbsp;<br />=============<br />А есть какие-нибудь дополнительные плагины, которые могут это сделать? Если есть, то подскажите, пожалуйста, название. <br />
			<i>18.08.2022 13:19:03, Максим.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65033/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65033/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 13:19:03 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65032/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Средствами самого терминала - нет. &nbsp; <br />
			<i>18.08.2022 13:13:46, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65032/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65032/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 13:13:46 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65031/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_bNOQGp6f" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />Делится не сделка, а заявка на сделки.<br /><br />понять, что сделки были рождены одной заявкой можно по времени. Оно должно совпадать с точностью микросекунд и параметр Соunt должен инкриментироваться на единицу<br />=============<br />А можно ли объединить эти строки в одну? <br />
			<i>18.08.2022 13:02:19, Максим.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65031/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65031/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 13:02:19 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65030/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Делится не сделка, а заявка на сделки.<br /><br />понять, что сделки были рождены одной заявкой можно по времени. Оно должно совпадать с точностью микросекунд и параметр Соunt должен инкриментироваться на единицу <br />
			<i>18.08.2022 12:47:58, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65030/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65030/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 12:47:58 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Объединение тиков</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message65028/topic7575/">Объединение тиков</a></b> <i>Как объединить тики</i> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Подскажите, пожалуйста, открываю таблицу обезличенных сделок, а там одна сделка за одну секунду делится на 5-30 строк. Можно ли объединить данные строки (тики) в одну строку <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=9612&" width="389" height="619" /><br /><i>18.08.2022 12:19:55, Максим.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message65028/topic7575/</link>
			<guid>http://forum.quik.ru/messages/forum1/message65028/topic7575/</guid>
			<pubDate>Thu, 18 Aug 2022 12:19:55 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
	</channel>
</rss>
