<?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>Wed, 20 May 2026 09:24:01 +0300</pubDate>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78300/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В OnInit() нельзя расчеты вести, она запускается до создания потока в main и предназначена для инициализации! <br />
			<i>30.03.2025 23:35:48, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78300/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78300/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 23:35:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78299/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добавьте в пример вот эту функцию получения цены.<br /><br /> local string_upper,string_sub=string.upper,string.sub;<br />function Value(I,VType,ds) <br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;local Out = nil<br /> &nbsp; &nbsp;local VType=(VType and string_upper(string_sub(VType,1,1))) or &quot;A&quot;<br /> &nbsp; &nbsp;if VType == &quot;O&quot; then &nbsp; &nbsp; &nbsp; &nbsp;--Open<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (O and O(I)) or (ds and ds:O(I))<br /> &nbsp; &nbsp;elseif VType == &quot;H&quot; then &nbsp; &nbsp; --High<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (H and H(I)) or (ds and ds:H(I))<br /> &nbsp; &nbsp;elseif VType == &quot;L&quot; then &nbsp; &nbsp;--Low<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (L and L(I)) or (ds and ds:L(I))<br /> &nbsp; &nbsp;elseif VType == &quot;C&quot; then &nbsp; &nbsp;--Close<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (C and C(I)) or (ds and ds:C(I))<br /> &nbsp; &nbsp;elseif VType == &quot;V&quot; then &nbsp; &nbsp;--Volume<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (V and V(I)) or (ds and ds:V(I))<br /> &nbsp; &nbsp;elseif VType == &quot;X&quot; then &nbsp; &nbsp;--DateTime<br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (T and T(I)) or (ds and ds:T(I))<br /> &nbsp; &nbsp;elseif VType == &quot;A&quot; then &nbsp; &nbsp;--Any<br /> &nbsp; &nbsp; &nbsp; &nbsp;if ds then Out = ds&#91;I&#93; end<br /> &nbsp; &nbsp;end<br />return Out<br />end <br />
			<i>30.03.2025 23:32:04, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78299/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78299/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 23:32:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78298/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ну хорошо давайте, по порядку. &nbsp;OnCalculate(idx) это функция обратного вызова, специальная для создания индикаторов, все что она делает передает idx. Передавать ее некуда нельзя.<br />Но можно вынести из нее алгоритм расчет в отдельную функцию PSAR(idx) и уже работать с ней. Вот для индикатора.<br />function OnCalculate(idx)<br />PSAR(idx) <br />end<br />Для работы с ней в main(), нужно подписаться на источник вот этот момент из моего примера.<br /><br /> local ds_D1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_D1)<br />затем передаем, &nbsp;а &nbsp;здесь получаем свечи &nbsp; &nbsp;local dailyCandles = getCandles(ds_D1, 4)<br />далее расчет индикатора &nbsp;local atr = calculateATR(ds_D1, 4)<br /><br />Вместо расчета АТР поставьте расчет собственного по аналогии. Удачи. &nbsp; <br />
			<i>30.03.2025 23:26:52, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78298/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78298/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 23:26:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78297/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот сделал так, но естественно получаю ошибку(test2.lua:9: attempt to compare nil with number):
====code====
<pre>function OnInit()

