<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: SetUpdateCallback зависания системы]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме SetUpdateCallback зависания системы форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 18 Apr 2026 10:58:59 +0300</pubDate>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20756/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_W2JbXSLV" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />надо заменить на <br />=============<br />Да верно.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_nF3oRs9M" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a> написал:<br />в итоге я буду получать данные каждый раз при пробеге цикла, а не по апдейту?<br />=============<br />Тоже верно <br />
			<i>05.12.2016 07:12:38, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20756/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20756/topic1977/</guid>
			<pubDate>Mon, 05 Dec 2016 07:12:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20695/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_vTZzjjeE" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /> Космонавт &nbsp;, <br />Для этого специально существует функция SetEmptyCallback<br />=============<br />Сергей, вы программист, а я гуманитарий, уточните пожалуйста что мне делать.<br />Строчку
====code====
<pre>ds&#91;sec&#93;:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)</pre>
=============
надо заменить на 
====code====
<pre>ds&#91;sec&#93;:SetEmptyCallback () ?</pre>
=============
в итоге я буду получать данные каждый раз при пробеге цикла, а не по апдейту? <br />
			<i>02.12.2016 13:40:08, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20695/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20695/topic1977/</guid>
			<pubDate>Fri, 02 Dec 2016 13:40:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20694/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_W5slY5I9" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a>, <br />Для этого специально существует функция SetEmptyCallback <br />
			<i>02.12.2016 13:32:09, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20694/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20694/topic1977/</guid>
			<pubDate>Fri, 02 Dec 2016 13:32:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20691/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И ещё вопрос<br /><br /><br />====quote====<br /> 
====code====
<pre>function mycallbackforallstocks(class,sec,index) 
&nbsp;&nbsp; -- Теперь в колбеке нам доступны код и класс инструмента
&nbsp;&nbsp; message(class .. " " .. security,1)
&nbsp;&nbsp; -- Также доступны все параметры, которые приходят с колбеком из терминала
&nbsp;&nbsp; xxx = index
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>
=============
<br />=============<br /><br />функция mycallbackforallstocks похоже для моих целей - лишняя.<br />Как написать строчку 
====code====
<pre>ds&#91;sec&#93;:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)</pre>
=============
без неё?<br /><br />Вот так будет работать?
====code====
<pre>ds&#91;sec&#93;:SetUpdateCallback()</pre>
============= <br />
			<i>02.12.2016 13:26:41, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20691/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20691/topic1977/</guid>
			<pubDate>Fri, 02 Dec 2016 13:26:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20689/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_sLQk3uws" href="/user/256/" bx-tooltip-user-id="256">Космонавт</a>, <br />Для расчета EMA требуется прогнать значения от первого до последнего.<br />Настоятельно рекомендуем посмотреть пример, который описан в файле readme_LuaIndicators.txt <br />
			<i>02.12.2016 12:03:32, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20689/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20689/topic1977/</guid>
			<pubDate>Fri, 02 Dec 2016 12:03:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20688/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Всё равно не работает. 
====code====
<pre>interval = INTERVAL_M1
ticker_list = "AFKS,AFLT,AKRN,ALRS,AVAZP,BANE,BANEP,CHMF,DIXY,FEES,GAZP,GCHE,GMKN,GRAZ,HYDR,IRAO,KMAZ,LKOH,LNTA,LSRG,MAGN,MFON,MGNT,MOEX,MSNG,MSRS,MSTT,MTLR,MTLRP,MTSS,MVID,NLMK,NMTP,NVTK,OGKB,PHOR,PIKK,PLZL,POLY,PRTK,RASP,ROSN,RSTI,RSTIP,RTKM,RTKMP,RUALR,SBER,SBERP,SIBN,SNGS,SNGSP,SVAV,TATN,TATNP,TGKA,TRMK,TRNFP,UPRO,URKA,VTBR,VZRZ,VZRZP,YNDX"

class="TQBR"
ds={}
is_run = true

 function mycallbackforallstocks(class,sec,index) 
