<?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>Thu, 23 Apr 2026 11:59:11 +0300</pubDate>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75768/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_y0acv5Fr" href="/user/10684/" bx-tooltip-user-id="10684">VelikiyTrader</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />может не писать индикатор куда-то, а читать индикатор с графика , когда надо. либо записать формулу и вычислять, когда надо.<br />=============<br /> Для этого нужно указывать id линии на графике?<br />=============<br />открываете редактировать и пишите Идентификатор<br />[FILE ID=12066] <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=12066&" width="1520" height="970" /><br /><i>05.06.2024 19:10:17, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75768/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75768/topic8656/</guid>
			<pubDate>Wed, 05 Jun 2024 19:10:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75763/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AOKtPwvX" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />может не писать индикатор куда-то, а читать индикатор с графика , когда надо. либо записать формулу и вычислять, когда надо.<br />=============<br />Для этого нужно указывать id линии на графике? <br />
			<i>04.06.2024 22:47:41, VelikiyTrader.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75763/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75763/topic8656/</guid>
			<pubDate>Tue, 04 Jun 2024 22:47:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75760/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_Mw21wyUo" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, &nbsp;Можно и читать иногда даже удобней, только нужно помнить, что пользоваться нужно небольшим количеством открытых окон для небольшого количества тикеров. Так ка все это дело приводи к замедлению терминала, а при большой нагрузке и к зависаниям. Здесь нужно добавить что организация алгоритма через замыкание позволяет один и тот - же скрипт использовать как в индукторах, так и в потоке main() что избавляет от избыточного кода. &nbsp; <br />
			<i>04.06.2024 15:40:22, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75760/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75760/topic8656/</guid>
			<pubDate>Tue, 04 Jun 2024 15:40:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75759/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_P07wKVUf" href="/user/10684/" bx-tooltip-user-id="10684">VelikiyTrader</a> написал:<br />Добрый день.<br /><br />Хочу написать индикатор, для которого нужно сохранять данные предыдущих значений индикатора в контейнер.<br />Как при инициализации индикатора пройтись по всем предыдущим свечкам &nbsp;и записать значения индикатора для каждой из них в контейнер?<br /> <br />=============<br />может не писать индикатор куда-то, а читать индикатор с графика , когда надо. <br />либо записать формулу и вычислять, когда надо. <br />
			<i>04.06.2024 15:13:20, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75759/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75759/topic8656/</guid>
			<pubDate>Tue, 04 Jun 2024 15:13:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75757/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_IYU3nxaG" href="/user/10684/" bx-tooltip-user-id="10684">VelikiyTrader</a>, &nbsp;Для Вашей задачи удобней писать индикатор через замыкание, где вычисления происходят в анонимной области, а не обходимые таблиц сохраняете между вызовами, почему лучше писать не буду на форуме много обсуждалось, да и разработчики предлагают этот вариант.<br /><br />Вот пример расчета средней, удачи. 
====code====
<pre>calcMean()
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local Price = {} -- Инициализируем для хранения таблицу
&nbsp;&nbsp;&nbsp;&nbsp;local Mean = {}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return function (I, FSettings, ds)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I = I or 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds = ds or nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FSettings = FSettings or {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local v_t = FSettings.v_t or 'C'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local P = FSettings.period or 9
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local max_cache_size = FSettings.max_cache_size or 5 -- Максимальный размер кэша для Mean&#91;I&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local x = FSettings.x or nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local p0 = x or (Value(I, v_t, ds) or 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Price&#91;I&#93; = p0 -- сохраняем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if I == 1 then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Price&#91;I&#93; = p0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mean&#91;I&#93; = p0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Освобождаем память от старых значений Price&#91;I&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if I &#62; P then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Price&#91;I-P&#93; = nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local sum = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local n = math.min(I, P) -- Ограничиваем количество значений для усреднения
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = n, 1, -1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum = sum + Price&#91;I-i+1&#93; -- Берем только последние P значений
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local mean = sum / n or p0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mean&#91;I&#93; = mean
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Освобождаем память от старых значений Mean&#91;I&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if #Mean &#62; max_cache_size then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.remove(Mean, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mean
&nbsp;&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>04.06.2024 14:18:23, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75757/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75757/topic8656/</guid>
			<pubDate>Tue, 04 Jun 2024 14:18:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75753/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Кажется разобрался. OnCalculate проходит с номера 1 до конца? Если так то нужно просто по очереди записать данные в контейнер. Хотя нелепо начинать с 1. <br />
			<i>03.06.2024 23:39:44, VelikiyTrader.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75753/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75753/topic8656/</guid>
			<pubDate>Mon, 03 Jun 2024 23:39:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Сложный индикатор с сохранением его данных для каждой свечи</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75752/topic8656/">Сложный индикатор с сохранением его данных для каждой свечи</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Хочу написать индикатор, для которого нужно сохранять данные предыдущих значений индикатора в контейнер.<br />Как при инициализации индикатора пройтись по всем предыдущим свечкам &nbsp;и записать значения индикатора для каждой из них в контейнер?<br />
====code====
<pre>local cache_XO = {}

function cashed() -- записывает старые показания в кэш

end


-----------------------------------------------------------------------------------------------------
-- ниже функции для терминала

Settings = {
&nbsp;&nbsp;&nbsp;&nbsp;Name = "m_XO",
&nbsp;&nbsp;&nbsp;StepXO = 400, -- ценв шага
&nbsp;&nbsp;&nbsp;NXO = 2, -- количество превыщшений для шага
&nbsp;&nbsp;&nbsp;&nbsp;line = {&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name = "Line",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(15, 54, 247),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 2
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name = "Line",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(247, 63, 7),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 2
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
}

function Init()&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;cashed() -- записывает старые показания в кэш, для того что-бы можно было забирать старые значения
&nbsp;&nbsp;&nbsp;&nbsp;return #Settings.line --число линий
end



function OnCalculate(index)
&nbsp;&nbsp;&nbsp;local StepXO = Settings.StepXO
&nbsp;&nbsp;&nbsp;local NXO = Settings.NXO
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local xoValue = O(index)
&nbsp;&nbsp;&nbsp;local xoValue2 = nil
&nbsp;&nbsp;&nbsp;if index == 0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xoValue = O(index)
&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xoValue = O(index)
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;cache_XO&#91;index&#93; = xoValue
&nbsp;&nbsp;&nbsp;xoValue2 = xoValue + 10
&nbsp;&nbsp;&nbsp;return xoValue, xoValue2
end
</pre>
============= <br />
			<i>03.06.2024 22:33:15, VelikiyTrader.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75752/topic8656/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75752/topic8656/</guid>
			<pubDate>Mon, 03 Jun 2024 22:33:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