&nbsp;&nbsp;&nbsp;Period_ATR=14
&nbsp;&nbsp;&nbsp;old_idx=0
&nbsp;&nbsp;&nbsp;long=false
&nbsp;&nbsp;&nbsp;short=false
&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;function PSAR(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx&#60;Period_ATR then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx==Period_ATR&nbsp;&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar={}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;per_ATR=Period_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&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;Old_ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx~=old_idx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&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;&nbsp;&nbsp;&nbsp;local ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=ATR/(Old_ATR+ATR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=af/10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Old_ATR=ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if long then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hmax&#60;H(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx-1)
&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;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(hmax-psar&#91;idx-1&#93;)
&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;&nbsp;&nbsp;&nbsp;if short then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if lmin&#62;L(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx-1)
&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;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(lmin-psar&#91;idx-1&#93;)
&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;&nbsp;&nbsp;&nbsp;revers=true
&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;if long and L(idx)&#60;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=hmax
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&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;if short and H(idx)&#62;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=lmin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old_idx=idx

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return psar&#91;idx&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end
&nbsp;&nbsp; 
function getCandles(ds, count)
&nbsp;&nbsp;&nbsp;&nbsp;local candles = {}
&nbsp;&nbsp;&nbsp;&nbsp;local size = ds:Size()
&nbsp;&nbsp;&nbsp;&nbsp;for i = 0, count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if size &#62;= 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candles&#91;i&#93; = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high = ds:H(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low = ds:L(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open = ds:O(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close = ds:C(size - i) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return candles
end&nbsp;&nbsp; 
&nbsp;&nbsp; 
function main()

&nbsp;&nbsp; ds = CreateDataSource('TQBR', 'SBER', INTERVAL_M5)
&nbsp;&nbsp; local Candles = getCandles(ds, 20)
&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;for i=1,ds:Size() do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Значение индикатора:" ..tostring(PSAR()))
&nbsp;&nbsp;&nbsp;end 

end</pre>
============= <br />
			<i>30.03.2025 23:11:27, Stivins.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78297/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78297/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 23:11:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78296/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Все равно мало что понял. Код индикатора:<br />
====code====
<pre>function OnCalculate(idx)
&nbsp;&nbsp;&nbsp;if idx&#60;Settings.Period_ATR then
&nbsp;&nbsp;&nbsp;return nil
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx==Settings.Period_ATR&nbsp;&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar={}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;per_ATR=Settings.Period_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Old_ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx~=old_idx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&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;local ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=ATR/(Old_ATR+ATR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=af/10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Old_ATR=ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if long then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hmax&#60;H(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx-1)
&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;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(hmax-psar&#91;idx-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;if short then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if lmin&#62;L(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx-1)
&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;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(lmin-psar&#91;idx-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;revers=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if long and L(idx)&#60;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=hmax
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if short and H(idx)&#62;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=lmin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;old_idx=idx

&nbsp;&nbsp;&nbsp;return psar&#91;idx&#93;
&nbsp;&nbsp;&nbsp;end</pre>
=============
<br />Дальше я хочу поместить его в свой скрипт, чтобы получилось примерно следующее:<br />
====code====
<pre>function OnInit() 
function PSAR(idx)&nbsp;&nbsp;&nbsp;
if idx&#60;Settings.Period_ATR then
&nbsp;&nbsp;&nbsp;return nil
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx==Settings.Period_ATR&nbsp;&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar={}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;per_ATR=Settings.Period_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Old_ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if idx~=old_idx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for js=(idx-per_ATR+1),idx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR=(TR+H(js)-L(js))
&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;local ATR=TR/per_ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=ATR/(Old_ATR+ATR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=af/10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Old_ATR=ATR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if long then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hmax&#60;H(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx-1)
&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;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(hmax-psar&#91;idx-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;if short then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if lmin&#62;L(idx-1) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx-1)
&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;psar&#91;idx&#93;=psar&#91;idx-1&#93;+af*(lmin-psar&#91;idx-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;revers=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if long and L(idx)&#60;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=hmax
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmin=L(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if short and H(idx)&#62;psar&#91;idx&#93; and revers then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psar&#91;idx&#93;=lmin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hmax=H(idx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;af=Step
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revers=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;old_idx=idx

&nbsp;&nbsp;&nbsp;return psar&#91;idx&#93;
&nbsp;&nbsp;&nbsp;end
end
function main() 

function getCandles(ds, count)&nbsp;&nbsp;&nbsp;&nbsp;local candles = {}
&nbsp;&nbsp;&nbsp;&nbsp;local size = ds:Size()
&nbsp;&nbsp;&nbsp;&nbsp;for i = 0, count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if size &#62;= 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candles&#91;i&#93; = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high = ds:H(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low = ds:L(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open = ds:O(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close = ds:C(size - i) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return candles
end
local ds_H1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_H1)&nbsp;&nbsp;&nbsp;&nbsp;
local h1Candles = getCandles(ds_H1, 5)

psar=PSAR(h1Candles) --только в цикле по количеству свечей

end
</pre>
=============
<br />Но, &nbsp;не понимаю как передавать свечи в функцию индикатора, да еще и в цикле получается. <br />
			<i>30.03.2025 23:00:32, Stivins.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78296/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78296/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 23:00:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78295/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Посмотрите это пример, он рабочий подставите свои данный и по выводите.<br />
====code====
<pre>-- Global settings
local CLASS_CODE = "SPBFUT"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Код класса инструмента
local SEC_CODE = "CRM5"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Код инструмента
local TRADE_ACCOUNT = "" -- Счет
local LOTS = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Количество лотов

-- Инициализация данных
local dailyTrend = "none"
local entryPrice = 0
local sl = 0
local tp = 0

-- Функция получения свечей
function getCandles(ds, count)
&nbsp;&nbsp;&nbsp;&nbsp;local candles = {}
&nbsp;&nbsp;&nbsp;&nbsp;local size = ds:Size()
&nbsp;&nbsp;&nbsp;&nbsp;--message( 'size = ' .. size)
&nbsp;&nbsp;&nbsp;&nbsp;for i = 0, count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if size &#62;= 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candles&#91;i&#93; = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high = ds:H(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low = ds:L(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open = ds:O(size - i) or 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close = ds:C(size - i) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return candles
end

-- Расчет ATR
function calculateATR(ds, period)
&nbsp;&nbsp;&nbsp;&nbsp;local sumTR = 0
&nbsp;&nbsp;&nbsp;&nbsp;local size = ds:Size()
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, period do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local prevClose = ds:C(size - i + 1) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local high = ds:H(size - i) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local low = ds:L(size - i) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local TR = math.max(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high - low,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;math.abs(high - prevClose),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;math.abs(low - prevClose)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sumTR = sumTR + TR
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return sumTR / period
end

-- Функция определения тренда на D1
function getDailyTrend()

&nbsp;&nbsp;&nbsp;&nbsp;local ds_D1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_D1)

&nbsp;&nbsp;&nbsp;&nbsp;local dailyCandles = getCandles(ds_D1, 4)
&nbsp;&nbsp;&nbsp;local atr = calculateATR(ds_D1, 4)

&nbsp;&nbsp;&nbsp;&nbsp;local o0 = dailyCandles&#91;0&#93;.open or ds_D1:O(ds_D1:Size()) or 0
&nbsp;&nbsp;&nbsp;--message('o0 = ' .. tostring(o0) .. '; dailyCandles&#91;0&#93;.open = ' .. tostring(dailyCandles&#91;0&#93;.open) )

&nbsp;&nbsp;&nbsp;&nbsp;local HH = math.max(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;1&#93;.high, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;2&#93;.high, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;3&#93;.high
&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;local LL = math.min(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;1&#93;.low, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;2&#93;.low, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dailyCandles&#91;3&#93;.low
&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;local trend = "range"
&nbsp;&nbsp;&nbsp;&nbsp;if o0 &#62; HH then trend = "uptrend"
&nbsp;&nbsp;&nbsp;&nbsp;elseif o0 &#60; LL then trend = "downtrend"
&nbsp;&nbsp;&nbsp;&nbsp;else trend = "range" 
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;local daily = {&#91;'trend'&#93; = trend, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'hh'&#93; = HH, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'ll'&#93; = LL, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'o'&#93; = o0, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'atr'&#93; = atr,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'targetB'&#93; = atr + o0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;'targetS'&#93; = o0 - atr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;return daily
end

-- Проверка структуры на H1
function checkH1Structure(trend)
&nbsp;&nbsp;&nbsp;&nbsp;local ds_H1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_H1)
&nbsp;&nbsp;&nbsp;&nbsp;local h1Candles = getCandles(ds_H1, 5)
&nbsp;&nbsp;&nbsp;local atr = calculateATR(ds_H1, 14)
&nbsp;&nbsp;&nbsp;&nbsp;local currentClose = ds_H1:C(ds_H1:Size()) or 0
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if trend == "uptrend" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return h1Candles&#91;1&#93;.high &#62; h1Candles&#91;2&#93;.high and
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h1Candles&#91;2&#93;.low &#60; h1Candles&#91;3&#93;.low and
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentClose &#62; h1Candles&#91;1&#93;.high
&nbsp;&nbsp;&nbsp;&nbsp;elseif trend == "downtrend" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return h1Candles&#91;1&#93;.low &#60; h1Candles&#91;2&#93;.low and
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h1Candles&#91;2&#93;.high &#62; h1Candles&#91;3&#93;.high and
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentClose &#60; h1Candles&#91;1&#93;.low
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return false
end

-- Поиск точки входа на M1
function checkM1Entry(trend)
&nbsp;&nbsp;&nbsp;&nbsp;local ds_M1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_M1)
&nbsp;&nbsp;&nbsp;&nbsp;local m1Candles = getCandles(ds_M1, 20)
&nbsp;&nbsp;&nbsp;&nbsp;local atr = calculateATR(ds_M1, 14)
&nbsp;&nbsp;&nbsp;&nbsp;local currentClose = ds_M1:C(ds_M1:Size()) or 0
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if trend == "uptrend" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if currentClose &#62; m1Candles&#91;0&#93;.high then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entryPrice = currentClose
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl = entryPrice - atr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp = entryPrice + 2*atr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;elseif trend == "downtrend" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if currentClose &#60; m1Candles&#91;0&#93;.low then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entryPrice = currentClose
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl = entryPrice + atr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp = entryPrice - 2*atr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return false
end

-- Отправка ордера
function placeOrder(direction)
&nbsp;&nbsp;&nbsp;&nbsp;local transaction = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACTION = "NEW_ORDER",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLASSCODE = CLASS_CODE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECCODE = SEC_CODE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACCOUNT = TRADE_ACCOUNT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPERATION = direction == "uptrend" and "B" or "S",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRICE = entryPrice,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QUANTITY = tostring(LOTS),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STOPPRICE = tostring(sl),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPIRY = "GTC"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local res = SendTransaction(transaction)
&nbsp;&nbsp;&nbsp;&nbsp;if res then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Order placed: "..direction..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" | Price: "..entryPrice..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" | SL: "..sl..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" | TP: "..tp)
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Error placing order!")
&nbsp;&nbsp;&nbsp;&nbsp;end
end
local is_run
function OnInit()
&nbsp;&nbsp;&nbsp;&nbsp;--strategy = Strategy:new(config)
&nbsp;&nbsp;&nbsp;&nbsp;--strategy:start()
&nbsp;&nbsp;&nbsp;&nbsp;is_run = true
&nbsp;&nbsp;&nbsp;message('Стратегия 3ТФ инициализирована')
end
function OnStop()
&nbsp;&nbsp;&nbsp;&nbsp;--strategy:stop()
&nbsp;&nbsp;&nbsp;&nbsp;is_run = false
&nbsp;&nbsp;&nbsp;message('Стратегия 3ТФ остановлена')
end
function OnTransReply(r)
&nbsp;&nbsp;&nbsp;&nbsp;--strategy:handle_transaction_reply(r)
end
function OnTrade(t)
&nbsp;&nbsp;&nbsp;&nbsp;--strategy:handle_trade(t)
end
function OnOrder(o)
&nbsp;&nbsp;&nbsp;&nbsp;--strategy:handle_order(o)
end
-- Основной обработчик
function main()
&nbsp;&nbsp;&nbsp;&nbsp;message('Стратегия 3ТФ запущена')
&nbsp;&nbsp;&nbsp;&nbsp;local daily = getDailyTrend()
&nbsp;&nbsp;&nbsp;&nbsp;message( 'Стратегия 3ТФ dailyTrend = ' .. tostring(daily.trend) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; HH = '.. tostring(daily.hh) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; LL = '.. tostring(daily.ll)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; o0 = '.. tostring(daily.o) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; atr = '.. tostring(daily.atr)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; targetB = '.. tostring(daily.targetB)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..'; targetS = '.. tostring(daily.targetS)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;daily.trend = "uptrend"

&nbsp;&nbsp;&nbsp;&nbsp;while is_run do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if daily.trend ~= "range" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;checkH1Structure(daily.trend) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if checkM1Entry(daily.trend) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;placeOrder(daily.trend)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>30.03.2025 22:21:17, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78295/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78295/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 22:21:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78293/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_BgfyICps" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a>, или может я не правильно высказался. <br />Мне по сути нужно поменять Oncalculate() индикатора на function psar() и подать уже на эту функцию свечи. <br />
			<i>30.03.2025 21:38:42, Stivins.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78293/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78293/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 21:38:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78292/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VcsYGq1V" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Вот ссылка на индикатор, &nbsp; <noindex><a href="https://forum.quik.ru/messages/forum10/message78143/topic8506/#message78143" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message78143/topic8506/#message78143</a></noindex> , на что нужно обратить внимание, это в анонимной функции на передачу ds! <br />ds &nbsp;= CreateDataSource, то есть мы передаем методы на которые подписаны, это делается именно для того, чтоб без извинений и переделок можно было индикатор использовать в алгоритмах, через наследование.<br />=============<br />Чисто не понял вас:) По ссылке по-моему вообще о другом пишут. <br />
			<i>30.03.2025 21:36:19, Stivins.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78292/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78292/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 21:36:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78291/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот ссылка на индикатор, &nbsp;<noindex><a href="https://forum.quik.ru/messages/forum10/message78143/topic8506/#message78143" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message78143/topic8506/#message78143</a></noindex>, на что нужно обратить внимание, это в анонимной функции на передачу ds! <br />ds &nbsp;= CreateDataSource, то есть мы передаем методы на которые подписаны, это делается именно для того, чтоб без извинений и переделок можно было индикатор использовать в алгоритмах, через наследование. <br />
			<i>30.03.2025 21:24:19, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78291/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78291/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 21:24:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Работа индикатора вне графика.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78290/topic9101/">Работа индикатора вне графика.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Есть простой индикатор по типу parabolic.<br />на вход принимает свечи и отдает свой результат в виде цены.<br />function Oncalculate(idx)<br />— блаблабла<br />return psar<br />end<br /><br />Хочу без добавления индикатора на график, добавить его код в свой скрипт и<br />скормить ему 20-30 последних свечей и получить ответы.<br /><br />Подскажите, как можно реализовать?<br />Понимаю, что нужно делать через CreateDataSource, но навыка не хватает. <br />
			<i>30.03.2025 21:10:01, Stivins.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78290/topic9101/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78290/topic9101/</guid>
			<pubDate>Sun, 30 Mar 2025 21:10:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
