<?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>Fri, 10 Apr 2026 09:13:23 +0300</pubDate>
		<item>
			<title>Отсутствие значений индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message46266/topic5528/">Отсутствие значений индикатора</a></b> <i>Price Channel</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Проверили, проблему не наблюдаем. Какая у Вас версия рабочего места? И можете выложить скриншоты проблемы, чтобы можно было видно, где и в каком момент нули. Спасибо. <br />
			<i>15.06.2020 17:59:26, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message46266/topic5528/</link>
			<guid>http://forum.quik.ru/messages/forum10/message46266/topic5528/</guid>
			<pubDate>Mon, 15 Jun 2020 17:59:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Отсутствие значений индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45958/topic5528/">Отсутствие значений индикатора</a></b> <i>Price Channel</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Проблема в получении значений линий индикатора на втором баре торговой сессии - все значения нулевые. Например, если график 15-минутный, то до 10.15 значения индикатора верные, потом с 10.15 до 10.30 нулевые, а потом снова все Ок и до конца сессии. В чем проблема может быть?<br />Причем если сделать двойной клик на область диаграммы, где этот индикатор, то есть откроется меню &quot;Редактирование настроек графика&quot;, а потом ничего не меняя нажать Ок, то значения линий индикатора в скрипте сразу появятся - чудеса... &nbsp;<br /><br />код был представлен в теме <noindex><a href="https://forum.quik.ru/messages/forum10/message45919/topic1542/?result=reply#message45919" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message45919/topic1542/?result=reply#message45919</a></noindex> и был дан <noindex><a href="https://forum.quik.ru/user/17/" target="_blank" rel="nofollow">Sergey Gorokhov</a></noindex><br /><br /> &nbsp;Settings &nbsp;= &nbsp;{Name &nbsp;= &nbsp; &quot;*PC (Price Channel)&quot; , <br />Period &nbsp;= &nbsp; 10 ,<br />line &nbsp;= &nbsp;{<br /> &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp;Name &nbsp;= &nbsp; &quot;PC - upper&quot; , <br /> &nbsp; &nbsp; &nbsp;Type &nbsp;= &nbsp;TYPE_LINE, <br /> &nbsp; &nbsp; &nbsp;Color &nbsp;= &nbsp; RGB ( 0 , &nbsp;206 , &nbsp;0 )<br /> &nbsp; &nbsp; &nbsp;},<br /> &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp;Name &nbsp;= &nbsp; &quot;PC&quot; , <br /> &nbsp; &nbsp; &nbsp;Type &nbsp;= &nbsp;TYPE_LINE, <br /> &nbsp; &nbsp; &nbsp;Color &nbsp;= &nbsp; RGB ( 221 , &nbsp;44 , &nbsp;44 )<br /> &nbsp; &nbsp; &nbsp;},<br /> &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp;Name &nbsp;= &nbsp; &quot;PC - lower&quot; , <br /> &nbsp; &nbsp; &nbsp;Type &nbsp;= &nbsp;TYPE_LINE, <br /> &nbsp; &nbsp; &nbsp;Color &nbsp;= &nbsp; RGB ( 0 , &nbsp;162 , &nbsp;232 )<br /> &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp; --&#91;&#91;, <br /> &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp;Name &nbsp;= &nbsp; &quot;Horizontal line&quot; ,<br /> &nbsp; &nbsp; &nbsp;Type &nbsp;= &nbsp;TYPE_LINE, <br /> &nbsp; &nbsp; &nbsp;Color &nbsp;= &nbsp; RGB ( 140 , &nbsp;140 , &nbsp;140 )<br /> &nbsp; &nbsp; &nbsp;}&#93;&#93;<br /> &nbsp; &nbsp; &nbsp;},<br />Round &nbsp;= &nbsp; &quot;off&quot; ,<br />Multiply &nbsp;= &nbsp; 1 ,<br />Horizontal_line = &nbsp;&quot;off&quot; <br />}<br /><br /> function &nbsp; Init ()<br /> &nbsp; func &nbsp;= &nbsp;PC()<br /> &nbsp; &nbsp;return &nbsp; # Settings.line<br /> end <br /><br /> function &nbsp; OnCalculate (Index) <br /> &nbsp; &nbsp;--return tonumber(Settings.Horizontal_line), ConvertValue(Settings, func(Index, Settings)) <br /> &nbsp; &nbsp;return &nbsp;ConvertValue(Settings, func(Index, Settings)) <br /> end <br /><br /> function &nbsp; PC () &nbsp;--Price Channel (&quot;PC&quot;) <br /> &nbsp; &nbsp;local &nbsp;H_tmp = {}<br /> &nbsp; &nbsp;local &nbsp;L_tmp = {}<br /> &nbsp; &nbsp;local &nbsp;it &nbsp;= &nbsp;{p = &nbsp;0 , l = &nbsp;0 }<br /> return &nbsp; function &nbsp;(I, Fsettings, ds)<br /> local &nbsp;Fsettings = (Fsettings &nbsp;or &nbsp;{})<br /> local &nbsp;P &nbsp;= &nbsp;(Fsettings.Period &nbsp;or &nbsp; 10 )<br /> if &nbsp;(P &gt; &nbsp;0 ) &nbsp;then <br /> &nbsp; &nbsp;if &nbsp;I &nbsp;= &nbsp;= &nbsp; 1 &nbsp; then <br /> &nbsp; &nbsp; &nbsp;H_tmp = {}<br /> &nbsp; &nbsp; &nbsp;L_tmp = {}<br /> &nbsp; &nbsp; &nbsp;it &nbsp;= &nbsp;{p = &nbsp;0 , l = &nbsp;0 }<br /> &nbsp; &nbsp;end <br /> &nbsp; &nbsp;if &nbsp;CandleExist(I,ds) &nbsp;then <br /> &nbsp; &nbsp; &nbsp; if &nbsp;I~ = it.p &nbsp;then &nbsp;it = {p = I, l = it.l + &nbsp;1 } &nbsp;end <br /> &nbsp; &nbsp; &nbsp;H_tmp&#91;Squeeze(it.l,P - &nbsp;1 ) + &nbsp;1 &#93; &nbsp;= &nbsp; GetValue EX(it.p,HIGH,ds)<br /> &nbsp; &nbsp; &nbsp;L_tmp&#91;Squeeze(it.l,P - &nbsp;1 ) + &nbsp;1 &#93; &nbsp;= &nbsp; GetValue EX(it.p,LOW,ds)<br /> &nbsp; &nbsp; &nbsp; if &nbsp;it.l &nbsp;&gt; &nbsp;= &nbsp;P &nbsp;then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;local &nbsp;val_h &nbsp;= &nbsp; math.max (unpack(H_tmp))<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;local &nbsp;val_l &nbsp;= &nbsp; math.min (unpack(L_tmp))<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return &nbsp;val_h,(val_h + val_l)/ 2 ,val_l<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--return (val_h+val_l)/2,val_h,val_l <br /> &nbsp; &nbsp; &nbsp; end <br /> &nbsp; &nbsp;end <br /> end <br /> return &nbsp; nil , nil , nil <br /> end <br /> end <br /><br /><br />SMA,MMA,EMA,WMA,SMMA,VMA &nbsp;= &nbsp; &quot;SMA&quot; ,&quot;MMA&quot;,&quot;EMA&quot;,&quot;WMA&quot;,&quot;SMMA&quot;,&quot;VMA&quot;<br />OPEN,HIGH,LOW,CLOSE,VOLUME,MEDIAN,TYPICAL,WEIGHTED,DIFFERENCE,ANY &nbsp;= &nbsp; &quot;O&quot; ,&quot;H&quot;,&quot;L&quot;,&quot;C&quot;,&quot;V&quot;,&quot;M&quot;,&quot;T&quot;,&quot;W&quot;,&quot;D&quot;,&quot;A&quot;<br /><br /> function &nbsp; CandleExist (I,ds)<br /> return &nbsp;(type&#169; = &nbsp;= &nbsp;&quot;function&quot; &nbsp; and &nbsp;C(I)~ = &nbsp;nil ) &nbsp;or <br /> &nbsp; (type(ds) = &nbsp;= &nbsp;&quot;table&quot; &nbsp; and &nbsp;(ds&#91;I&#93;~ = &nbsp;nil &nbsp; or &nbsp;(type(ds. Size ) = &nbsp;= &nbsp;&quot;function&quot; &nbsp; and &nbsp;(I &gt; &nbsp;0 ) &nbsp;and &nbsp;(I &lt; &nbsp;= ds: Size ()))))<br /> end <br /><br /> function &nbsp; Squeeze (I,P)<br /> &nbsp; &nbsp;return &nbsp; math.fmod (I - &nbsp;1 ,P + &nbsp;1 )<br /> end <br /><br /> function &nbsp; ConvertValue (T, .. .)<br /> local &nbsp; function &nbsp;r(V, R) <br /> &nbsp; &nbsp;if &nbsp;R &nbsp;and &nbsp; string.upper &#174; = &nbsp;= &nbsp; &quot;ON&quot; &nbsp; then &nbsp;R = &nbsp;0 &nbsp; end <br /> &nbsp; &nbsp;if &nbsp;V &nbsp;and &nbsp;tonumber&#174; &nbsp;then <br /> &nbsp; &nbsp; &nbsp; if &nbsp;V &nbsp;&gt; &nbsp;= &nbsp; 0 &nbsp; then &nbsp; return &nbsp; math.floor (V &nbsp;* &nbsp; 10 ^R &nbsp;+ &nbsp; 0.5 ) / &nbsp;10 ^R<br /> &nbsp; &nbsp; &nbsp; else &nbsp; return &nbsp; math.ceil (V &nbsp;* &nbsp; 10 ^R &nbsp;- &nbsp; 0.5 ) / &nbsp;10 ^R &nbsp;end <br /> &nbsp; &nbsp;else &nbsp; return &nbsp;V &nbsp;end <br /> end <br /> &nbsp; &nbsp;if &nbsp;arg.n &nbsp;&gt; &nbsp; 0 &nbsp; then <br /> &nbsp; &nbsp; &nbsp; for &nbsp;i &nbsp;= &nbsp; 1 , arg.n &nbsp;do <br /> &nbsp; &nbsp; &nbsp; &nbsp; arg&#91;i&#93; = arg&#91;i&#93; &nbsp;and &nbsp;r(arg&#91;i&#93; &nbsp;* &nbsp;((T &nbsp;and &nbsp;T.Multiply) &nbsp;or &nbsp; 1 ), (T &nbsp;and &nbsp;T.Round) &nbsp;or &nbsp; &quot;off&quot; )<br /> &nbsp; &nbsp; &nbsp; end <br /> &nbsp; &nbsp; &nbsp; return &nbsp;unpack(arg)<br /> &nbsp; &nbsp;else &nbsp; return &nbsp; nil &nbsp; end <br /> end <br /><br /> function &nbsp; GetValueEX (I,VT,ds) <br />VT = (VT &nbsp;and &nbsp; string.upper ( string.sub (VT, 1 , 1 ))) &nbsp;or &nbsp;ANY<br /> &nbsp; &nbsp;if &nbsp;VT &nbsp;= &nbsp;= &nbsp;OPEN &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --Open <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(O &nbsp;and &nbsp;O(I)) &nbsp;or &nbsp;(ds &nbsp;and &nbsp;ds:O(I))<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;HIGH &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp; --High <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(H &nbsp;and &nbsp;H(I)) &nbsp;or &nbsp;(ds &nbsp;and &nbsp;ds:H(I))<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;LOW &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp;--Low <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(L &nbsp;and &nbsp;L(I)) &nbsp;or &nbsp;(ds &nbsp;and &nbsp;ds:L(I))<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;CLOSE &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp;--Close <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(C &nbsp;and &nbsp;C(I)) &nbsp;or &nbsp;(ds &nbsp;and &nbsp;ds:C(I))<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;VOLUME &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp;--Volume <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(V &nbsp;and &nbsp;V(I)) &nbsp;or &nbsp;(ds &nbsp;and &nbsp;ds:V(I)) <br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;MEDIAN &nbsp;then &nbsp; &nbsp; &nbsp; &nbsp;--Median <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(( GetValue EX(I,HIGH,ds) &nbsp;+ &nbsp; GetValue EX(I,LOW,ds)) / &nbsp;2 )<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;TYPICAL &nbsp;then &nbsp; &nbsp; --Typical <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(( GetValue EX(I,MEDIAN,ds) &nbsp;* &nbsp; 2 &nbsp; + &nbsp; GetValue EX(I,CLOSE,ds))/ 3 )<br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;WEIGHTED &nbsp;then &nbsp; &nbsp; --Weighted <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(( GetValue EX(I,TYPICAL,ds) &nbsp;* &nbsp; 3 &nbsp; + &nbsp; GetValue EX(I,OPEN,ds))/ 4 ) <br /> &nbsp; &nbsp;elseif &nbsp;VT &nbsp;= &nbsp;= &nbsp;DIFFERENCE &nbsp;then &nbsp; &nbsp; --Difference <br /> &nbsp; &nbsp; &nbsp; return &nbsp;( GetValue EX(I,HIGH,ds) &nbsp;- &nbsp; GetValue EX(I,LOW,ds))<br /> &nbsp; &nbsp;else &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --Any <br /> &nbsp; &nbsp; &nbsp; return &nbsp;(ds &nbsp;and &nbsp;ds&#91;I&#93;)<br /> &nbsp; &nbsp;end <br /> return &nbsp; nil <br /> end &nbsp; <br />
			<i>04.06.2020 19:52:20, Максим.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45958/topic5528/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45958/topic5528/</guid>
			<pubDate>Thu, 04 Jun 2020 19:52:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
