<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=414&amp;type=atom" />
	<updated>2022-10-20T17:44:07Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=414</id>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3874#p3874" />
			<content type="html"><![CDATA[<p>Все удалось победить, вот итоговый код:</p><div class="codebox"><pre><code>----------------------------------------------------------------------------------------------------
function my_callback_CreateDataSource_HISTORY_1(my_table_data_history_candle_, code_class_, code_paper_, interval_, interval_string_)

message(&quot;SIZE_TABLE:&quot; ..tostring(my_table_data_history_candle_:Size()) .. &quot;\n&quot; .. &quot;:&quot; ..  code_paper_ ..&quot;:&quot; .. interval_string_ ..&quot;:&quot; ..my_int_1)

    if code_paper_ == &quot;SBER&quot; then

    message(&quot;SBER_CLOSE&quot;)
    my_table_data_history_candle_:Close()     --Сразу отпусываемся от callback`а SBER. //callback Газпрома продолжает приходить. 

     end



end
----------------------------------------------------------------------------------------------------





------------------------------------------------int main:---------------------------------------------------

function main()


local code_class_1= &quot;TQBR&quot;          
local code_paper_1= &quot;GAZP&quot;           
local intervakla_1= INTERVAL_MN1
local intervakla_string_1 = &quot;INTERVAL_MN1&quot;



local my_table_1, error_desc_1 = CreateDataSource(code_class_1, code_paper_1, intervakla_1)  


------------------------Проверка на ошибки:-------------------
if error_desc_1 ~= nil then 
message(&quot;1:&quot; .. error_desc_1)
end
--------------------------------------------------------------

my_table_1:SetUpdateCallback(function(idx)my_callback_CreateDataSource_HISTORY_1(my_table_1, code_class_1, code_paper_1, intervakla_1, intervakla_string_1) end)






local code_class_1= &quot;TQBR&quot;          
local code_paper_1= &quot;SBER&quot;           
local intervakla_1= INTERVAL_W1
local intervakla_string_1 = &quot;INTERVAL_W1&quot;


local my_table_2, error_desc_2 = CreateDataSource(code_class_1, code_paper_1, intervakla_1) 

------------------------Проверка на ошибки:-------------------
if error_desc_2 ~= nil then 
message(&quot;2:&quot; .. error_desc_2)
end
--------------------------------------------------------------


my_table_2:SetUpdateCallback(function(idx)my_callback_CreateDataSource_HISTORY_1(my_table_2, code_class_1, code_paper_1, intervakla_1, intervakla_string_1) end)





-------------------------
while not stopped do 
sleep(1)
end 
-------------------------



end -- end main()</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T17:44:07Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3874#p3874</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3873#p3873" />
			<content type="html"><![CDATA[<p>Так в чем беда-то была?</p><p>Одну callback-функцию удается использовать на много заказов?<br />Отписка все равно происходит по одному инструменту везде, если с разными интервалами его заказывать? или это тоже удалось победить?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T17:16:54Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3873#p3873</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3872#p3872" />
			<content type="html"><![CDATA[<p>Все, путем подбора разобрался.<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T17:09:29Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3872#p3872</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3871#p3871" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>Если для двух разных инструментов в&nbsp; SetUpdateCallbackcallback - указываю одну и ту же callback-функию, она перезаписывает предыдущий заказ.</p></blockquote></div><p>Как-то сомнительно это звучит. Либо замыкания не замыкания.</p><p>Надо воспроизводить, разбираться. Будет как-нибудь время - попробую. Теоретизировать бесполезно.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T16:36:08Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3871#p3871</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3870#p3870" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Так когда проблема починилась?<br />Когда от замыкания отказались или когда на разные инструменты подписка оформлена?</p></blockquote></div><p>Замыкание оставил, когда два разных инструмента заказал с двумя разными колбек-функиями.<br />Если для двух разных инструментов в&nbsp; SetUpdateCallbackcallback - указываю одну и ту же callback-функию, она перезаписывает предыдущий заказ.</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T15:07:46Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3870#p3870</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3869#p3869" />
			<content type="html"><![CDATA[<p>Так когда проблема починилась?<br />Когда от замыкания отказались или когда на разные инструменты подписка оформлена?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T15:06:02Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3869#p3869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3868#p3868" />
			<content type="html"><![CDATA[<p>Заработало, видимо действительно было связано с тем, что для одного и того же инструмент хоть и для разных интервалов - вызов Close - отписывает сразу весь инструмент целиков в не зависимости от интервалов.</p><p>Но, теперь появилась другая проблема. Если я хочу заказать callback`и по 100 разным акциям - мне, что нужно писать имена для 100 разных callback`ов ? Потому что если указать для всех вызовов SetUpdateCallbackcallback&nbsp; - одну и туже callback-функцию, то идет &quot;перезапись&quot; акции.</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T13:44:06Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3868#p3868</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3867#p3867" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Я к тому, что может тут что-то с замыканиями путается не туда.</p></blockquote></div><p>Да, но, как я тогда узнаю, для какого объекта CreateDataSource вызвался колбек, в колбек по умолчанию приходит только номер свечи.</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T13:02:57Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3867#p3867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3866#p3866" />
			<content type="html"><![CDATA[<p>Попробуйте сделать отписку за пределами callback&#039;а. Может в этом беда?</p><p>И еще.<br />Перепишете этот тестовый код проще. Вот этот модельный код. Так, чтобы я нем не было вот этих вот замыканий. Просто назначьте нормальную функцию в качестве callback&#039;а. Вам для именно данного эксперимента замыкания совершенно не требуются, можно вызывать :close()&nbsp; прямо на нужном dataset&#039;е, все равно у вас две разные функции для&nbsp; callback&#039;ов в данном примере.<br />Я к тому, что может тут что-то с замыканиями путается не туда.</p><p>Еще вариант: в приведенном примере вы подписываетесь на разные интервалы одного инструмента. Может именно в таком стечении обстоятельств в терминале баг? попробуйте сделать подписку на 2 разных инструмента и повторите эксперимент.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T12:16:33Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3866#p3866</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3865#p3865" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>НО отписка осуществляется и для таблицы my_table_1</p></blockquote></div><p>А как вы это определили?<br />А если <strong>убрать</strong> вызовы :<strong>close </strong> из callbac&#039;ов - точно оба callbac&#039;а будут вызываться? (возможно много раз, но главное оба или нет)</p><p>Практического смысла задачи я не понимаю совсем.<br />Получить параметры одной единственной какой-то самой старой свечи - и все? зачем?</p></blockquote></div><p>Если я убираю Close - то вызываются оба callback`а.<br />Практические применение банальное: предположим я заказал колбеки на изменение цены для 100 акций, и в какой то момент - мне больше не нужно получать изменение цены к примеру по Газпрому. Я вызываю Close для обьекта Газпрома - но происходит отписка и от остальных 99 акций.</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T08:49:04Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3865#p3865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3864#p3864" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>НО отписка осуществляется и для таблицы my_table_1</p></blockquote></div><p>А как вы это определили?<br />А если <strong>убрать</strong> вызовы :<strong>close </strong> из callbac&#039;ов - точно оба callbac&#039;а будут вызываться? (возможно много раз, но главное оба или нет)</p><p>Практического смысла задачи я не понимаю совсем.<br />Получить параметры одной единственной какой-то самой старой свечи - и все? зачем?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T08:38:46Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3864#p3864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3863#p3863" />
			<content type="html"><![CDATA[<p>Сорри, что-то я уже совсем специфически всё читаю <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T08:22:43Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3863#p3863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3862#p3862" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>При этом вашу идею, которую вы хотите реализовать, на основании этого С++ кода я лично никак не могу понять. Смотрел тему уже несколько раз, но увы. Потому и ответов нет.</p></blockquote></div><p>Разве там есть С++ код ? <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T08:20:58Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3862#p3862</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3861#p3861" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Предлагаю обсуждать эту общую проблему на примере Lua-кода, демонстрирующего такую же проблему.<br />Если у вас есть Lua-код, где происходит тоже самое - приведите его. Возможно окажется, что это просто ошибка терминала.<br />.</p></blockquote></div><p>Этот код в самом пером сообщении. Это чисто Lua код - без с++.</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-20T08:19:54Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3861#p3861</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3860#p3860" />
			<content type="html"><![CDATA[<p>Предлагаю обсуждать эту общую проблему на примере Lua-кода, демонстрирующего такую же проблему.<br />Если у вас есть Lua-код, где происходит тоже самое - приведите его. Возможно окажется, что это просто ошибка терминала.</p><p>Объясню. Возможны два варианта:<br />1) Ошибка в Lua API терминала<br />2) Ошибка в переложении кода Lua на С++.</p><p>Если первое - то тут уже ничем не поможешь, только ждать исправления от разработчиков либо модифицировать код так, чтобы он работал.<br />Если второе - то имея перед глазами корректно работающий Lua-код проще будет найти ошибку в переложении.</p><p>Копаться в С++ коде, тем более в котором вы весьма творчески используете вызовы Lua-API - слишком бесперспективное занятие.<br />При этом вашу идею, которую вы хотите реализовать, на основании этого С++ кода я лично никак не могу понять. Смотрел тему уже несколько раз, но увы. Потому и ответов нет.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-10-20T08:00:44Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3860#p3860</id>
		</entry>
</feed>
