<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Sleep в индикаторе]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Sleep в индикаторе форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 24 May 2026 03:02:37 +0300</pubDate>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22456/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tUAP6o05" href="/user/1028/" bx-tooltip-user-id="1028">валерий</a> написал:<br /> swerg &nbsp;, <br />Пожалуйста<br />
====code====
<pre>&nbsp;&nbsp;Settings&nbsp;&nbsp;=&nbsp;&nbsp;
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;&nbsp;=&nbsp;&nbsp; "+PE" ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fname&nbsp;&nbsp;=&nbsp;&nbsp; "OSCp" ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line = 
&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;Name&nbsp;&nbsp;=&nbsp;&nbsp; "eq - " ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;&nbsp;=&nbsp;&nbsp; RGB ( 40 ,&nbsp;&nbsp;80 ,&nbsp;&nbsp;190 ),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;=&nbsp;&nbsp;TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width&nbsp;&nbsp;=&nbsp;&nbsp; 1 
&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;Name&nbsp;&nbsp;=&nbsp;&nbsp; "pos - " ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;&nbsp;=&nbsp;&nbsp; RGB ( 255 ,&nbsp;&nbsp;60 ,&nbsp;&nbsp;50 ),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;=&nbsp;&nbsp;TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width&nbsp;&nbsp;=&nbsp;&nbsp; 2 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}
 function&nbsp;&nbsp; Init ()
&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; # Settings.line
 end 
 function&nbsp;&nbsp; OnCalculate (index)
