<?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>Thu, 23 Apr 2026 07:47:34 +0300</pubDate>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29951/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_AVittUnO" href="/user/1003/" bx-tooltip-user-id="1003">Алексей Дуванов</a>, <br />В обычном <br />
			<i>22.03.2018 12:37:16, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29951/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29951/topic233/</guid>
			<pubDate>Thu, 22 Mar 2018 12:37:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29950/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Подскажите, пожалуйста.<br />функция &quot;обертка&quot; ,будет исполняться в потоке обратных вызовов или в дополнительном main()? <br />
			<i>22.03.2018 12:35:00, Алексей Дуванов.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29950/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29950/topic233/</guid>
			<pubDate>Thu, 22 Mar 2018 12:35:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message20659/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Михаил, я пытался применить ваш код для работы со многими бумагами, но не вышло.<br /> close_price=ds:C(index) - не расчитывается.<br />Подскажите пожалуйста где ошибка.<br />
====code====
<pre>log="TESTS_ARROW_NEW.log"
f_ticker_list="BRZ6,EDZ6,SiZ6"
is_run=true
ds={}

function mycallbackforallstocks(class,security,index) 
&nbsp;&nbsp; -- Теперь в колбеке нам доступны код и класс инструмента
&nbsp;&nbsp; close_price=ds:C(index)
&nbsp;&nbsp; message(close_price ,1)
&nbsp;&nbsp; -- Также доступны все параметры, которые приходят с колбеком из терминала
&nbsp;&nbsp; xxx = index
end

function DataSource(class,security,interval)
&nbsp;&nbsp; local ds = CreateDataSource(class,security,interval)
&nbsp;&nbsp; ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,...) end)
&nbsp;&nbsp; return ds
end

function main()

for sec in string.gmatch(f_ticker_list,"%w+") do
ds&#91;sec&#93;=DataSource("SPBFUT", tostring(sec),INTERVAL_M1)
end

&nbsp;&nbsp;&nbsp;&nbsp;while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;sleep (10)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end
end</pre>
============= <br />
			<i>01.12.2016 22:37:03, Космонавт.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message20659/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message20659/topic233/</guid>
			<pubDate>Thu, 01 Dec 2016 22:37:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1693/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Понятно, спасибо! <br />
			<i>03.03.2015 19:57:59, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1693/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1693/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:57:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1691/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_uaUho7sb" href="/user/114/" bx-tooltip-user-id="114">Дмитрий</a> пишет: <br />А как же это? Значит, можно и без них?<br /><br />=============<br />Троеточие означает переменное количество аргументов. Можно с ними можно и без них.<br />Я привел пример без троеточий <br />
			<i>03.03.2015 19:44:01, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1691/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1691/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:44:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1690/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_CIpULuF0" href="/user/47/" bx-tooltip-user-id="47">s_mike@rambler.ru</a> пишет: <br />Троеточия - часть синтаксиса Lua<br /><br />=============<br />А как же это? Значит, можно и без них? <br />
			<i>03.03.2015 19:35:09, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1690/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1690/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:35:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1689/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			пример функции от Михаила<br /><br />
====code====
<pre>
function mycallbackforallstocks(index,class,security) 
&nbsp;&nbsp; message(tostring(index).. " " ..class .. " " .. security,1)
end

function DataSource(class,security,interval)
&nbsp;&nbsp; local ds = CreateDataSource(class,security,interval)
&nbsp;&nbsp; ds:SetUpdateCallback(function(index) mycallbackforallstocks(index,class,security) end)
&nbsp;&nbsp; return ds
end

function main()
DataSource("TQBR","LKOH",INTERVAL_TICK)
&nbsp;&nbsp;&nbsp;while not_stopped do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>03.03.2015 19:21:32, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1689/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1689/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:21:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1686/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А если в приведенном примере внутри функции mycallbackforallstocks мне нужно получить номер изменившейся свечки, то нужно добавить в ее описание третий параметр index ?<br /><br />
====code====
<pre>function mycallbackforallstocks(class,security,index,...) 
&nbsp;&nbsp; message(class .. " " .. security .. " - " .. tostring(index), 1)
end

ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,index,...) end) </pre>
============= <br />
			<i>03.03.2015 19:11:24, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1686/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1686/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:11:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1684/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ничего не надо исправлять. Троеточия - часть синтаксиса Lua <br />
			<i>03.03.2015 19:04:39, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1684/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1684/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:04:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1683/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_mI54HRWH" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Но так как действия будут производиться одни и те же, будет удобней создать одну функцию, а через колбеки просто ее вызывать<br /><br />=============<br />Проблема в том, что эта функция должна как-то узнать, источником данных по какому инструменту (и таймфрейму) в данный момент она была вызвана.<br /><br /><br /><noindex><a href="http://forum.quik.ru/user/47/" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex>, спасибо за подсказку.<br />Только я не совсем понял, в приведенном ниже коде должны быть именно троеточия или на их месте должно стоять что-то другое:<br /><br />
====code====
<pre>function mycallbackforallstocks(class,security,...) 
&nbsp;&nbsp; message(class .. " " .. security,1)
end

function DataSource(class,security,interval)
&nbsp;&nbsp; local ds = CreateDataSource(class,security,interval)
&nbsp;&nbsp; ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,...) end)
&nbsp;&nbsp; return ds
end
</pre>
============= <br />
			<i>03.03.2015 19:02:56, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1683/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1683/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 19:02:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1678/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="http://www.bot4sale.ru/blog-menu/qlua/spisok-statej/379-1-collback-for-al-ds.html" target="_blank" rel="nofollow">http://www.bot4sale.ru/blog-menu/qlua/spisok-statej/379-1-collback-for-al-ds.html</a></noindex> <br />
			<i>03.03.2015 18:09:03, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1678/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1678/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 18:09:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1676/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте,<br />Для каждого источника нужно задать свою функцию через SetUpdateCallback.<br />Но так как действия будут производиться одни и те же, будет удобней создать одну функцию, а через колбеки просто ее вызывать <br />
			<i>03.03.2015 17:28:30, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1676/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1676/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 17:28:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>функция обратного вызова для SetUpdateCallback()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message1672/topic233/">функция обратного вызова для SetUpdateCallback()</a></b> <i>как понять, по какому инструменту она сработала?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте!<br />Если я использую одинаковые действия в функциях обратного вызова, заданных с помощью SetUpdateCallback() для разных источников данных, но внутри этих функций необходимо учитывать, по какому инструменту произошло обновление свечи (и, возможно, на каком таймфрейме), то есть ли способ использовать одну и ту же функцию для разных источников данных по разным инструментам?<br />Или же нужно создавать отдельные экземпляры однотипных функций для каждого источника данных с жестко прописанными внутри кодами инструментов и таймфреймов? <br />
			<i>03.03.2015 14:46:52, Дмитрий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message1672/topic233/</link>
			<guid>http://forum.quik.ru/messages/forum10/message1672/topic233/</guid>
			<pubDate>Tue, 03 Mar 2015 14:46:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
