<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: isConnected и пара неприятных моментов]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме isConnected и пара неприятных моментов форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 12 Apr 2026 00:26:51 +0300</pubDate>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49704/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_nV1zkAqS" href="/user/3132/" bx-tooltip-user-id="3132">Nikolay</a> написал:<br />обладай бы мы полной информацией о смысле полученных данных, ошибках сервера (читай больше колбеков) в данный момент<br />=============<br />Так и квик об ошибках сервера вряд ли знает. А биржевую инфу как только увидит, тут же дернет ваш колбек, даже раньше, чем сам инфой попользуется. С тем же клинапом, увидел квик новый идентификатор сессии и дернул OnCleanUp, потом почистил свои таблицы (тут вы ноль и поймали) и стал ждать, чего там нового приедет. Он бы может и рад вам сообщить что-нибудь еще, да сам не знает ничего. То же самое и сервер, ему от биржи приехало что-то, он это упаковал и отправил, он не знает, там еще очередь стоит или это последнее на сегодня и дальше будет только новая сессия в понедельник утром. В плане больше колбеков это да, еще несколько штук не помешало бы, да и существующие если бы чутка иначе работали и кое-какие гарантии давали, было бы удобнее. Тот же клинап если бы гарантировал, что вся предыдущая сессия, как она была сохранена, еще в полном виде имеется, было бы очень здорово. Равно как и после очистки если б что-нибудь дергалось с гарантией, что квик пустой от слова совсем. <br />
			<i>25.10.2020 13:12:26, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49704/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49704/topic5901/</guid>
			<pubDate>Sun, 25 Oct 2020 13:12:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49690/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Все же волновая функция - это про вероятность. У нас же есть пакеты данных и, теоретически, каждый пакет обладает информацией, что он несет. Как накладная на груз.<br />Поэтому мы могли бы понимать, что последнее, что мы получили - это такие-то данные. Либо мы просто ждали бы пакет с таким типом данных, фильтруя другие. Да, мы не знаем последние ли это данные, справедливо. Но и понятие &quot;последние&quot; не применимо здесь. я бы назвал их текущие. Но они бы были не обезличенные.<br />Также пакет мог бы нести данные о смысле этих данных - справочник, очистка таблицы, заполнение таблицы, информация о цене сделки и т.д., и, скорее всего, несет. Часть этого есть в колбеках, но явно недостаточная.<br /><br />А вот с точки зрения времени - да, у нас полная неопределенность. Но, как мне кажется, обладай бы мы полной информацией о смысле полученных данных, ошибках сервера (читай больше колбеков) в данный момент - это было бы не столь критично.<br /><br /><br />В соседней ветке написал про открытие рынка с утра, когда вдруг позиция становится 0, а тут же опять корректная. Т.е. явно идет либо очистка данных (был вызван CleanUp), чтобы далее получить новые, либо некий пакет данных, содержащий неполную, либо &quot;технологическую&quot; информацию, а скрипт в этот момент времени измерил состояние. Я к сожалению не выводил в лог полную таблицу future_client_holding, так бы было ясно что-то: пустая она, неполная и т.д. &nbsp; <br />
			<i>25.10.2020 09:58:11, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49690/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49690/topic5901/</guid>
			<pubDate>Sun, 25 Oct 2020 09:58:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49682/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_KThzFyyt" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Нет атомарности.<br />=============<br />А ее и нет как таковой в реальности. Во-первых, мы, как астрономы, наблюдаем свет давно потухших звезд, только у тех световые годы, а у нас сетевые пинги. Во-вторых, оно все и на бирже не в одно ядро происходит, то есть буквально в неопределенном порядке. Был бы некий лок всей биржи, было бы здорово. Остановил время, осмотрелся, сделал что надо, запустил дальше. Но мы можем только сами создать себе &quot;атомарность&quot; путем сериализации событий и в каждый момент времени считать, что вот эта наша &quot;последовательность восприятия&quot; истинная и есть, учитывая, конечно, все вытекающие. На первый взгляд сериализация ничего не дает, но на самом деле у нас всегда одно конкретное состояние, пусть даже и не отражающее текущую действительность. Без сериализации вместо состояния имеем только его &quot;волновую функцию&quot;. Например, отправили заявку на 100 лотов, сколько исполнено в данный момент? Приехало вроде &quot;исполнено 3&quot;, но это было пинг назад, а может прямо сейчас уже 10, а может и все 100. Заявка Шредингера, ага. На самом деле весь мир таков, мы просто привыкли и не замечаем. Пошел за хлебом, а хлеба нет. Вчера в это время был, и позавчера был, а тут раз и нет. Волновая функция сколлапсировала не там, где обычно. <br />
			<i>24.10.2020 22:17:06, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49682/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49682/topic5901/</guid>
			<pubDate>Sat, 24 Oct 2020 22:17:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49670/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_rtC4hZrJ" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />По второму пункту хотелось бы понять, как избежать постоянных проверок, что информация отсутствует.<br />=============<br />Можно в OnConnected проверить список доступных классов getClassesList() и, если нужный класс ещё не загружен, то не дёргать getSecurityInfo вообще.<br />Но конкретно с бумагой сложнее: информация по бумаге может загрузиться в любой момент без уведомления.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_sNdTEQzq" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Возможно, что при перезагрузке данных в таблицах имеет смысл блокировать запросы к функциям типа getSecurityInfo(), пока они не могут вернуть данные. Пусть скрипты подождут на этой блокировке.<br />=============<br />Вы и сами это можете сделать тупым зацикливанием с постоянной проверкой возвращаемого результата от функции. Но есть вероятность зависнуть тут навсегда. <br />
			<i>24.10.2020 10:23:27, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49670/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49670/topic5901/</guid>
			<pubDate>Sat, 24 Oct 2020 10:23:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49546/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_LFVvUGeA" href="/user/115/" bx-tooltip-user-id="115">_sk_</a>!<br />К сожалению, достоверно понять, что данные актуальны, нельзя. Точно так же, как и понять, что разрыва соединения в момент выполнения той или иной функции не произошло, так как неизвестно в какой именно момент случится то или иное событие (разрыв соединения, авария в торговой системе, отключение шлюза и так далее).<br />Подобные вопросы обсуждались уже неоднократно, например, в этой ветке: <noindex><a href="https://forum.quik.ru/forum10/topic5836/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic5836/</a></noindex> <br />
			<i>20.10.2020 14:46:57, Alexander Kopyatkevich.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49546/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49546/topic5901/</guid>
			<pubDate>Tue, 20 Oct 2020 14:46:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49541/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я понимаю, что нельзя гарантировать, что в терминале есть вся последняя информация с биржи. Но трудно писать код, когда ты проверил в if условие, что всё должно быть хорошо, а после then всё сразу стало плохо (ситуация поменялась). Нет атомарности.<br /><br />Вот и приходится без проверки всяких условий isConnected() делать какой-нибудь getXXX(), а потом проверять заполненность полей таблицы внутри результата, потому, что с очень малой вероятностью &quot;что-то пошло не так&quot;. <br />
			<i>20.10.2020 13:26:20, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49541/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49541/topic5901/</guid>
			<pubDate>Tue, 20 Oct 2020 13:26:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>isConnected и пара неприятных моментов</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message49539/topic5901/">isConnected и пара неприятных моментов</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Может, я что-то не до конца понимаю, и мне кто-нибудь прояснит ситуацию по приведённым ниже пунктам.<br /><br />1) isConnected(), конечно, хорошая функция, но мне кажется, что её корректное использование таково: если она вернула 0, то разработчик может предусмотреть запрет на выполнение каких-то действий в скрипте, поскольку информация в терминале не соответствует действительности (устарела). А вот если isConnected() вернула 1, то это ничего не гарантирует: может, нужные шлюзы ещё не подключены, может информация не до конца загрузилась с сервера. Т.е. мы можем избежать гарантированных ошибок при isConnected() == 0, но не сделать ошибок при &nbsp;isConnected() == 1 эта функция не помогает.<br /><br />2) При разрыве соединения и повторном подключении терминала к серверу в какой-то момент происходит пропадание информации в ТТТ (и других) и её повторное появление. При работе скриптов в момент &quot;пропадания&quot; информации справочные функции типа getSecurityInfo() могут вернуть пустые таблицы. Это приводит к тому, что скрипт, скажем, читает информацию о размере лота, а там его нет. Неприятно.<br /><br />По второму пункту хотелось бы понять, <I>как избежать постоянных проверок, что информация отсутствует</I>. Возможно, что при перезагрузке данных в таблицах имеет смысл блокировать запросы к функциям типа getSecurityInfo(), пока они не могут вернуть данные. Пусть скрипты подождут на этой блокировке.<br /><br />Может кто поделиться своим опытом по данному поводу? Из каких ещё функций, кроме getSecurityInfo(), будут получаться пустые таблицы в моменты перезагрузки данных? Могут ли разработчики прокомментировать это (и отразить в документации, что возвращается, если нет данных)? <br />
			<i>20.10.2020 13:17:54, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message49539/topic5901/</link>
			<guid>http://forum.quik.ru/messages/forum10/message49539/topic5901/</guid>
			<pubDate>Tue, 20 Oct 2020 13:17:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