&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;&nbsp;fnm&nbsp;&nbsp;=&nbsp;&nbsp; "&#92; &#92;"&nbsp;&nbsp;&nbsp;&nbsp;..&nbsp;&nbsp;Settings.fname&nbsp;&nbsp;..&nbsp;&nbsp; ".txt" 
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;index&nbsp;&nbsp;=&nbsp;&nbsp;=&nbsp;&nbsp; Size ()&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;callResult, result&nbsp;&nbsp;=&nbsp;&nbsp;pcall(dofile,&nbsp;&nbsp;getScriptPath ()&nbsp;&nbsp;..&nbsp;&nbsp;fnm)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; not&nbsp;&nbsp;callResult&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetValue (index -&nbsp;&nbsp;# eq,&nbsp;&nbsp;1 ,&nbsp;&nbsp;nil )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetValue (index -&nbsp;&nbsp;# pos,&nbsp;&nbsp;2 ,&nbsp;&nbsp;nil )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;cnt&nbsp;&nbsp;=&nbsp;&nbsp; 0 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;i&nbsp;&nbsp;=&nbsp;&nbsp;index -&nbsp;&nbsp;# eq +&nbsp;&nbsp;1 , index -&nbsp;&nbsp;1&nbsp;&nbsp; do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cnt&nbsp;&nbsp;=&nbsp;&nbsp;cnt&nbsp;&nbsp;+&nbsp;&nbsp; 1 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue (i,&nbsp;&nbsp;1 , eq&#91;cnt&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue (i,&nbsp;&nbsp;2 , pos&#91;cnt&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;eq&#91; # eq&#93;, pos&#91; # pos&#93;
&nbsp;&nbsp;&nbsp;&nbsp;end 
 end 
&nbsp;&nbsp;</pre>
=============
<br /><br />В файле для дуфайл - типа этого:<br />pos={0.00,0.00,0.00,1.00,1.00,}<br />eq={0.43,0.43,0.43,0.45,0.44,}<br />только длиннее - 300-500 палок.<br />=============<br />Могу посоветовать следующее:<br />1) &nbsp;дорисовывать последнюю точку и удалять первую, а не перерисовывать все.<br />2) перерисовывать лишь те точки которые изменились. <br />
			<i>14.02.2017 20:05:36, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22456/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22456/topic2533/</guid>
			<pubDate>Tue, 14 Feb 2017 20:05:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22404/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_Imu2Us0j" href="/user/3010/" bx-tooltip-user-id="3010">Алексей</a>, <br />Кажется с вашей помощью я понял особенную логику индикаторов арки. Буду копать в указанном вами направлении. Спасибо. <br />
			<i>13.02.2017 15:52:55, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22404/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22404/topic2533/</guid>
			<pubDate>Mon, 13 Feb 2017 15:52:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22376/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_oL93F4Sf" href="/user/1028/" bx-tooltip-user-id="1028">валерий</a> написал:<br /> Алексей &nbsp;, <br />Как правило меняются максимум только два последних значения и можно было бы попробовать подумать как не перерисовывать остальные. Но при первом расчете (применить \/ добавить \/ ОК) квик все перерисовывает, потом вроде нет... Как узнать намерения квика в каждом конкретном случае я не вижу.<br />Скорость обновления меня практически не волнует. И 5 сек устроит. Что было бы существеннее экономии на перерисовке. Но можно ли применять слип и куда его вставить &nbsp;техподдержка молчит.<br />=============<br /><br />Sleep() категорически не поможет. Код OnCalculate() выполняется в основном потоке QUIKа. Слипом вы просто подвесите QUIK.<br />Идея, заложенная разработчиками QUIKa, заключается в том, что через механизм вызова callback-функции OnCalculate(), QUIK сообщает какую свечку Вам сейчас надо обработать, и ожидает, что Вы вернете значение индикатора именно для этой свечки. Это только для особых индикаторов, формируемых с запаздыванием (например, фракталы), была предоставлена функция SetValue(). При этом подразумевается, что &quot;задним числом&quot; может поменяться значение индикатора только для конечного кол-ва свечек, но никак не вся история индикатора (кому нужен индикатор, история которого постоянно меняется задним числом?)<br /><br />1-й вариант (противоречит логике работы QUIK):<br />Если у Вас ГАРАНТИРОВАНО меняется не более 2-х последних свечек, то и перерисовываейте индикатор только для них. Точнее, перерисовывайте (SetValue) только для предпоследней свечки, а значение индикатора для текущей свечки возвращайте как результат OnCalculate(). Как в первый раз вывести весь индикатор? Как только получите index == Size(), нарисуйте его весь и установите флаг, что все отрисовали. Соответственно, при поступлении от QUIK последующих вызовов OnCalculate() Вы уже будете перерисовывать только две последние свечи. <br />Также обязательно отлавливайте ситуацию index == 1. Это значит, что QUIK по одной из многочисленных причин (не важно каких) решил заставить Вас пересчитать весь индикатор. Делайте то, что он просит, т.е. сбросьте вышеупомянутый флаг отрисовки.<br /><br />2-й вариант (в логике QUIK):<br />У Вас же должно быть жесткое соответствие для какой (по времени) свечки соответствуют какие по счету значения в таблицах из файла *.txt?<br />Quik у Вас запрашивает через OnCalculate() значение индикатора для свечки со временем T(index), ну так и верните ему значение индикатора, соответствующее этому времени.<br />А чтобы каждый раз не считывать с диска файл *.txt надо придумать механизм принятия решения, когда же именно его считывать.<br />Для этого надо понимать как часто он меняется (или как часто Вы хотите выводить новую информацию на график), т.е. вывод через равные интервалы времени - это один механизм.<br />Или надо понимать в связи с какими событиями происходит смена содержимого *.txt и как их отловить - это другой механизм. <br />
			<i>13.02.2017 03:39:17, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22376/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22376/topic2533/</guid>
			<pubDate>Mon, 13 Feb 2017 03:39:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22362/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_JfgyVDki" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Индикаторы пересчитываются по каждому мовому данному, фактически по каждой сделке по инструменту.<br />вы можете ограничить частоту расчета просто пропуская отдельные вызовы<br />но лучше, конечно, написать индикатор так, чтобы он не тормозил<br />=============<br /><br />Облом. Не нашел способа как пропустить вызов OnCalculate. Пустой return или его отсутствие стирает всё. <br />
			<i>11.02.2017 18:24:10, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22362/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22362/topic2533/</guid>
			<pubDate>Sat, 11 Feb 2017 18:24:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22355/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_VCUxJSQW" href="/user/3010/" bx-tooltip-user-id="3010">Алексей</a>, <br />Как правило меняются максимум только два последних значения и можно было бы попробовать подумать как не перерисовывать остальные. Но при первом расчете (применить \/ добавить \/ ОК) квик все перерисовывает, потом вроде нет... Как узнать намерения квика в каждом конкретном случае я не вижу.<br />Скорость обновления меня практически не волнует. И 5 сек устроит. Что было бы существеннее экономии на перерисовке. Но можно ли применять слип и куда его вставить &nbsp;техподдержка молчит. <br />
			<i>11.02.2017 11:47:33, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22355/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22355/topic2533/</guid>
			<pubDate>Sat, 11 Feb 2017 11:47:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22352/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_PxO8nazs" href="/user/1028/" bx-tooltip-user-id="1028">валерий</a> написал:<br /> Алексей &nbsp;, <br />Меня интересует просто рисовалка готовых данных. Никаких расчетов нет. Все рисуется на последнем баре - SetValue. Скорость не важна. Лишь бы при большом количестве индикаторов не тормозился сам квик.<br />=============<br />В выложенном Вами коде получается, что по мере совершения на бирже каждой обезличенной сделки по инструменту, к которому Вы &quot;прикрутили&quot; свой индикатор, у Вас заново перерисовываются все 300-500 свечек (точнее точек 2-х линий индикатора). В принципе это накладно, но если так и задумано...<br />Чтобы Вам что-нибудь посоветовать, нужно понимание того, как часто обновляется информация в Вашем txt файле? И какого характера это обновление: после очередной обезличенной сделки на бирже в файле может всё поменяться (тогда, собственно, ничего нового тут не придумать) или меняется/добавляется только последнее значение в таблицах pos и eq.<br />Также хочу уточнить, к чему относятся последние данные в таблицах: к последней завершенной свечке (т.е. к Size()-1) или к текущей формируемой? <br />
			<i>11.02.2017 02:26:51, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22352/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22352/topic2533/</guid>
			<pubDate>Sat, 11 Feb 2017 02:26:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22332/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_UFY9Uwt7" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, <br />Пожалуйста<br />
