<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: индикатор на Lua]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме индикатор на Lua форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 21 Apr 2026 07:36:33 +0300</pubDate>
		<item>
			<title>индикатор на Lua </title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum17/message79584/topic9260/">индикатор на Lua </a></b> в форуме <a href="http://forum.quik.ru/forum17/">Обмен опытом</a>. <br />
			Индикатор определяет максимум и минимум на заданном периоде и отображает среднее значение.<br />Алгоритм оптимизировал для ускорения вычислений.<br />Выкладываю для всех желающих: <br />
====code====
<pre>Settings = {Name = "*Kijun-sen",kijun_period = 6,}

function OnCalculate(i)
&nbsp;&nbsp; Hi=H(i) or H1; Li=L(i) or L1; x1=x;
&nbsp;&nbsp; if i1&#62;i then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp; end
&nbsp;&nbsp; if Hi and Li then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.kijun_period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if j&#62;jma or j&#62;jmi then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hi,Li=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi and Hi&#62;ma then ma = Hi jma=j; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Li and Li&#60;mi then&nbsp;&nbsp;mi =Li jmi=j;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Hi&#62;ma then ma=Hi; jma=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mi&#62;Li then mi=Li; jmi=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=(ma + mi)/2;&nbsp;&nbsp;&nbsp;&nbsp;H1,L1,i1=Hi,Li,i;
&nbsp;&nbsp; end
return x1
end

function OnChangeSettings()
&nbsp;&nbsp; i1=0;jma=0; jmi=0; H1=0; L1=0;ma=0;mi=0;
end

function Init()
OnChangeSettings()
Settings.line = {{ Name=Settings.Name, Color=RGB(32,255,128), Type=TYPE_LINE, Width = 2,}}
return #Settings.line&nbsp;&nbsp;end</pre>
=============
это мой вариант модификации этого алгоритма . &nbsp;<br />
====code====
<pre>Settings = {Name = "*ind_nk",period = 6,}

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;Hi=H(i) or H1; Li=L(i) or L1;
&nbsp;&nbsp;&nbsp;Oi=O(i) or O1; Ci=C(i) or C1;
&nbsp;&nbsp;&nbsp;if i1&#62;i then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;if Hi and Li and i1~=i then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if j&#62;jma or j&#62;jmi then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hi,Li=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi and Hi&#62;ma then ma = Hi jma=j; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Li and Li&#60;mi then&nbsp;&nbsp;mi =Li jmi=j;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi&#62;ma then ma=Hi; jma=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mi&#62;Li then mi=Li; jmi=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if x then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local z=2*Li-Hi; if Li&#62;x and Ci&#62;Oi then mi=z; jmi=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z=2*Hi-Li; if x&#62;Hi and Oi&#62;Ci then ma=z; jma=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ma and mi then x=(ma + mi)/2; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H1,L1,O1,C1,i1=Hi,Li,Oi,Ci,i;
&nbsp;&nbsp;&nbsp;end
return x
end

function OnChangeSettings()
&nbsp;&nbsp;&nbsp;i1=0;jma=0; jmi=0; H1=0; L1=0;ma=0;mi=0;
end

function Init()
OnChangeSettings()
Settings.line = {{ Name=Settings.Name, Color=RGB(255,255,255), Type=TYPE_LINE, Width = 2,}}
return #Settings.line&nbsp;&nbsp;end
</pre>
=============
Если нравится, можете сказать &quot;спасибо&quot;. <br />
			<i>23.09.2025 18:58:02, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum17/message79584/topic9260/</link>
			<guid>http://forum.quik.ru/messages/forum17/message79584/topic9260/</guid>
			<pubDate>Tue, 23 Sep 2025 18:58:02 +0300</pubDate>
			<category>Обмен опытом</category>
		</item>
	</channel>
</rss>
