<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: CreateDataSource: задержка получения данных]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме CreateDataSource: задержка получения данных форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 05 Apr 2026 19:25:17 +0300</pubDate>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38006/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_DOKFwm6S" href="/user/13046/" bx-tooltip-user-id="13046">rpns</a>, <br />да верно <br />
			<i>17.05.2019 15:32:24, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38006/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38006/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 15:32:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38005/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Таким образом, пока callback не завершился, &quot;данные не едут&quot; (потому что терминал не активен и не принимает). Значит, в колбеке ЖДАТЬ данных НЕЛЬЗЯ, а можно только обрабатывать УЖЕ поступившие (например, когда коллбек и вызывается терминалом для обработки последних изменений). Надеюсь, я правильно понял?<br /><br />Большое спасибо за подробное объяснение! <br />
			<i>17.05.2019 15:26:00, rpns.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38005/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38005/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 15:26:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38004/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_HsG8qxkQ" href="/user/13046/" bx-tooltip-user-id="13046">rpns</a> написал:<br />До вызова main в нем неинициализированной глобальной переменой sz_sr присваивается некоторое значение. OnInit завершается (в основном потоке). Затем (если я верно понял) в отдельном потоке запускается и нормально работает main. Никто, вроде, не висит больше. Но почему-то присвоенное значение -- это 0, что обнаруживается в самом же вызове OnInit. Причем лишь каждый ВТОРОЙ запуск скрипта (а иначе -- правильное значение).<br />=============<br /><br />Как уже было сказано и еще раз повторим, пока работает колбек, терминал QUIK просто ждет, ничего не делает.<br />Вы в колбеке отправили заказ данных, а потом залип на цикле. <br />Пока цикл не завершится, данные заказанные прошлой строкой не поедут, а пока данные не поедут, цикл согласно логике, не завершится. <br />Получается замкнутый круг.<br />При повторном запуске, данные УЖЕ приехали т.к. были заказаны при первом запуске скрипта, по этому второй запуск показывает числа.<br />main работает в отдельном потоке, по этому там заказ данных и ожидание данных, работают параллельно с поступлением данных в терминал.<br />по этому в main можно делать цикл, а в колбеке нет.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_RpGsigJu" href="/user/13046/" bx-tooltip-user-id="13046">rpns</a> написал:<br />Кстати, и без вызова SetEmptyCallback. Зачем он тогда?)<br />=============<br />Он нужен для подписки на данные. Ровно эту же подписку можно выполнить через терминал, открыв нужный график. <br />Если Вы откроете график то по сути SetEmptyCallback не нужен, данные и так будут поступать.<br />Но не всем удобно открывать графики, по этому существует SetEmptyCallback.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_0oQnCOTW" href="/user/13046/" bx-tooltip-user-id="13046">rpns</a> написал:<br />Что вообще стоит делать в OnInit? Можно, например, стакан заказать (Subscribe_Level_II_Quotes)?<br />=============<br />Что угодно, лишь бы выход из колбека был максимально быстрым, и это касается не только OnInit, а вообще всех колбеков (функции с именем On*) <br />
			<i>17.05.2019 15:04:50, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38004/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38004/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 15:04:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38003/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_bdarDoF4" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a>, &nbsp;спасибо! В main все работает ожидаемым образом. (Кстати, и без вызова SetEmptyCallback. Зачем он тогда?)<br /><br />А вот сути проблемы я, к сожалению, не понял. Вы пишите:<br /><br />====quote====<br />Все колбеки выполняются в основном потоке терминала, т.е. пока колбек не завершит работу, терминал будет висеть и ничего не делать.<br />=============<br />У меня есть только один колбек OnInit, или нет? <br /><br />До вызова main в нем неинициализированной глобальной переменой sz_sr присваивается некоторое значение. OnInit завершается (в основном потоке). Затем (если я верно понял) в отдельном потоке запускается и нормально работает main. Никто, вроде, не висит больше. Но почему-то присвоенное значение -- это 0, что обнаруживается в самом же вызове OnInit. Причем лишь каждый ВТОРОЙ запуск скрипта (а иначе -- правильное значение).<br /><br />Что вообще стоит делать в OnInit? Можно, например, стакан заказать (Subscribe_Level_II_Quotes)?<br /><br />Очень хотелось бы разобраться. Еще раз благодарю! <br />
			<i>17.05.2019 14:49:14, rpns.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38003/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38003/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 14:49:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37996/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_QOKriObB" href="/user/13046/" bx-tooltip-user-id="13046">rpns</a>, <br />Уберите код из OnInit<br />Все колбеки выполняются в основном потоке терминала, т.е. пока колбек не завершит работу, терминал будет висеть и ничего не делать. <br />
			<i>17.05.2019 10:31:30, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37996/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37996/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 10:31:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>CreateDataSource: задержка получения данных</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37984/topic4520/">CreateDataSource: задержка получения данных</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В функции OnInit, чтобы получить несколько свечей истории, выполняется следующий код:<br /><p></p>
====code====
<pre> ds_sr, err = CreateDataSource(class, sr_sec, INTERVAL_H1)
 if not ds_sr then message(err, 1) end

 ds_sp, err = CreateDataSource(class, sp_sec, INTERVAL_H1)
 if not ds_sp then message(err, 1) end

 ds_sr : SetEmptyCallback()
 ds_sp : SetEmptyCallback()

 local i = 0
 while (not(sz_sr and sz_sr and sz_sr &#62; 0 and sz_sp &#62; 0) and i &#60; 30) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sz_sr = ds_sr:Size()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sz_sp = ds_sp:Size()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1
 end
 message("i = "..i, 1)&nbsp;&nbsp;&nbsp;&nbsp;
 message("sz_sr, sz_sp = "..sz_sr..", "..sz_sp,1)</pre>
=============
<p>По непонятной причине правильный размер истории выдается лишь при каждом втором запуске скрипта, а при остальных запусках переменные sz_sr и sz_sp имееют значение 0, несмотря на тридатисекундное ожидание правильного значения. В чем ошибка? Как гарантировать разумный Size при всех запусках?<br /></p>Благодарю за любую помощь! <br />
			<i>17.05.2019 01:02:26, rpns.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37984/topic4520/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37984/topic4520/</guid>
			<pubDate>Fri, 17 May 2019 01:02:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
