<?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>Sun, 03 May 2026 05:21:54 +0300</pubDate>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20696/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_W6pRx7To" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />Николай, спасибо за ответ. <br />Приведите пожалуйста формулу мувинга, которую Вы рекомендуете, там где &nbsp;1 деление +1 вычитание+1 сложение.<br />=============<br />вот код мувинга без циклов:
====code====
<pre>Settings = {
Name = "*nkSMA",
Period = 9,
line = {{Name = "nkSMA",Type = 1, Color = RGB(255, 0, 0)}}
}

function Init()
&nbsp;&nbsp; return #Settings.line
end

local P,i1,NP;
function OnCalculate(i)
&nbsp;&nbsp;&nbsp;local Out=C(i);
&nbsp;&nbsp;&nbsp;if i==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S={}; P=Settings.Period; NP=1/P;
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#60;=P then&nbsp;&nbsp;Out=(Out+i1*S&#91;i1&#93;)/i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;Out=S&#91;i1&#93;+ NP*(Out-C(i-P));&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp; i1=i;&nbsp;&nbsp;S&#91;i&#93;=Out;
&nbsp;&nbsp; return Out
end

</pre>
============= <br />
			<i>02.12.2016 14:17:20, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20696/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20696/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 14:17:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20686/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_rMIHaXkD" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a>, <br />да правильно <br />
			<i>02.12.2016 11:31:52, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20686/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20686/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 11:31:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20685/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			нужно так сделать?<br />
