<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Получить последний стоп-ордер]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Получить последний стоп-ордер форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 03 Apr 2026 22:29:40 +0300</pubDate>
		<item>
			<title>Получить последний стоп-ордер</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36527/topic1982/">Получить последний стоп-ордер</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Николай, скажите, пожалуйста, какие явные преимущества имеет робот, работающий именно &quot;через&quot; СТОП-приказы? <br />
			<i>22.02.2019 12:03:40, PFelix.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36527/topic1982/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36527/topic1982/</guid>
			<pubDate>Fri, 22 Feb 2019 12:03:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Получить последний стоп-ордер</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17510/topic1982/">Получить последний стоп-ордер</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Опечатка :<br />Этот алгоритм я &nbsp;разработал еще до внедрения VM LUA в КВИК и использовал его в QPILE. <br />
			<i>30.07.2016 07:31:36, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17510/topic1982/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17510/topic1982/</guid>
			<pubDate>Sat, 30 Jul 2016 07:31:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Получить последний стоп-ордер</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17509/topic1982/">Получить последний стоп-ордер</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_eMMtDEP7" href="/user/1311/" bx-tooltip-user-id="1311">WennY</a> написал:<br />Доброго времени суток. Увы, ордера, полученные посредством getItem(&quot;stop_orders&quot;, i) идут по порядку начиная с первого и до последнего. В итоге чтобы получить последний ордер мне нужно как-то получить все стопы, пересчитать их и только затем уже ловить последний из них. Какие-то более цивилизованные методы существуют? Возможно я просто проморгал что-то в ФАКе. Спасибо.<br />=============<br />Есть как минимум два способа решения этой задачи.<br /><B>1) Каждый раз делать полный перебор</B> - поиск по таблице &nbsp;(это Вы написали) - самый простой и самый затратный способ. <br />Самый затратный способ. Особенно, если стопы постоянно переставляются. &nbsp;<br />--------------------------------<br /><B>2) Использование OnStopOrder.</B><br />В этом случае Вы через OnStopOrder. получите новый стоп. <br />Но если запустите свой скрипт повторно при наличии активных &nbsp;стопов, <br />то придется применить способ 1, так как OnStopOrder уже не сработает на существующие и ранее принятые квиком стопы.<br />======================== <br />В том случае, <br />когда Вы не пользуете колбеки &nbsp;(например при создании робота &nbsp;в индикаторе) возможен лишь способ 1 из известных.<br />============================.<br />Рассмотрим мой алгоритм решения данной задачи. Этот алгоритм я разработал еще до внедрения VM LUA в КВИК и использовал его в QLUA. <br />Он в десятки и сотни раз повышает быстродействие роботов , работающих со следящими стопами на тиках.<br />В некоторых случаях без этого алгоритма Ваш робот просто перестанет работать, так как загрузит процессор переборам тысяч мертвых стопов.<br />-------------------------------<br /><B>Пользуйтесь:</B><br />---------------------------------<br /><B>3) &nbsp;Алгоритм Николая Камынина(<noindex><a href="mailto:kamnik@mail.ru" target="_blank" rel="nofollow">kamnik@mail.ru</a></noindex>):</B><br /> Полный перебор таблицы стопов делаем один раз при запуске скрипта. <br />В процессе этого перебора мы запоминаем в таблице (назовем ее списком активных стопов) номера строк активных стопов из таблицы стопов.<br />----------------------------------------<br />Таким образом мы получаем список строк с активными стопами. <br />Если у нас всегда лишь один активный стоп, то в списке будет лишь одна запись.<br />--------------------------------<br />Теперь посмотрим, каким образом мы будем работать дальше.<br />-----------------------------------<br />Чтобы проверить состояние последней стоп заявки мы всегда &nbsp;читаем из таблицы стопов строку по ее номеру в списке.<br />-----------------------------------<br /> Т е полный перебор мы делаем всего один раз при запуске. &nbsp;после этого нет никаких переборов вообще.<br />---------------------- <br />Кроме того, необходимо решить задачу обнаружения выставления новой стоп заявки.<br />---------------------------------------<br />Эта задача решается путем сравнения числа строк таблицы стоп-заявок на предыдущем тике и на текущем.<br />Если выставлена новая заявка, например вместо снятой или передвинутой, то число строк в таблице стоп заявок увеличится и это есть признак что есть новая стоп заявка , а ее номер строки определяется через число строк таблицы.<br />------------------------ <br />Если активных стопов много, то мы периодически &nbsp;проверяем по нашему списку их активность и &nbsp;удаляем из списка неактивные.<br />-----------------------------------<br />Таким образом получаем следующее преимущество перед полным перебором:<br />Как правило &nbsp;роботы &nbsp;со следящими стопами порождают тысячи стоп-заявок, <br />которые все забивается в таблицу стоп-заявок.<br />при полном переборе мы на каждом тике перебираем эти тысячи.<br />В моем алгоритме такой перебор делается лишь при запуске робота.<br />В результате данный алгоритм в десятки и сотни раз быстрее полного перебора.<br />------------------------------------------------<br />На этом лекция на тему: &quot;Как создать умного робота, который никогда не умрет&quot; &nbsp; завершена.<br />--------------------------<br /><B>Всем спасибо, все свободны.</B> <br />
			<i>30.07.2016 07:30:12, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17509/topic1982/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17509/topic1982/</guid>
			<pubDate>Sat, 30 Jul 2016 07:30:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Получить последний стоп-ордер</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17508/topic1982/">Получить последний стоп-ордер</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Не совсем понятна задача: требуется среди имеющихся стопов найти последний или при появлении нового стопа (а он и будет на помент появления последним) как-то на это отреагировать?<br />Если первое - то только так, как вы написали.<br />Если второе - то просто добавить в скрипт обработчик OnStopOrder <br />
			<i>30.07.2016 06:20:02, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17508/topic1982/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17508/topic1982/</guid>
			<pubDate>Sat, 30 Jul 2016 06:20:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Получить последний стоп-ордер</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message17505/topic1982/">Получить последний стоп-ордер</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Доброго времени суток. Увы, ордера, полученные посредством getItem(&quot;stop_orders&quot;, i) идут по порядку начиная с первого и до последнего. В итоге чтобы получить последний ордер мне нужно как-то получить все стопы, пересчитать их и только затем уже ловить последний из них. Какие-то более цивилизованные методы существуют? Возможно я просто проморгал что-то в ФАКе. Спасибо. <br />
			<i>29.07.2016 14:22:28, WennY.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message17505/topic1982/</link>
			<guid>http://forum.quik.ru/messages/forum10/message17505/topic1982/</guid>
			<pubDate>Fri, 29 Jul 2016 14:22:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