&nbsp;&nbsp; -- Теперь в колбеке нам доступны код и класс инструмента
&nbsp;&nbsp; message(class .. " " .. security,1)
&nbsp;&nbsp; -- Также доступны все параметры, которые приходят с колбеком из терминала
&nbsp;&nbsp; xxx = index
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 main()
&nbsp;&nbsp;&nbsp;&nbsp;dofile(getWorkingFolder().."&#92;&#92;LuaIndicators&#92;&#92;MA.lua")
&nbsp;&nbsp;&nbsp;&nbsp;for sec in string.gmatch(ticker_list,"%a+") do
&nbsp;&nbsp;&nbsp;&nbsp;DataSource(class,sec,interval)
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;while is_run do

&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;func = MA() 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma_out=func(ds&#91;sec&#93;:Size(), {Period=3, Metod = "EMA", VType="Close", round=2}, ds&#91;sec&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end&nbsp;&nbsp;&nbsp;&nbsp;</pre>
=============
<img src="http://content.screencast.com/users/astro-12/folders/Snagit/media/4763d828-0ca8-4ec5-8e9c-0bbf9a191ea1/12.02.2016-11.55.png" alt="Пользователь добавил изображение" border="0" /><br /><br />MA.lua - это файл любезно выложенный разработчиками.<br /> Строчка 83:
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMA_TMP&#91;I&#93;=rounding((EMA_TMP&#91;I-1&#93;*(Period-1)+2*Value(I, VType, ds)) / (Period+1),round)</pre>
============= <br />
			<i>02.12.2016 11:56:59, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20688/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20688/topic1977/</guid>
			<pubDate>Fri, 02 Dec 2016 11:56:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20008/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как минимум в коде есть одна ошибка - в одну глобальную переменную ds присваиваются все создаваемые DataSource'ы. И соответственно данные читаются только из последнего созданного.<br /><br />Надо изменить на что-то типа такого:<br />
====code====
<pre>
--Создаётся обёртка
function DataSource(class,security)
&nbsp;&nbsp;local &#91;B&#93;ds&#91;/B&#93; = CreateDataSource(class, security, interval);
&nbsp;&nbsp;ds:SetUpdateCallback(function(index) MyCallbackForAllStocks(class,security&#91;B&#93;,ds&#91;/B&#93;,index) end)
end</pre>
============= <br />
			<i>05.11.2016 14:48:31, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20008/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20008/topic1977/</guid>
			<pubDate>Sat, 05 Nov 2016 14:48:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20007/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, я правильно понимаю, что в последней версии QUIK (Qlua) CreateDataSource может вызываться не только из main.<br />Или я что-то придумываю.<br />Есть ли возможность в последней версии вызывать ее из скриптов индикаторов.<br />Спасибо. <br />
			<i>05.11.2016 06:16:24, PFelix.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20007/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20007/topic1977/</guid>
			<pubDate>Sat, 05 Nov 2016 06:16:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17500/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Такой возможности нет. <br />
			<i>29.07.2016 06:21:15, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17500/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17500/topic1977/</guid>
			<pubDate>Fri, 29 Jul 2016 06:21:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17493/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_wgY4GiBw" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Николай,<br />Тогда понятно почему у нас не воспроизводится проблема.<br />Приведите полный код, на котором проблема повторяется.<br />=============<br /><br />Я разобрался, по-видимому, код работает правильно, просто изначальный процесс создания источников данных занимает очень много времени. Ну и мне пришлось каждому источнику данных уникальное имя через _G[security], иначе в таблицу подгружалась какая-то мешанина.<br /><br />В связи с этим вопрос, можно ли для созданных источников данных не подгружать всю историю (3000 или сколько там свечек), а получать данные только за эту сессию? <br />
			<i>28.07.2016 16:05:28, Николай Кондаков.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17493/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17493/topic1977/</guid>
			<pubDate>Thu, 28 Jul 2016 16:05:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17492/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Николай,<br />Тогда понятно почему у нас не воспроизводится проблема.<br />Приведите полный код, на котором проблема повторяется. <br />
			<i>28.07.2016 14:19:46, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17492/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17492/topic1977/</guid>
			<pubDate>Thu, 28 Jul 2016 14:19:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17491/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qCVnfPLW" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Здравствуйте,<br />Попробуйте добавить обработку в функцию main<br />function main()<br />for class in string.gmatch(classes,"(%w+)") do<br /> local securities = getClassSecurities(class);<br /> for security in string.gmatch(securities,"(%w+)") do<br /> &nbsp;DataSource(class, security);<br /> end<br />end <br />end<br />=============<br /><br />Пробовал не помогает. На самом деле, именно в ней у меня этот фрагмент кода и находится. У меня перед ним еще ряд условий, чтобы скрипт стартовал только раз в день, подключился к базе, обновил список бумаг в базе и т.д. <br />
			<i>28.07.2016 14:12:40, Николай Кондаков.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17491/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17491/topic1977/</guid>
			<pubDate>Thu, 28 Jul 2016 14:12:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17490/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте,<br />Попробуйте добавить обработку в функцию main<br />function main()<br />for class in string.gmatch(classes,"(%w+)") do<br /> local securities = getClassSecurities(class);<br /> for security in string.gmatch(securities,"(%w+)") do<br /> &nbsp;DataSource(class, security);<br /> end<br />end <br />end <br />
			<i>28.07.2016 14:07:23, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17490/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17490/topic1977/</guid>
			<pubDate>Thu, 28 Jul 2016 14:07:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>SetUpdateCallback зависания системы</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17485/topic1977/">SetUpdateCallback зависания системы</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день!<br /><br />Не могли бы вы мне помочь с одной проблемой, уже всю голову себе сломал.<br /><br />Я пытаюсь собирать данные (OHLCV) по двум классам бумаг, чтобы записывать их в локальную базу SQL.<br /><br />Для этого я написал такой код, который, работает на одной-двух бумагах, но при масштабировании на оба класса он вешает QUIK. Не могли бы вы подсказать, что мне сделать, чтобы избежать этих зависаний.<br /><br />
====code====
<pre>classes = "TQBR,TQOB";
interval = INTERVAL_M1;

function MyCallbackForAllStocks(class, security, index)
&nbsp;&nbsp;local candle = index - 1
&nbsp;&nbsp;local Datetime = ds:T(candle).year * 10000000000+ ds:T(candle).month * 100000000 + ds:T(candle).day*100000 + ds:T(candle).hour * 10000 + ds:T(candle).min * 100 + ds:T(candle).sec; --Получаем дату и время последней закрывшейся свечки
&nbsp;&nbsp;local cOpen = ds:O(candle);
&nbsp;&nbsp;local cHigh = ds:H(candle);
&nbsp;&nbsp;local cLow = ds:L(candle);
&nbsp;&nbsp;local cClose = ds:C(candle);
&nbsp;&nbsp;local cVolume = ds:V(candle);
&nbsp;&nbsp;--Затем данные упаковываются в вектор и передаются в SQL базу.
 end
end

--Создаётся обёртка
function DataSource(class,security)
 ds = CreateDataSource(class, security, interval);
 ds:SetUpdateCallback(function(index) MyCallbackForAllStocks(class,security,index) end)
end

--Скрипт запускается единожды вот такой конструкцией:
for class in string.gmatch(classes,"(%w+)") do
 local securities = getClassSecurities(class);
 for security in string.gmatch(securities,"(%w+)") do
&nbsp;&nbsp;DataSource(class, security);
 end
end 
</pre>
=============
<br /><br />Заранее благодарен за любую помощь и идеи. <br />
			<i>28.07.2016 12:22:40, Николай Кондаков.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17485/topic1977/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17485/topic1977/</guid>
			<pubDate>Thu, 28 Jul 2016 12:22:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