====code====
<pre>ma_out=func(ds&#91;sec&#93;:Size(), {Period=60, Metod = "SMA", VType="Typical", round=4}, ds&#91;sec&#93;)</pre>
=============
ds&#91;sec&#93;:Size() - так писать правильно? <br />
			<i>02.12.2016 11:29:06, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20685/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20685/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 11:29:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20684/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_fLzTEWzA" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />я пробовал, но тогда данные не заходят в функцию с вашего сайта:<br />=============<br /><br />логично, ведь вы передаете в функцию таблицу из разных потоков. <br />а надо передавать какой-то один поток. <br />
			<i>02.12.2016 11:02:28, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20684/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20684/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 11:02:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20683/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_QwZ1E9CC" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Ничего не мешает сделать несколько ds, для каждой бумаги свой. Например если вместо переменной использовать таблицу<br />ds&#91;sec&#93; = CreateDataSource(&quot;TQBR&quot;, sec, INTERVAL_M1)<br />=============<br />я пробовал, но тогда данные не заходят в функцию с вашего сайта:
====code====
<pre>func = MA()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ma_out=func(ds:Size(), {Period=60, Metod = "SMA", VType="Typical", round=4}, ds)</pre>
============= <br />
			<i>02.12.2016 10:59:58, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20683/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20683/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 10:59:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20682/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_3RD02jNd" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />это правильно?<br /><br />=============<br />Да правильно. <br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_pFAGuQkw" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />Ведь ds будет всё время принимать значение новой бумаги и будет каша. <br /><br />=============<br /><br />Ничего не мешает сделать несколько ds, для каждой бумаги свой. Например если вместо переменной использовать таблицу<br />ds[sec] = CreateDataSource("TQBR", sec, INTERVAL_M1) <br />
			<i>02.12.2016 10:57:14, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20682/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20682/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 10:57:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20681/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ок, переформулирую вопрос.<br />1. Этот код работает, но он работает медленнее чем брать данные с графика через идентификатор. Почему? Где самый тяжёлый участок кода?<br />2. Мне надо запустить ds = CreateDataSource(&quot;TQBR&quot;, sec, INTERVAL_M1) единожды, верно? <br />3. Мне надо запустить ds:SetUpdateCallback() тоже единожды, верно?<br />4. Мне надо перебрать много бумаг. Если я сделаю так, <br />
====code====
<pre>for sec in string.gmatch(ticker_list,"%a+") do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ds = CreateDataSource("TQBR", sec, INTERVAL_M1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ds:SetUpdateCallback()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
end

а потом основной цикл программы внутри while is run

for sec in string.gmatch(ticker_list,"%a+") do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
запускаются функции, проверяются условия срабатывания, идёт торговля
end

</pre>
=============
это правильно? Ведь ds будет всё время принимать значение новой бумаги и будет каша. <br />Спасибо за ответы <br />
			<i>02.12.2016 10:45:33, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20681/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20681/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 10:45:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20678/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_lda63x23" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a>, <br /><br />Какие колбеки? и зачем Вы их выносите?<br />Вы же сами сказали что не хотите подписываться на свечки в цикле. Так не подписывайтесь. Про колбеки никто ничего не говорил. <br />
			<i>02.12.2016 10:20:57, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20678/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20678/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 10:20:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20677/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GViDwf1G" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><br />====quote====<br /> Космонавт &nbsp; написал:<br />У меня ведь грубая ошибка - я каждый раз внутри цикла по новой подписываюсь на свечки и ставлю колбек? <br />=============<br />Не понятно, что мешает Вам этого не делать?<br />=============<br />Если я вывожу колбэки в начало кода - до функции main, они не работают. <br />
			<i>02.12.2016 10:10:00, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20677/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20677/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 10:10:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20661/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SrbgrlLx" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />У меня ведь грубая ошибка - я каждый раз внутри цикла по новой подписываюсь на свечки и ставлю колбек? <br />=============<br /><br />Не понятно, что мешает Вам этого не делать? <br />
			<i>02.12.2016 05:21:22, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20661/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20661/topic2316/</guid>
			<pubDate>Fri, 02 Dec 2016 05:21:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20652/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Большое спасибо за ответы! <br />Разрешите задать ещё вопрос. У меня робот перебирает много акций, и рассчитывать индикаторы надо для каждого из них. Вот как это выглядит сейчас. У меня ведь грубая ошибка - я каждый раз внутри цикла по новой подписываюсь на свечки и ставлю колбек? Подскажите пожалуйсте где грамотно размещать заказ свечек и обновлений? Функция MA - это готовый пример с сайта ARQA<br />
====code====
<pre>
ticker_list = "AFLT,ALRS,BANE,CHMF,FEES,GAZP,GMKN,HYDR,IRAO,LKOH,MAGN,MFON,MGNT,MOEX,MTSS,NLMK,NVTK,RASP,ROSN,RSTI,RTKM,SBER,SNGS,SNGSP,TATN,URKA,VTBR"

 
is_run = true
function OnStop(s)
&nbsp;&nbsp;is_run = false
&nbsp;&nbsp;return 1000
end

dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua") --взято с сайта ARQA
function main()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
while is_run do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for sec in string.gmatch(ticker_list,"%a+") do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds = CreateDataSource("TQBR", sec, INTERVAL_M1) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds:SetUpdateCallback()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(100)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func = MA()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma_out=func(ds:Size(), {Period=60, Metod = "SMA", VType="Typical", round=4}, ds)
&nbsp;&nbsp;&nbsp;&nbsp; end
end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
end</pre>
============= <br />
			<i>01.12.2016 14:49:28, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20652/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20652/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 14:49:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20647/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Я использую другой подход: <noindex><a href="http://www.bot4sale.ru/blog-menu/qlua/spisok-statej/487-coffee.html" target="_blank" rel="nofollow">http://www.bot4sale.ru/blog-menu/qlua/spisok-statej/487-coffee.html</a></noindex><br /><br />Он намного красивее, но имеет одну проблему с размером стека при рекурсии. Способ решения этой проблемы придумывайте на свой вкус. <br />
			<i>01.12.2016 10:51:55, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20647/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20647/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 10:51:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20644/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_F1fDT7zJ" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />Сергей, спасибо за пример, но не понятно как функции OnCalculate(i) удаётся обратиться ко всем требуемым 9 свечкам. Что передаётся в переменную i ?<br />=============<br /><br />По данному вопросу, рекомендуем к прочтению документ "Создание индикаторов технического анализа с помощью скриптов Lua.pdf" расположенный по ссылке: <br /><noindex><a href="https://arqatech.com/upload/iblock/022/quik_lua.zip" target="_blank" rel="nofollow">https://arqatech.com/upload/iblock/022/quik_lua.zip</a></noindex> <br />
			<i>01.12.2016 10:22:09, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20644/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20644/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 10:22:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20643/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Сергей, спасибо за пример, но не понятно как функции OnCalculate(i) удаётся обратиться ко всем требуемым 9 свечкам. Что передаётся в переменную i ? <br />
			<i>01.12.2016 10:09:23, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20643/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20643/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 10:09:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20642/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tBLCKJEP" href="/user/1889/" bx-tooltip-user-id="1889">Sergey Denegin</a> написал:<br /><br />====quote====<br /> Sergey Gorokhov &nbsp; написал:<br />SUM_TMP =(SUM_TMP[i-1] or 0)+C(i) <br />=============<br />Сергей, спасибо за интересный пример. <br />Обратил внимание на вот эту конструкцию. А Вы не могли бы пояснить, как он работает? как она обрабатывает оператор OR в данном случае? Если я правильно понимаю, она суммирует либо то, что перед ним, либо то что после, но по какому критерию?<br />=============<br /><br />Если SUM_TMP[i-1] не существует (nil) то вместо него берется 0 <br />
			<i>01.12.2016 09:37:14, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20642/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20642/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 09:37:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20641/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SckJFrp9" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />SUM_TMP<I>=(SUM_TMP&#91;i-1&#93; or 0)+C(i)</I><br />=============<br />Сергей, спасибо за интересный пример. <br />Обратил внимание на вот эту конструкцию. А Вы не могли бы пояснить, как он работает? как она обрабатывает оператор OR в данном случае? Если я правильно понимаю, она суммирует либо то, что перед ним, либо то что после, но по какому критерию? &nbsp; <br />
			<i>01.12.2016 09:33:17, Sergey Denegin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20641/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20641/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 09:33:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20638/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте,<br />У нас есть такой пример индикатора без циклов, он не адаптирован под CreateDataSource, но может дать идею решения:<br /><table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>
====code====
<pre>Settings = {
Name = "*SMA", 
Period = 9, 
line = {{Name = "SMA1",Type = TYPE_LINE, Color = RGB(255, 0, 0)}}
}

function Init() 
&nbsp;&nbsp;&nbsp;SUM_TMP={}
&nbsp;&nbsp;&nbsp;return #Settings.line
end

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;local Out = nil 
&nbsp;&nbsp;&nbsp;P=Settings.Period
&nbsp;&nbsp;&nbsp;if i==1 then SUM_TMP={} end
&nbsp;&nbsp;&nbsp;SUM_TMP&#91;i&#93;=(SUM_TMP&#91;i-1&#93; or 0)+C(i)
&nbsp;&nbsp;&nbsp;if i &#62;= P then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Out = (SUM_TMP&#91;i&#93;-(SUM_TMP&#91;i-P&#93; or 0))/P
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return Out
end
</pre>
=============
</td></tr></tbody></table> <br />
			<i>01.12.2016 08:43:59, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20638/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20638/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 08:43:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20637/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И ещё - как решить проблему - не обращаться к тем свечкам, которые не изменились. <br />
			<i>01.12.2016 08:34:41, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20637/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20637/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 08:34:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20636/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Николай, спасибо за ответ. <br />Приведите пожалуйста формулу мувинга, которую Вы рекомендуете, там где &nbsp;1 деление +1 вычитание+1 сложение. <br />
			<i>01.12.2016 07:58:13, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20636/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20636/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 07:58:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20624/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_PfQyvsHM" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />Сейчас формула такая. <br />На примере 5-периодной Moving Average:
====code====
<pre>&nbsp;&nbsp; ..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;..&nbsp;&nbsp;.. 
ds =&nbsp;&nbsp;CreateDataSource (p_classcode, p_seccode, INTERVAL_M1)&nbsp;&nbsp;&nbsp;&nbsp;
ds: SetUpdateCallback (cb)

&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;length = ds: Size ()
&nbsp;&nbsp;&nbsp;&nbsp;sum =&nbsp;&nbsp;0 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;i =&nbsp;&nbsp;0 , 4 , 1&nbsp;&nbsp; do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum = sum + ds:C(length - i)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;moving5 = sum/ 5 
&nbsp;&nbsp;&nbsp;&nbsp; sleep ( 100 )
&nbsp;&nbsp;&nbsp;&nbsp; end 
 end 

&nbsp;&nbsp;</pre>
=============
<br />=============<br />Есть два момента, которые необходимо учитывать:<br />----------------------------------------------<br />1) Расчет надо делать для двух состояний: а) свеча закрыта б) свеча открыта. <br />Либо лишь состояние а), которое надо обнаружить. состояние б) существует лишь на последней свече и лишь в режиме торгов.<br />Поэтому у Вас расчет последней свечи содержит ошибку.<br />--------------------------------------------------------------------<br />2) Не надо использовать циклы. <br />Циклы -это зло в системах реального времени.<br />Можно вычислить мувинг затратив лишь 1 деление +1 вычитание+1 сложение для любого значения параметра N.<br />У Вас N всего 4, а некоторые (обращались ко мне с такой проблемой) используют 1000000 (сто тысяч) Вот и посчитайте мколько времени у Вас будет считаться мувинг встроенным индикатором или вашим ( у обращавшихся квик виснул )<br />-----------------------------<br /> &nbsp; <br />
			<i>01.12.2016 06:24:26, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20624/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20624/topic2316/</guid>
			<pubDate>Thu, 01 Dec 2016 06:24:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20618/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И попутно вопрос: почему мувинг рассчитанный внутри этого кода капельку, но отличается от мувинга на графике?<br />Вот рисунок<br /><img src="http://content.screencast.com/users/astro-12/folders/Snagit/media/fedfcb8b-fc73-4273-b84e-4256db57df24/11.30.2016-22.48.png" alt="Пользователь добавил изображение" border="0" /> <br />
			<i>30.11.2016 22:49:40, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20618/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20618/topic2316/</guid>
			<pubDate>Wed, 30 Nov 2016 22:49:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20617/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Сейчас формула такая. <br />На примере 5-периодной Moving Average:
