<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: SearchItems]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме SearchItems форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 20 Sep 2026 04:16:05 +0300</pubDate>
		<item>
			<title>SearchItems</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message83096/topic9622/">SearchItems</a></b> <i>Вложенные таблицы</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если правильно понял. Можно попробовать передачу через Замыкание Lua функции. <br />Если объявить функцию обратного вызова fn прямо внутри кода, она автоматически видит и захватывает все локальные переменные, объявленные выше неё.<br />Допустим стратегия календарного арбитража должна найти в системной таблице сделок QUIK (&quot;trades&quot;) все записи, которые принадлежат конкретным кодам инструментов из вложенного массива legs.lua<br /><br />
====code====
<pre>-- Исходная вложенная структура в ОЗУ робота
local my_portfolio = {
&nbsp;&nbsp;&nbsp;&nbsp;securities = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legs = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;1&#93; = { sec_code = "SVU6" }, -- Ближний фьючерс
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;2&#93; = { sec_code = "SVZ6" }&nbsp;&nbsp;-- Дальний фьючерс
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}

function FindArbitrageTrades()
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;-- 1. Вытаскиваем элементы в локальные переменные (создаем замыкание)
&nbsp;&nbsp;&nbsp;&nbsp;local code_leg1 = my_portfolio.securities.legs&#91;1&#93;.sec_code
&nbsp;&nbsp;&nbsp;&nbsp;local code_leg2 = my_portfolio.securities.legs&#91;2&#93;.sec_code

&nbsp;&nbsp;&nbsp;&nbsp;-- 2. Определяем функцию обратного вызова fn
&nbsp;&nbsp;&nbsp;&nbsp;-- QUIK будет передавать в неё каждую сделку из хранилища терминала
&nbsp;&nbsp;&nbsp;&nbsp;local function filter_callback(trade_item)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Функция видит переменные code_leg1 и code_leg2 из внешнего контекста!
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if trade_item.sec_code == code_leg1 or trade_item.sec_code == code_leg2 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true -- Элемент удовлетворяет условию, сохраняем его индекс
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;local total_items = getNumberOf("trades") or 0
&nbsp;&nbsp;&nbsp;&nbsp;if total_items == 0 then return nil end

&nbsp;&nbsp;&nbsp;&nbsp;-- 3. Вызываем SearchItems. Строку params не задаем, элемент передается полностью
&nbsp;&nbsp;&nbsp;&nbsp;local found_indices = SearchItems("trades", 0, total_items - 1, filter_callback)

&nbsp;&nbsp;&nbsp;&nbsp;return found_indices -- Возвращает таблицу с индексами найденных сделок арбитража
end</pre>
============= <br />
			<i>16.08.2026 15:14:59, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message83096/topic9622/</link>
			<guid>http://forum.quik.ru/messages/forum10/message83096/topic9622/</guid>
			<pubDate>Sun, 16 Aug 2026 15:14:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SearchItems</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message83091/topic9622/">SearchItems</a></b> <i>Вложенные таблицы</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как в функцию SearchItems передать в качестве параметров элементы таблиц, вложенных в таблицы, например "legs" из таблицы "securities"? <br />
			<i>15.08.2026 12:27:15, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message83091/topic9622/</link>
			<guid>http://forum.quik.ru/messages/forum10/message83091/topic9622/</guid>
			<pubDate>Sat, 15 Aug 2026 12:27:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
