<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: подписаться на 2 таймфрейма]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме подписаться на 2 таймфрейма форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 11:32:13 +0300</pubDate>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24606/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_J4p4O1yI" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />вот простой пример, на нем работает<br />
====code====
<pre>dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua")
function main() 
&nbsp;&nbsp;func = MA()
&nbsp;&nbsp;t_id = AllocTable()
&nbsp;&nbsp;AddColumn(t_id,1,"Price",true,QTABLE_INT_TYPE,10)
&nbsp;&nbsp;AddColumn(t_id,2,"MA",true,QTABLE_INT_TYPE,10)
&nbsp;&nbsp;CreateWindow(t_id)
&nbsp;&nbsp;SetWindowCaption(t_id,"MA")
&nbsp;&nbsp;ds = CreateDataSource("TQBR", "LKOH", INTERVAL_M5) 
&nbsp;&nbsp;sleep(100)
&nbsp;&nbsp;for i=1,ds:Size() do
&nbsp;&nbsp; ma_out=func(i, {Period=3, Metod = EMA, VType=ANY},{&#91;i&#93;=ds:C(i)})
&nbsp;&nbsp; tmp=InsertRow(t_id,-1)
&nbsp;&nbsp; SetCell(t_id,tmp,1,tostring(ds:C(i)),ds:C(i))
&nbsp;&nbsp; SetCell(t_id,tmp,2,tostring(ma_out),ma_out)
&nbsp;&nbsp;end 
end</pre>
============= <br />
			<i>15.05.2017 10:18:42, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24606/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24606/topic2705/</guid>
			<pubDate>Mon, 15 May 2017 10:18:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24587/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_JrRYzZrr" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Владимир, спасибо за ответ. Но это старая ветка. Вопрос изложенный в начале давно решён.<br />Сейчас на повестке дня две других проблемы:<br />1. После обновления функций из INDICATORS.ZIP перестали работать скрипты.<br /><br />=============<br />Вы запускали мой скрипт из &nbsp;сообщения <B>№20</B>.<br />У меня им корректно рассчитались<B> RSI и SD</B> для двух бумаг на последних версиях <B>INDICATORS.ZIP<br /></B><B><br /></B> <br />
			<i>14.05.2017 14:49:18, Владимир Киселев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24587/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24587/topic2705/</guid>
			<pubDate>Sun, 14 May 2017 14:49:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24586/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо, буду разбираться. Я не кодер, поэтому страдаю от непонимания простых вещей.<br />Все же надеюсь, что в эту ветку заглянет Сергей Горохов и внесёт ясность. <br />
			<i>14.05.2017 14:38:06, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24586/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24586/topic2705/</guid>
			<pubDate>Sun, 14 May 2017 14:38:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24585/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6WhGv2z1" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />2. Так и не получается передавать в индикатор только последний элемент.<br />В приведённом вами примере используется прежний (нерациональный) способ передачи, от которого я хочу отказаться.<br />dev = sec1.SD(i, {Period=mov_period, VType=&quot;Typical&quot;}, ds_mov)<br /><br />=============<br />Вы совсем не правы именно передача всего массива наиболее оптимальна.<br />При этом не делается копия исходного массива, а передается только одно число - ссылка на исходный массив.<br />А попытки создать урезанный массив с последними значениями приводят к лишним накладным расходам<br /><br />Запустите скрипт<br />
====code====
<pre>function privet(t)
&nbsp;&nbsp;&nbsp;message('function privet : t&nbsp;&nbsp;= '.. tostring(tab1))
&nbsp;&nbsp;&nbsp;t.privet = 'Привет из функции'
end

function main()
&nbsp;&nbsp;&nbsp;message('*** start')
&nbsp;&nbsp;&nbsp;tab1 = {o='1', h='2'}
&nbsp;&nbsp;&nbsp;message('tab1 = '.. tostring(tab1))
&nbsp;&nbsp;&nbsp;privet(tab1)
&nbsp;&nbsp;&nbsp;message('tab1.privet = '.. tostring(tab1.privet))

&nbsp;&nbsp;&nbsp;message('*** end')
&nbsp;&nbsp;&nbsp;kvLogClose()
end

</pre>
=============
и посмотрите сообщения <br />
			<i>14.05.2017 14:35:21, Владимир Киселев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24585/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24585/topic2705/</guid>
			<pubDate>Sun, 14 May 2017 14:35:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24583/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Владимир, спасибо за ответ. Но это старая ветка. Вопрос изложенный в начале давно решён.<br />Сейчас на повестке дня две других проблемы:<br />1. После обновления функций из INDICATORS.ZIP перестали работать скрипты.<br />2. Так и не получается передавать в индикатор только последний элемент.<br />В приведённом вами примере используется прежний (нерациональный) способ передачи, от которого я хочу отказаться.<br />dev = sec1.SD(i, {Period=mov_period, VType=&quot;Typical&quot;}, ds_mov)<br />Вместо ds_mov надо передавать одно число типа такого варианта (но он не работает)<br />Out = func(i, {Period=SP, Metod = M, VType=&quot;Any&quot;}, {&#91;i&#93; = C(i)}) <br />
			<i>14.05.2017 09:26:27, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24583/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24583/topic2705/</guid>
			<pubDate>Sun, 14 May 2017 09:26:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24578/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_cablvQYB" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>,Вот рабочий набросок вашей задумки<br />
====code====
<pre>dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;SD.lua")
dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;RSI.lua")

rsi_tf=INTERVAL_M5
mov_tf=INTERVAL_M1

class = 'TQBR'
fut_list = {'SBER','GAZP'}
rsi_period = 14
mov_period = 14

secs = {}

function OnInit(script)
&nbsp;&nbsp;&nbsp;is_run = true
end

function OnStop()
is_run = false
return 2000
end

function main()
&nbsp;&nbsp;&nbsp;for _,sec in pairs(fut_list) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,rsi_tf)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,mov_tf)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;local sec1, ds_rsi, ds_mov, num_rsi, num_mov, dev
&nbsp;&nbsp;&nbsp;while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _,sec in pairs(fut_list) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec1&nbsp;&nbsp; = secs&#91;sec&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds_rsi = sec1&#91;rsi_tf&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds_mov = sec1&#91;mov_tf&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_rsi = ds_rsi:Size()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = ds_rsi.lastI, num_rsi do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- lastI надо пересчитывать т.к. последняя свеча будет изменяться неоднократно
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec1.rsi_count&#91;i&#93; = sec1.RSI(i, {Period=rsi_period, VType="Typical"}, ds_rsi)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(sec ..' rsi_count - '.. i ..' : '.. tostring(sec1.rsi_count&#91;i&#93;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds_rsi.lastI = num_rsi

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_mov = ds_mov:Size()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = ds_mov.lastI, num_mov do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- lastI надо пересчитывать т.к. последняя свеча будет изменяться неоднократно
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dev = sec1.SD(i, {Period=mov_period, VType="Typical"}, ds_mov)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(sec ..' dev - '.. i ..' : '.. tostring(sec1.rsi_count&#91;i&#93;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds_mov.lastI = num_mov
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
end

--&#91;&#91; -- если автомат работает в цыкле можно применить SetEmptyCallback()
function mycallbackforallstocks(ds, I) -- ds = self, I = Index
&nbsp;&nbsp;&nbsp;local class = ds.class
&nbsp;&nbsp;&nbsp;local sec&nbsp;&nbsp; = ds.sec
&nbsp;&nbsp;&nbsp;local interval = ds.interval

end
--&#93;&#93;

function DataSource(class,sec,interval)
&nbsp;&nbsp;&nbsp;local ds = CreateDataSource(class,sec,interval)
&nbsp;&nbsp;&nbsp;ds.class = class
&nbsp;&nbsp;&nbsp;ds.sec = sec
&nbsp;&nbsp;&nbsp;ds.interval = interval
&nbsp;&nbsp;&nbsp;ds.lastI = 1
&nbsp;&nbsp;&nbsp;&nbsp;-- ds:SetUpdateCallback(function(...) mycallbackforallstocks(self.class,self.sec,...) end)
&nbsp;&nbsp;&nbsp;ds:SetEmptyCallback()
&nbsp;&nbsp;&nbsp;if not secs&#91;sec&#93; then secs&#91;sec&#93; = {} end
&nbsp;&nbsp;&nbsp;secs&#91;sec&#93;&#91;interval&#93; = ds
&nbsp;&nbsp;&nbsp;secs&#91;sec&#93;.RSI = RSI()
&nbsp;&nbsp;&nbsp;secs&#91;sec&#93;.rsi_count = {}
&nbsp;&nbsp;&nbsp;secs&#91;sec&#93;.SD = SD()
&nbsp;&nbsp; return
end
</pre>
=============
<br />Так как для последних свечек данные будут меняться несколько раз (причем для каждого набора отдельно), надо пожалуй проверять на действительное изменение данных или на изменение индексов свечек.<br /><br />Можно из цыкла перенести обработку в функцию <br /><B>mycallbackforallstocks </B>но надо учитывать что она будет вызываться для каждого набора по мере его изменения (в том числе неоднократно для последней свечи <br />
			<i>13.05.2017 09:41:13, Владимир Киселев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24578/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24578/topic2705/</guid>
			<pubDate>Sat, 13 May 2017 09:41:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24577/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ZiosX9gq" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Речь о том что надо написать так:<br /> dev=func(num_candles_mov, {Period=mov_period, VType=&quot;Any&quot;}, {&#91;num_candles_mov&#93; = ds_main&#91;sec&#93;:C(num_candles_mov)})<br />=============<br />В Lua переменные типа таблицы являются ссылочными и поэтому передаются в функции по ссылке (без создания новой таблицы)<br />А вот Ваш код как раз &nbsp;тратит лишнюю память на создание новой таблицы. <br />
			<i>13.05.2017 09:33:21, Владимир Киселев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24577/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24577/topic2705/</guid>
			<pubDate>Sat, 13 May 2017 09:33:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24566/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Передавать последний элемент тоже не вариант. Результат такой же.<br />
====code====
<pre>&nbsp;&nbsp;&nbsp;dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua")&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;num_candles=ds_main&#91;sec&#93;:Size() --параметр получен, с ним всё ок.
&nbsp;&nbsp;&nbsp;func = MA()&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;for i=1,num_candles do
&nbsp;&nbsp;&nbsp;ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, {&#91;i&#93;=ds_main&#91;sec&#93;:C(i)})
&nbsp;&nbsp;&nbsp;message (i.."="..ma_out,1)
&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;</pre>
============= <br />
			<i>12.05.2017 16:43:22, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24566/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24566/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 16:43:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24565/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			поправил последний пример. МА не считается. Нил<br />
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua")&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;num_candles=ds_main&#91;sec&#93;:Size()

&nbsp;&nbsp;&nbsp;&nbsp;func = MA()&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for i=1,num_candles do
&nbsp;&nbsp;&nbsp;&nbsp;ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, ds_main&#91;sec&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;message (i.."="..ma_out,1)
&nbsp;&nbsp;&nbsp;&nbsp;end </pre>
============= <br />
			<i>12.05.2017 16:34:24, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24565/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24565/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 16:34:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24564/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мувинги тоже не считаются. Результат нил
====code====
<pre>
&nbsp;&nbsp;&nbsp;&nbsp;dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua")&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;num_candles=ds&#91;sec&#93;:Size()

&nbsp;&nbsp;&nbsp;&nbsp;func = MA()&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for i=1,num_candles do
&nbsp;&nbsp;&nbsp;&nbsp;ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, ds_main&#91;sec&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;message (i.."="..ma_out,1)
&nbsp;&nbsp;&nbsp;&nbsp;end </pre>
============= <br />
			<i>12.05.2017 16:28:10, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24564/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24564/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 16:28:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24556/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Обновил. Теперь ничего не работает, все роботы стали глючить.<br />Например перестал рассчитываться RSI<br />Вот вид, который был рабочим до обновления функций:<br />
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func = RSI()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local rsi_count={}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_candles=ds&#91;sec&#93;:Size()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=1,num_candles do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsi_count&#91;i&#93;=func(i, {Period=rsi_period, VType="Typical"}, ds&#91;sec&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</pre>
=============
<br />rsi_count&#91;i&#93; теперь нил. <br />
			<i>12.05.2017 13:46:19, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24556/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24556/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 13:46:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24553/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_LbCo9Gbd" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br />Потому что функции у Вас старые.<br />Используйте последнее обновление.<br /><br />И еще одно замечание<br />Все функции требуют предварительного расчета начиная с индекса 1. <br />Т.е. даже если нужен только последний индекс, все равно требуется провести цикл расчета начиная с самого первого индекса. <br />
			<i>12.05.2017 12:48:08, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24553/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24553/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 12:48:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24551/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			не помогает.<br />Ругается на строчку 88<br />SD.lua:88: attempt to perform arithmetic on a nil value<br /><img src="https://content.screencast.com/users/astro-12/folders/Snagit/media/d63e1fef-6960-4b39-accd-21d6c1d65ec7/05.12.2017-12.14.png" alt="Пользователь добавил изображение" border="0" /> <br />
			<i>12.05.2017 12:15:35, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24551/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24551/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 12:15:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24544/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_RYu37dOH" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />Речь о том что надо написать так:<br /> dev=func(num_candles_mov, {Period=mov_period, VType="Any"}, {[num_candles_mov] = ds_main[sec]:C(num_candles_mov)}) <br />
			<i>12.05.2017 11:14:01, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24544/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24544/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 11:14:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24543/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			переменная i - это перебор значений в цикле. В моём случае она не определена. Она нужна только для EMA,RSI и других подобных индикаторов. Для стандартного отклонения она не требуется.<br />Поэтому ваш пример не рабочий в моём случае. <br />
			<i>12.05.2017 10:54:08, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24543/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24543/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 10:54:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24525/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_0ddwbhSr" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />Попробуйте найти отличия в строках<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_x8gDR8Id" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Out = func(i, {Period=SP, Metod = M, VType="Any"}, {[i] = C(i)})<br /><br />=============<br />и<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_5DvXuzta" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br /> &nbsp; &nbsp; &nbsp;dev=func(num_candles_mov, {Period=mov_period, VType="Any"}, ds_main[sec]:C(num_candles_mov))<br />=============<br /><br />и Вы сами найдете ответ <br />
			<i>12.05.2017 05:16:03, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24525/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24525/topic2705/</guid>
			<pubDate>Fri, 12 May 2017 05:16:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message24519/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, Сергей.<br />Добрался до того, чтобы посидеть над этими записями с форума.<br />Не получается запихивать в индикатор только последнее значение.<br />Начал с простого - Стандартное отклонение.<br />В таком виде работает:
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;--Стандартное отклонение
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func = SD()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dev=func(num_candles_mov, {Period=mov_period, VType="Typical"}, ds_main&#91;sec&#93;)</pre>
=============
В таком виде не получается:
====code====
<pre>&nbsp;&nbsp;&nbsp;--Стандартное отклонение
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func = SD()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dev=func(num_candles_mov, {Period=mov_period, VType="Any"}, ds_main&#91;sec&#93;:C(num_candles_mov))</pre>
=============
Если вместо Any писать Close - тоже.<br />Ошибк: attempt to index local 'ds' (a number value) в строчке 201, вот она: <br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;Out = (C and C(I)) or (ds and ds:C(I)) <br />
			<i>11.05.2017 21:09:49, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message24519/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message24519/topic2705/</guid>
			<pubDate>Thu, 11 May 2017 21:09:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23756/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Речь о том, что вместо:<br />Out = func(i, {Period=SP, Metod = M, VType="Close"}, ds)<br /><br />можно писать так:<br />Out = func(i, {Period=SP, Metod = M, VType="Any"}, {[i] = C(i)})<br /><br />Но надо помнить, что если в индикаторе, требуются значения предыдущих свечей, то надо их указать, например так:<br />Out = func(i, {Period=SP, Metod = M, VType="Any"}, {[i] = C(i), [i-1] = C(i-1)})<br /><br />при этом VType надо указать именно "Any", а если надо "Typical", то указать его через функцию Value, например так:<br />Out = func(i, {Period=SP, Metod = M, VType="Any"}, {[i] = Value(i,"Typical",ds)})<br /><br />такой способ, немного сэкономит ресурсы. <br />
			<i>14.04.2017 15:56:38, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23756/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23756/topic2705/</guid>
			<pubDate>Fri, 14 Apr 2017 15:56:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23732/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо, Сергей.<br />Мысль понятно, но я не знаю как её реализовать?<br />Как то так?<br />Стандартное отклонение
====code====
<pre>func = SD() dev=func(ds_minutes&#91;sec&#93;:Size(), {Period=mov_period, VType="Typical"}, ds_minutes&#91;sec&#93;:C())</pre>
=============
Для RSI я брал пример из документации и сделал по аналогии с EMA:
====code====
<pre>&nbsp;&nbsp;for i=1,#tbl do
&nbsp;&nbsp; ma_out=func(i, {Period=3, Metod = "EMA", VType="Any", round=2}, tbl)
&nbsp;&nbsp;end </pre>
=============
вместо tbl нужно подставлять маленькую таблицу из двух значений: i и i-1?
====code====
<pre>tbl={}
tbl.1=last=ds_minutes&#91;sec&#93;:C(i)&nbsp;&nbsp; 
tbl.2=last=ds_minutes&#91;sec&#93;:C(i-1) </pre>
=============
 Но я строю по типической цене Typical, а не по Closa ...Подскажите пожалуйста, я с трудом всё это понимаю.... &nbsp; &nbsp; &nbsp; <br />
			<i>14.04.2017 08:45:56, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23732/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23732/topic2705/</guid>
			<pubDate>Fri, 14 Apr 2017 08:45:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23726/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Wzf6XhdH" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Не происходит ли тут лишних действий, всё ли экономно в плане получения и подсчёта индикаторов?<br />=============<br /><br />Происходит.<br />Например не понятно, зачем Вам две функции DataSource и DataSource_minutes. В чем смысл, ведь они делают одно и тоже?<br />Далее, для индикатора RSI() не обязательно передавать в функцию весь ds целиком, достаточно только предыдущее значение (i-1) и текущее. <br />А для индикатора SD() только текущее (ds_minutes[sec]:Size()). <br />
			<i>13.04.2017 22:47:21, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23726/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23726/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 22:47:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23723/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Взгляните пожалуйста на такой вариант. Не происходит ли тут лишних действий, всё ли экономно в плане получения и подсчёта индикаторов?<br />
====code====
<pre>ds={}
ds_minutes={}</pre>
=============

====code====
<pre>function mycallbackforallstocks(class,sec,index)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

end

function DataSource(class,sec,interval)
&nbsp;&nbsp; ds&#91;sec&#93; = CreateDataSource(class,sec,interval)
&nbsp;&nbsp; ds&#91;sec&#93;:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)
&nbsp;&nbsp; return ds&#91;sec&#93;
end

 function DataSource_minutes(class,sec,interval)
&nbsp;&nbsp; ds_minutes&#91;sec&#93; = CreateDataSource(class,sec,interval)
&nbsp;&nbsp; ds_minutes&#91;sec&#93;:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)
&nbsp;&nbsp; return ds&#91;sec&#93;
end</pre>
=============

====code====
<pre>function main()
for key,sec in pairs(fut_list) do
&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,rsi_tf)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;DataSource_minutes(class,sec,mov_tf)
&nbsp;&nbsp;&nbsp;&nbsp;
end
.............

while is_run do

for key,sec in pairs(fut_list) do
sleep (1000)
func = RSI()
local rsi_count={}
num_candles=ds&#91;sec&#93;:Size()
last_price&#91;sec&#93;=ds&#91;sec&#93;:C(num_candles)&nbsp;&nbsp;&nbsp;
for i=1,num_candles do
 rsi_count&#91;i&#93;=func(i, {Period=rsi_period, VType="Typical"}, ds&#91;sec&#93;)
end 
.....................
--Стандартное отклонение
func = SD()
dev=func(ds_minutes&#91;sec&#93;:Size(), {Period=mov_period, VType="Typical"}, ds_minutes&#91;sec&#93;)
....................... 
</pre>
============= <br />
			<i>13.04.2017 21:58:09, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23723/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23723/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 21:58:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23713/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_xUUyd6Q5" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />ds это пример скопированный из документации.<br />С тем же успехом можно написать что угодно. <br />
			<i>13.04.2017 15:08:35, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23713/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23713/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 15:08:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23712/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			ds это зарезирвированное имя или можно какие угодно брать литеры? <br />
			<i>13.04.2017 15:06:29, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23712/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23712/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 15:06:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23711/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_A64wdIWq" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />надо ли заводить вторую таблицу типа ds?<br /><br />=============<br /><br />Это зависит от того что вы будете дальше делать с данными.<br />Если Вам нужно дальше работать с источником ds то да надо создавать отдельный ds, если нет, то нет. <br />
			<i>13.04.2017 14:58:12, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23711/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23711/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 14:58:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>подписаться на 2 таймфрейма</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message23704/topic2705/">подписаться на 2 таймфрейма</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Подскажите как грамотно подписаться в одном скрипте на два таймфрейма?<br /><br />
====code====
<pre>rsi_tf=INTERVAL_M5
mov_tf=INTERVAL_M1</pre>
=============

====code====
<pre>function main()
for key,sec in pairs(fut_list) do
&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,rsi_tf)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,mov_tf)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
end
end</pre>
=============

====code====
<pre>function mycallbackforallstocks(class,sec,index)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

end

 function DataSource(class,sec,interval)
&nbsp;&nbsp; ds&#91;sec&#93; = CreateDataSource(class,sec,interval)
&nbsp;&nbsp; ds&#91;sec&#93;:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)
&nbsp;&nbsp; return ds&#91;sec&#93;
end</pre>
=============
надо ли заводить вторую таблицу типа ds?<br />Спасибо <br />
			<i>13.04.2017 12:14:10, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message23704/topic2705/</link>
			<guid>http://forum.quik.ru/messages/forum10/message23704/topic2705/</guid>
			<pubDate>Thu, 13 Apr 2017 12:14:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
