<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: for для значений свечей]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме for для значений свечей форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 26 Apr 2026 18:01:12 +0300</pubDate>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46684/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Z6Qk17z3" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br /><br /> &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; <table class="data-table"><tr><td> &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;<noindex><a href="https://arqatech.com/upload/iblock/398/INDICATORS.zip" target="_blank" rel="nofollow">Примеры функций расчета индикаторов терминала QUIK на языке Luazip, &nbsp;76 КБ</a></noindex> </td></tr></table><br />=============<br />Спасибо все получилось. Эти примеры на много понятнее, чем примеры уже готовых индикаторов. Но в целом пока очень не привычный язык. <br />
			<i>02.07.2020 12:21:31, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46684/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46684/topic5610/</guid>
			<pubDate>Thu, 02 Jul 2020 12:21:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46673/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ucT4JfE7" href="/user/14103/" bx-tooltip-user-id="14103">jonny1960</a> написал:<br />Подскажите, как правильно получить значения цены закрытия для N последних свечей и умножить на их порядковый номер по счету (P1 * 5) + (P2 * 4) + (P3 * 3)<br /> <br />И не совсем понимаю, что делает функция Squeeze и зачем она нужна?<br /><br />	if CandleExist(I,ds) then<br /><br />		if it.l &gt;= P then<br />			local MD = 0<br />			for i = it.l-P+1, it.l do<br /> &nbsp; &nbsp; MD = MD + (GetValueEX(it&#91;Squeeze(i,P)&#93;, VT, ds)) &nbsp;* i<br />			end<br />			return MD<br />		end<br />	end<br /><br /> &nbsp;<br />=============<br /><noindex><a href="http://www.kamynin.ru/" target="_blank" rel="nofollow">http://www.kamynin.ru/</a></noindex><br />пример индикатора для произвольных параметров.<br />по его подобию можете сделать любой свой. <br />
			<i>01.07.2020 12:30:19, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46673/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46673/topic5610/</guid>
			<pubDate>Wed, 01 Jul 2020 12:30:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46666/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Выводить значения надо для каждого бара. Также, обычно, не выводят значения, пока число баров не стало больше чем период расчета (т.к. выборка недостаточна).<br /><br />Вы можете просто инициализировать переменную в замыкании, отвечающую за результат расчета, и выводить ее всегда. Иначе у Вас могут образовываться дырки в расчете (это и приведет к такой прямой линии), когда бара нет и CandleExist(I,ds) вернет ложь.<br /><br />В тех ссылках, что я скидывал подробно описана как строить индикатор. Вы сейчас зацепились за какой-то отрывок кода, не понимаю зачем он. Лучше, все же, взять руководство, его же не зря написали. <br />
			<i>01.07.2020 09:26:56, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46666/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46666/topic5610/</guid>
			<pubDate>Wed, 01 Jul 2020 09:26:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46665/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо за вашу помощь. В итоге я смог придти к тому, что на графике появляется просто прямая горизонтальная линия. Видимо происходит расчет одного первого значения и все.<br />Не понятно, какую функцию выполняет таблица it и и как посчитать индикатор для каждой свечи. <br />
====code====
<pre>function F()
&nbsp;&nbsp;&nbsp;local it = {p=0, l=0}
return function (I, P, VT, ds)
&nbsp;&nbsp;&nbsp;if I == 1 then it = {p=0, l=0} end
&nbsp;&nbsp;&nbsp;if CandleExist(I,ds) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if I~=it.p then it={p=I, l=it.l+1} end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;&nbsp;sum, sump = 0, 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = P-1, 0, -1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;&nbsp;= sum + (C(i) or 0)*i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sump = sump + i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return sum/sump
&nbsp;&nbsp;&nbsp;end
return nil
end
end</pre>
============= <br />
			<i>01.07.2020 09:01:15, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46665/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46665/topic5610/</guid>
			<pubDate>Wed, 01 Jul 2020 09:01:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46652/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Это простой алгоритм взвешенной скользящей.<br /><br />Будет почти также, если использовать итератор уменьшения управляющей переменной и считать от текущего индекса = index.<br /><br />
====code====
<pre>local&nbsp;&nbsp;sum, p = 0, 0
for i = period-1, 0, -1 do
&nbsp;&nbsp; sum = sum + (C(index - i) or 0)*i
&nbsp;&nbsp; p = p + 1
end
local avg = sum/p
</pre>
=============
<br />В вашем коде нет умножения на весовой коэффициент. Если только Вы не хотите простую скользящую, а не взвешенную.<br /><br />Советую не гадать, а взять руководство по языку для Квика, чтобы понять какие методы в языке были добавлены для терминала.<br /><br /><noindex><a href="https://arqatech.com/ru/support/files/" target="_blank" rel="nofollow">https://arqatech.com/ru/support/files/</a></noindex><br /> &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;<table class="data-table"><tr><td><noindex><a href="https://arqatech.com/upload/iblock/194/quik_lua.zip" target="_blank" rel="nofollow">Документация по языку LUA в QUIK и примерыzip, &nbsp;18.5 МБ</a></noindex> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</td><td> &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; </td><td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</td></tr><tr><td> &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; <noindex><a href="https://arqatech.com/upload/iblock/398/INDICATORS.zip" target="_blank" rel="nofollow">Примеры функций расчета индикаторов терминала QUIK на языке Luazip, &nbsp;76 КБ</a></noindex></td></tr></table><noindex><a href="http://luaq.ru/" target="_blank" rel="nofollow">http://luaq.ru/</a></noindex><br />А по самому LUA есть столько материалов, можно брать любой. <br />
			<i>30.06.2020 18:46:17, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46652/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46652/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 18:46:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46650/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			алгоритм несложной скользящей средней
