<?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, 14 May 2026 06:30:07 +0300</pubDate>
		<item>
			<title>Не могу понять, что сломано в коде</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82475/topic9567/">Не могу понять, что сломано в коде</a></b> <i>Взял один старый Измеритель</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			квик рендерит столько линий, сколько вернулось из Init, то есть return #Settings.line, то есть 2. <br />
			<i>14.05.2026 03:35:34, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82475/topic9567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82475/topic9567/</guid>
			<pubDate>Thu, 14 May 2026 03:35:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не могу понять, что сломано в коде</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82473/topic9567/">Не могу понять, что сломано в коде</a></b> <i>Взял один старый Измеритель</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Использовал этот Измеритель, чтобы сравнивать показания индикаторов Квика с оригинальной скользяшкой Б.Вильямса.<br />Возник такой вопрос, я создаю новую скользяшку при помощи возвратной функции r_RMA(), но таким способом я могу создать две скользяшки. А при попытке добавить третью код ломается (Квик не может отрендерить три линии).<br />
====code====
<pre>Settings = {
&nbsp;&nbsp;&nbsp;&nbsp;Name = "*GAT (Bill Williams Alligator)",
&nbsp;&nbsp;&nbsp;&nbsp;Round = "off",
&nbsp;&nbsp;&nbsp;&nbsp;VType = "Median", --Median price
&nbsp;&nbsp;&nbsp;&nbsp;-- parameters
&nbsp;&nbsp;&nbsp;&nbsp;metod = "RMA",
&nbsp;&nbsp;&nbsp;&nbsp;kScaleFakr = 0.0001,
&nbsp;&nbsp;&nbsp;&nbsp;-- script is working up until I add third moving avrg line
&nbsp;&nbsp;&nbsp;&nbsp;schift_A =&nbsp;&nbsp;3, --short shift forward
&nbsp;&nbsp;&nbsp;&nbsp;period_A =&nbsp;&nbsp;5, --short period
&nbsp;&nbsp;&nbsp;&nbsp;schift_B =&nbsp;&nbsp;5, --long shift forward
&nbsp;&nbsp;&nbsp;&nbsp;period_B =&nbsp;&nbsp;8, --long period
&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;line = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name = "GAT_0",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(0,255,0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name = "GAT_1",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(255,159,64)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}

function Init()
&nbsp;&nbsp;&nbsp;&nbsp;func = r_MAIN()
&nbsp;&nbsp;&nbsp;&nbsp;return #Settings.line
end

function OnCalculate(Index)
&nbsp;&nbsp;&nbsp;&nbsp;return func(Index, Settings)
end

function r_MAIN()
&nbsp;&nbsp;&nbsp;&nbsp;local vA_MA=r_RMA()
&nbsp;&nbsp;&nbsp;&nbsp;local vB_MA=r_RMA()
&nbsp;&nbsp;&nbsp;&nbsp;return function(I, Fsettings, ds)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local Fsettings=(Fsettings or {})
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local R&nbsp;&nbsp;= (Fsettings.Round or "off")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local VT = (Fsettings.VType or "Median")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local oA,oB --output values
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oA = nil; oB = nil;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local M&nbsp;&nbsp;= (Fsettings.metod or "RMA")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local k_sc = (Fsettings.kScaleFakr or 0.0001)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local s_A = (Fsettings.schift_A or 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local p_A = (Fsettings.period_A or 5)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local s_B = (Fsettings.schift_B or 5)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local p_B = (Fsettings.period_B or 8)
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local s_C = (Fsettings.schift_C or 8)
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local p_C = (Fsettings.period_C or 13)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vA = vA_MA(I, VT, ds, p_A)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vB = vB_MA(I, VT, ds, p_B)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( vA ~= nil ) then oA=vA end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( vB ~= nil ) then oB=vB end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return oA,oB
&nbsp;&nbsp;&nbsp;&nbsp;end
end

-----------------
function r_RMA()
&nbsp;&nbsp;&nbsp;&nbsp;local RMA={}
&nbsp;&nbsp;&nbsp;&nbsp;return function(I ,VT, ds, Period)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local P = ((Period) or 5)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local value = nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local grace = 15 --grace period to filter out bad initial period
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- we perform logarithm over price often
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- so we must use positive value, this time its 1.0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (I==1) then --protection from candle(1) not-existing
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMA&#91;I&#93;=1.0; return RMA&#91;I&#93;; 
&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;if (CandleExist(I)) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = (H(I)+L(I))*0.5 --median
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (value~=nil) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (I &#60; grace) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- early values are getting averaged
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- so they get faster to real indicator
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMA&#91;I&#93; = 0.5*( value + RMA&#91;I-1&#93; )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;RMA&#91;I&#93; = ( (P-1) * RMA&#91;I-1&#93; + value )/P
&nbsp;&nbsp;&nbsp;&nbsp;&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;else -- candle exist, but value does not
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMA&#91;I&#93;=RMA&#91;I-1&#93;
&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;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else -- candle does not exist
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMA&#91;I&#93;=RMA&#91;I-1&#93;
&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 RMA&#91;I&#93;
&nbsp;&nbsp;&nbsp;&nbsp;end
end



</pre>
============= <br />
			<i>13.05.2026 19:57:51, Yury_VYW.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82473/topic9567/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82473/topic9567/</guid>
			<pubDate>Wed, 13 May 2026 19:57:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