====code====
<pre>..............................
ds=CreateDataSource(p_classcode, p_seccode, INTERVAL_M1)&nbsp;&nbsp;&nbsp;&nbsp;
ds:SetUpdateCallback(cb)

&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;length=ds:Size()
&nbsp;&nbsp;&nbsp;&nbsp;sum=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=0,4,1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum=sum+ds:C(length-i)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;moving5=sum/5
&nbsp;&nbsp;&nbsp;&nbsp;sleep(100)
&nbsp;&nbsp;&nbsp;&nbsp;end
end

</pre>
============= <br />
			<i>30.11.2016 22:43:33, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20617/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20617/topic2316/</guid>
			<pubDate>Wed, 30 Nov 2016 22:43:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вычисление индикатора внутри кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20616/topic2316/">Вычисление индикатора внутри кода</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br />Хочу вычислять скользящую среднюю внутри кода.<br />Что при этом нужно учитывать?<br />Период 14, часовик, по ценам close<br />Казалось бы всё просто, но есть особенности:<br />1. Старые свечки можно не обрабатывать, а обрабатывать только текущую.<br />2. Но обрабатывать старые всё же придётся, ведь рисуются новые свечки, поэтому каждый раз при формировании новой свечи придётся разок пересчитать старые.<br />Помогите пожалуйста выразить это в красивом коде.<br />Спасибо. <br />
			<i>30.11.2016 22:09:05, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20616/topic2316/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20616/topic2316/</guid>
			<pubDate>Wed, 30 Nov 2016 22:09:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