====code====
<pre>(P1 * 3) + (P2 * 2) + (P3 * 1) / (3 + 2 + 1)</pre>
=============
где Pn цена закрытия предыдущей n-свечи<br /><br />вот реализация на PHP, на Lua я честно говоря даже не понимаю как получить цену закрытия предыдущих свечей с помощью чикла <br />	
====code====
<pre>for ($i = $period; $i &#62;= 1; $i--){
&nbsp;&nbsp; $sumP += $candles&#91;$i&#93;-&#62;close;
&nbsp;&nbsp; $sumI += $i;
}
$x = $sumP/$sumI;
</pre>
============= <br />
			<i>30.06.2020 17:50:09, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46650/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46650/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 17:50:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46648/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В данном случае, что-то с логикой. Функция math.fmod - это остаток от деления двух чисел. Раз деление идет на P+1,то результат лежит в диапазоне от 0 до P.<br />Это значение передается как индекс таблицы it. Что далее не ясно, всего когда нет.<br /><br /><br />Явно что-то с логикой. Вы бы себе алгоритм на любом языке написали, хоть на блок схеме, чтобы понять где проблема. <br />
			<i>30.06.2020 15:23:42, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46648/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46648/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 15:23:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46647/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Да выдает именно ошибку с nil. Из языков я знаю только php, а Lua на него совсем не похож. PineScript я понял сразу, а с Lua пока сложно.<br /><br />Функцию GetValueEX тоже взял из примера скользящей средней. Вроде бы добавил заполнение таблица it, но это не помогло.<br />
====code====
<pre> if I~=it.p then it={p=I, l=it.l+1} end</pre>
============= <br />
			<i>30.06.2020 12:45:08, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46647/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46647/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 12:45:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46645/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Код явно не весь. Где функция GetValueEX?<br />Таблица it является upvalue замыкания. А где же она заполняется, кроме первеого индекса? В этом, скорее всего, и есть ошибка, т.к. выполняются арифметические действия с nil. <br /><br />Lua, на самом деле, простой язык. Если знаком любой другой язык, то он изучается очень быстро. <br />
			<i>30.06.2020 12:05:56, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46645/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46645/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 12:05:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46642/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Большое спасибо. К сожалению, только сегодня впервые увидел LUA и пока не совсем понятна структура. Не могли бы вы посмотреть весь код так он выдает ошибку.<br />
====code====
<pre>function F()
&nbsp;&nbsp;&nbsp;local it = {p=0, l=0}
return function (I, P, VT, ds)
&nbsp;&nbsp;&nbsp;if I == 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it = {p=0, l=0}
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;if CandleExist(I,ds) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local MD = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = it.l-P+1, it.l do
&nbsp;&nbsp;&nbsp;&nbsp;MD = MD + (GetValueEX(it&#91;Squeeze(i,P)&#93;, VT, ds))&nbsp;&nbsp;* (i - it.l+P)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return MD
&nbsp;&nbsp;&nbsp;end
return nil
end
end</pre>
=============
<br />а Squeeze я взял из примеров<br /><br />function Squeeze(I,P)<br />	return math.fmod(I-1,P+1)<br />end <br />
			<i>30.06.2020 11:45:06, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46642/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46642/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 11:45:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46637/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Определения функции Squeeze не представлено, поэтому сказать, что она делает невозможно.<br />Чтобы получить порядковый номер надо либо организовать итерацию с таким численным праметром от 1 до P или привести саму переменную i к такому виду.<br /><br />Так:<br />for i = 1, P do<br /> &nbsp; &nbsp;MD = MD + (GetValueEX(it&#91;Squeeze(it.l-P+i,P)&#93;, VT, ds)) &nbsp;* i<br />end<br /><br />Или так:<br />for i = it.l-P+1, it.l do<br /> &nbsp; &nbsp;MD = MD + (GetValueEX(it&#91;Squeeze(i,P)&#93;, VT, ds)) &nbsp;* (i - it.l+P)<br />end <br />
			<i>30.06.2020 09:24:54, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46637/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46637/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 09:24:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>for для значений свечей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46635/topic5610/">for для значений свечей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Подскажите, как правильно получить значения цены закрытия для N последних свечей и умножить на их порядковый номер по счету (P1 * 5) + (P2 * 4) + (P3 * 3)<br /> <br />И не совсем понимаю, что делает функция Squeeze и зачем она нужна?<br /><br />	if CandleExist(I,ds) then<br /><br />		if it.l &gt;= P then<br />			local MD = 0<br />			for i = it.l-P+1, it.l do<br /> &nbsp; &nbsp; MD = MD + (GetValueEX(it&#91;Squeeze(i,P)&#93;, VT, ds)) &nbsp;* i<br />			end<br />			return MD<br />		end<br />	end<br /><br /> &nbsp; <br />
			<i>30.06.2020 07:35:40, jonny1960.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46635/topic5610/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46635/topic5610/</guid>
			<pubDate>Tue, 30 Jun 2020 07:35:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