====code====
<pre>
Settings = 
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name = "+PE",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fname = "OSCp",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line=
&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;Name = "eq - ",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(40, 80, 190),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 1
&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;Name = "pos - ",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color = RGB(255, 60, 50),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Width = 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}
function Init()
&nbsp;&nbsp;&nbsp;&nbsp;return #Settings.line
end
function OnCalculate(index)
&nbsp;&nbsp;&nbsp;local fnm = "&#92;&#92;" .. Settings.fname .. ".txt"
&nbsp;&nbsp;&nbsp;if index == Size() then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local callResult, result = pcall(dofile, getScriptPath() .. fnm)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not callResult then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(index-#eq, 1, nil)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(index-#pos, 2, nil)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local cnt = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = index-#eq+1, index-1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt = cnt + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i, 1, eq&#91;cnt&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i, 2, pos&#91;cnt&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return eq&#91;#eq&#93;, pos&#91;#pos&#93;
&nbsp;&nbsp;&nbsp;end
end
</pre>
=============
<br /><br />В файле для дуфайл - типа этого:<br />pos={0.00,0.00,0.00,1.00,1.00,}<br />eq={0.43,0.43,0.43,0.45,0.44,}<br />только длиннее - 300-500 палок. <br />
			<i>10.02.2017 10:17:56, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22332/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22332/topic2533/</guid>
			<pubDate>Fri, 10 Feb 2017 10:17:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22325/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Видимо пришло время поделиться кодом вашего индикатора<br />мало-ли что там написано <br />
			<i>10.02.2017 06:29:36, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22325/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22325/topic2533/</guid>
			<pubDate>Fri, 10 Feb 2017 06:29:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22321/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_naAWusrn" href="/user/3010/" bx-tooltip-user-id="3010">Алексей</a>, <br />Меня интересует просто рисовалка готовых данных. Никаких расчетов нет. Все рисуется на последнем баре - SetValue. Скорость не важна. Лишь бы при большом количестве индикаторов не тормозился сам квик. <br />
			<i>10.02.2017 00:06:35, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22321/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22321/topic2533/</guid>
			<pubDate>Fri, 10 Feb 2017 00:06:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22320/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ixVoW57V" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, <br />Тормозить не должен, все просто - взять готовые данные и нарисовать. Впрочем тормоза странные - все бегает, процессор на две трети пуст, но иногда тормозит правая кнопка мыши или по двойному щелчку стакан открывается с задержкой.<br /><br />====quote====<br />пропуская отдельные вызовы<br />=============<br />Вы имеете в виду поставить счетчик на первом баре и пока он не сработает просто пустой return? Надо попробовать. <br />
			<i>09.02.2017 23:59:41, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22320/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22320/topic2533/</guid>
			<pubDate>Thu, 09 Feb 2017 23:59:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22319/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если речь идет об индикаторе, как о скрипте для рисования линий в окне графиков QUIK, то это особый вид скриптов, в которых нет своего выделенного потока main(). <br />Почитайте &quot;Создание индикаторов технического анализа с помощью скриптов Lua.pdf&quot; на официальной страничке QUIK.<br />Вся текущая работа такого скрипта по сути сводится к тому, что QUIK вызывает вашу callback-функцию OnCalculate() каждый раз по мере изменения текущей или появления новой свечи.<br />Вы же должны максимально быстрым алгоритмом рассчитать значения индикатора для текущего состояния свечи и вернуть QUIKу получившееся значение индикатора. Никаких sleep() !<br />Кроме того, те алгоритмы, которые, например, предложены в обсуждаемых на форме INDICATORS.zip являются, на самом деле, лишь демонстрация базовых принципов написания индикатора, а не готовым продуктом. Использованные там алгоритмы можно (и нужно!) оптимизировать так, что вычисления будут происходить на порядок быстрее. (Ничуть не хочу обидеть разработчиков :)<br /><br />Если же речь идет об организации расчетов значений индикатора для внутренних нужд торгового робота, написанного так, чтобы не зависеть от случайного закрытия окна, на котором рисуется интересующий индикатор, то здесь требования, как к обычному скрипту qlua: все &quot;тяжелые&quot; вычисления - в потоке main(), в callback-ах - лишь мгновенное сохранение поступивших данных (например, в очередях) и возврат управления обратно QUIKу. Потом уже main() должен разбираться, что делать с поступившей информацией.<br />Применительно к расчету индикатора для внутренних нужд робота, можно предложить следующую схему: в main() до основного цикла или внутри цикла по мере наступления событий, требующих начать расчет нового индикатора, запрашиваете у QUIKа нужный поток свечек вызовом CreateDataSource(), и вешаете обработчик события &quot;изменение текущей / поступление новой свечки&quot; через SetUpdateCallback().<br />Единственное отличие в написании этого обработчика от OnCalculate() в том, что он не должен ничего возвращать QUIKу, а новое вычисленное значение индикатора нужно каким-то устраивающим Вас образом передать в поток main(). <br />
			<i>09.02.2017 21:39:52, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22319/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22319/topic2533/</guid>
			<pubDate>Thu, 09 Feb 2017 21:39:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22314/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Индикаторы пересчитываются по каждому мовому данному, фактически по каждой сделке по инструменту.<br />вы можете ограничить частоту расчета просто пропуская отдельные вызовы<br />но лучше, конечно, написать индикатор так, чтобы он не тормозил <br />
			<i>09.02.2017 18:01:53, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22314/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22314/topic2533/</guid>
			<pubDate>Thu, 09 Feb 2017 18:01:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Sleep в индикаторе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message22311/topic2533/">Sleep в индикаторе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Такое впечатление, что если повесить много даже простых индикаторов, квик начинает подтормаживать. Как часто рассчитываются индикаторы? На каждом тике?<br />Как можно ограничить частоту расчета? Куда бы можно было вставить слип? Не очень понятно. <br />
			<i>09.02.2017 17:20:34, валерий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message22311/topic2533/</link>
			<guid>http://forum.quik.ru/messages/forum10/message22311/topic2533/</guid>
			<pubDate>Thu, 09 Feb 2017 17:20:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
