<?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, 08 Apr 2026 22:17:44 +0300</pubDate>
		<item>
			<title>Создание собственных индикаторов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message21217/topic2367/">Создание собственных индикаторов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Большое спасибо за подсказки, разобрался, реализовал задуманное) <br />
			<i>20.12.2016 20:15:48, Егор Масалкин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message21217/topic2367/</link>
			<guid>http://forum.quik.ru/messages/forum10/message21217/topic2367/</guid>
			<pubDate>Tue, 20 Dec 2016 20:15:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Создание собственных индикаторов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message21045/topic2367/">Создание собственных индикаторов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вы просили фундаментальные заблуждения. <br />К вышеперечисленным добавлю еще. <br />Callback OnInit к индикаторам отношения не имеет. Вы же об индикаторах спрашивали, а не о скриптах (как о прообразе робота). <br />В индикаторах есть функция Init, с ее помощью при инициализации индикатора Вы вернете в Quik число - количество линий, которые будет строить Ваш индикатор. Этой функции у Вас нет. <br />OnCalculate(index) вызывается не Вами, ее вызывет QUIK, подключая ее в момент передачи Вам очередной свечки из истории или при обновлении текущей свечки. <br />По факту, у Вас получилось, что при каждом вызове OnCalculate с передачей Вам номера очередной свечи Вы выполняете практически одни и те же вычисления, игнорируя номер свечи, что и объясняет однообразие значений по ординатам. <br /><br />Похоже, у Вас нет четкого разделения между понятиями &quot;индикатор&quot; и &quot;скрипт&quot;. <br />Индикатор -&quot;рисует&quot; на графике (QUIK нарисует то значение, которое Вы вернете для поданного номера свечки). <br />Скрипты - работают &quot;втемную&quot;, обычно занимаются обсчетом и торговыми операциями.<br /><br />Начните с реализации какого-нибудь простейшего индикатора, упростите то, что есть в документации, пусть. например, выведет (вернет в QUIK) значение номера поданной свечи. Так легче прочувствовать суть индикатора.<br /> &nbsp; &nbsp; &nbsp; <br />
			<i>14.12.2016 10:19:16, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message21045/topic2367/</link>
			<guid>http://forum.quik.ru/messages/forum10/message21045/topic2367/</guid>
			<pubDate>Wed, 14 Dec 2016 10:19:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Создание собственных индикаторов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message21044/topic2367/">Создание собственных индикаторов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_75LxlOJ3" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Для начала - Вы игнорируете то, что у функции OnCalculate есть аргумент (номер свечи). Именно для этой свечки Вы и должны посчитать и вернуть значение индикатора.<br /><br />Ваш индикатор последовательно вызовут для первой свечки, для второй и т.д. Для текущей свечки индикатор может вызываться много раз, она же меняется. &nbsp;<br /> <br /> &nbsp;<br />=============<br />Т.е. мне следует в функции OnInit() через условия пересечения средних определять номера нужных свечей, и затем вызвать OnCalculate с этими номерами, где и вернуть значение? <br />
			<i>14.12.2016 09:42:33, Егор Масалкин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message21044/topic2367/</link>
			<guid>http://forum.quik.ru/messages/forum10/message21044/topic2367/</guid>
			<pubDate>Wed, 14 Dec 2016 09:42:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Создание собственных индикаторов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message21016/topic2367/">Создание собственных индикаторов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Для начала - Вы игнорируете то, что у функции OnCalculate есть аргумент (номер свечи). Именно для этой свечки Вы и должны посчитать и вернуть значение индикатора.<br /><br />Ваш индикатор последовательно вызовут для первой свечки, для второй и т.д. Для текущей свечки индикатор может вызываться много раз, она же меняется. &nbsp;<br /><span class="bx-font" style="font-size:;"><br /> </span> <br />
			<i>13.12.2016 19:14:30, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message21016/topic2367/</link>
			<guid>http://forum.quik.ru/messages/forum10/message21016/topic2367/</guid>
			<pubDate>Tue, 13 Dec 2016 19:14:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Создание собственных индикаторов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20991/topic2367/">Создание собственных индикаторов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте!<br />Решил попрактиковаться в самостоятельном написании индикаторов технического анализа, но понял, что плохо себе представляю как работает функция OnCalculate.<br />Как я понял, именно она отвечает за установку значений на индикатор.<br />Пытаюсь сделать так, чтобы индикатор ставил точки в зависимости от определенных условий (например, пересечения скользящих средних)<br /><br />График типа TYPE_POINT.<br />Однако, количество точек четко совпадает с количеством свечей (и их координаты Х соответстенно), а по ординате все точки принимают одно и то же значение.<br /><br />Где я фундаментально заблуждаюсь?<br />
====code====
<pre>function OnCalculate()
local short_pos=false;
&nbsp;&nbsp;&nbsp;local long_pos=false;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;N1=getNumCandles("MVAs")
&nbsp;&nbsp;&nbsp;for v=2,N1,1 do
&nbsp;&nbsp;&nbsp;t=getCandlesByIndex("MVAs",0,v,1)&#91;0&#93;; 
&nbsp;&nbsp;&nbsp;t1=getCandlesByIndex("MVAs",0, v-1, 1)&#91;0&#93;.close;
&nbsp;&nbsp;&nbsp;t2=getCandlesByIndex("MVAl",0, v-1, 1)&#91;0&#93;.close;
&nbsp;&nbsp;&nbsp;t11=getCandlesByIndex("MVAs",0, v-2, 1)&#91;0&#93;.close;
&nbsp;&nbsp;&nbsp;t22=getCandlesByIndex("MVAl",0, v-2, 1)&#91;0&#93;.close;
&nbsp;&nbsp;&nbsp;if (t1&#62;t2) and (t11&#60;t22) then --короткая пересекает длинную снизу вверх
&nbsp;&nbsp;&nbsp;if (short_pos==false) then &nbsp;&nbsp;&nbsp;--если не в позиции то
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long_pos=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--открываем длинную позицию&nbsp;&nbsp;&nbsp;(покупка)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return t.open;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--иначе
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short_pos=false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--закрываем короткую позицию
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return t.open;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;else
if (t1&#60;t2) and (t11&#62;t22) then --короткая пересекает длинную сверху вниз
&nbsp;&nbsp;&nbsp;if (long_pos==false) then --если не в позиции то открываем короткую
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short_pos=true;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return t.open;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--иначе
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long_pos=false; --закрывается длинная позиция
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return t.open;&nbsp;&nbsp;&nbsp;--производим продажу; длинна позиция закрыта.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end
end</pre>
============= <br />
			<i>12.12.2016 22:17:44, Егор Масалкин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20991/topic2367/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20991/topic2367/</guid>
			<pubDate>Mon, 12 Dec 2016 22:17:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
