<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Использование Subscribe_Level_II_Quotes]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Использование Subscribe_Level_II_Quotes форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 01:33:41 +0300</pubDate>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3331/topic398/">Использование Subscribe_Level_II_Quotes</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_u6rjFMDO" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />и вопрос про функцию Subscribe_Level_II_Quotes по моему мнению тоже резонный.<br /><br />=============<br />На вопрос где лучше использовать Subscribe_Level_II_Quotes у нас нет и не может быть ответа.<br />Так как этот вопрос зависит от Вашего видения работы программы. <br />Можно даже сказать от Вашего вкуса. <br />
			<i>14.04.2015 13:33:38, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3331/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3331/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 13:33:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3330/topic398/">Использование Subscribe_Level_II_Quotes</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_dNA5odh7" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />но тогда все еще не понятен вопрос, как именно ОСТАНОВИТЬ выполнение скрипта. вот как через меню "Доступные скрипты" - Остановить.<br /><br />=============<br />Чтобы остановить работу скрипта, нужно остановить работу всех функций и циклов этого скрипта. <br />Пример уже был дан. <br />
			<i>14.04.2015 13:30:14, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3330/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3330/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 13:30:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3329/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			так у меня вопросы касаются работы именно в сочетании с quik. <br />с break понятно. <br />но тогда все еще не понятен вопрос, как именно ОСТАНОВИТЬ выполнение скрипта. вот как через меню "Доступные скрипты" - Остановить.<br />и вопрос про функцию Subscribe_Level_II_Quotes по моему мнению тоже резонный.<br />спасибо за разьяснения, но вроде вопросов все больше и больше. буду пробовать допиливать. <br />
			<i>14.04.2015 13:26:35, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3329/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3329/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 13:26:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3328/topic398/">Использование Subscribe_Level_II_Quotes</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_mbEhOXvr" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />Спасибо. что-то проясняется.<br />например найден BREAK. но так как документация скудная, появился следующий вопрос.<br /><br />=============<br />По поводу документации объясняю.<br />Язык LUA придумали НЕ мы. <br />Мы взяли готовый язык и добавили в него несколько наших функций.<br />Поэтому в НАШЕЙ документации только НАШИ функции.<br />Все функции которые являются стандартными для языка LUA описаны в документации на язык LUA, которая есть в интернете:<br /><noindex><a href="http://www.lua.org/docs.html" target="_blank" rel="nofollow">http://www.lua.org/docs.html</a></noindex><br /><br />BREAK приводит к выходу из цикла. Подробнее в документации на LUA <br />
			<i>14.04.2015 12:55:59, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3328/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3328/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:55:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3327/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо. что-то проясняется.<br />например найден BREAK. но так как документация скудная, появился следующий вопрос.<br />после BREAK не выполнится функция OnStop(), я правильно понимаю? <br />
			<i>14.04.2015 12:50:21, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3327/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3327/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:50:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3326/topic398/">Использование Subscribe_Level_II_Quotes</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_aolr8Sit" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />может мне проще Subscribe_Level_II_Quotes использовать в функции OnInit()?<br /><br />=============<br />На Ваше усмотрение <br />
			<i>14.04.2015 12:37:34, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3326/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3326/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:37:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3325/topic398/">Использование Subscribe_Level_II_Quotes</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_WhwXjMzz" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />дело в том, что не понятно как работает функция Subscribe_Level_II_Quotes:<br /><br />=============<br />вызов Subscribe_Level_II_Quotes аналогичен открытию стакана в терминале QUIK.<br />Без открытия стакана данные в него не поступают. Соответственно OnQuote и getQuoteLevel2 работать не будут<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_XFgTQht3" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />в этой функции я могу пометить is_run как false и не обрабатывать в main, но скрипт все еще будет запущен. <br /><br />=============<br />Это значит что Вы не понимаете как работает IsWindowClosed<br />Напишите в функции Quotes так:<br /><br />
====code====
<pre>
function Quotes(code)
&nbsp;&nbsp; sleep(150)
&nbsp;&nbsp; for i=1, shares_count do
&nbsp;&nbsp;&nbsp; if IsWindowClosed(t) then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_run=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break 
&nbsp;&nbsp;&nbsp; end
--остальной код
 </pre>
============= <br />
			<i>14.04.2015 12:37:02, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3325/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3325/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:37:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3324/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			плохо, что нельзя свое сообщение редактировать. приходится добавлять.<br />может мне проще Subscribe_Level_II_Quotes использовать в функции OnInit()? <br />
			<i>14.04.2015 12:19:36, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3324/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3324/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:19:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3323/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ошибка тут: <br /><br />delta=(tonumber(price_max)/closeprice-1)*100<br /><br /><br />Ошибка плавающая. иногда сразу выскакивает, иногда через час.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_1iuDdWMD" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Вы программист, Вам решать какую логику использовать.<br /><br />=============<br />дело в том, что не понятно как работает функция Subscribe_Level_II_Quotes:<br />1. запрашиваем стакан по тикету. получаем единоразово стакан и обрабатываем через getQuoteLevel2<br />2. помечаем стакан тикета на отслеживание изменений. отслеживаем изменения стакана через OnQuote.обрабатываем через getQuoteLevel2.<br />скуповата документация.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Kdwnt8vV" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Да, используйте для этого условие на функцию IsWindowClosed<br /><br />=============<br />в этой функции я могу пометить is_run как false и не обрабатывать в main, но скрипт все еще будет запущен. <br />а мне надо остановить его в коде, как через меню "Остановить". скрипт выполнил расчет, нужный тикет мне показал через message и остановился. <br />
			<i>14.04.2015 12:16:43, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3323/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3323/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:16:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3322/topic398/">Использование Subscribe_Level_II_Quotes</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_36AueSDn" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />
====code====
<pre> for bid_i=1, bid_count, 1 do
&nbsp;&nbsp; bid_quantity = tonumber( bid&#91;bid_i&#93;&#91;"quantity"&#93; )
&nbsp;&nbsp; if (bid_quantity &#62; max_bid_count) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_count = bid_quantity
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_price = bid&#91;bid_i&#93;&#91;"price"&#93;
&nbsp;&nbsp; end
end&nbsp;&nbsp;</pre>
=============
почему я тут могу получить NIL? или если у меня не загрузится стакан, то как раз поэтому у меня NIL и выходит?<br /><br />=============<br />У нас не воспроизводится.<br />Приведите полный текст ошибки.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_HAWAlML3" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />и что по поводу логики подскажете<br /><br />====quote====<br /> Eldar пишет: <br />получается что обычно OnQuote работает с открытыми стаканами, но через Subscribe_Level_II_Quotes я подписываюсь на изменения. <br />то есть в первом цикле делаю Subscribe_Level_II_Quotesпо всем тикетам, а потом отрабатываю через OnQuote (а внутри через getQuoteLevel2) ? <br />второй цикл не нужен, так как изменить данные нужной строки таблицы вывода я могу через SetCell, где ключем будет код бумаги.<br /><br />=============<br /><br />=============<br />Вы программист, Вам решать какую логику использовать. <br />
			<i>14.04.2015 12:06:26, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3322/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3322/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 12:06:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3321/topic398/">Использование Subscribe_Level_II_Quotes</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_EaDyjmhd" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Выложите полный текст скрипта.<br /><br />=============<br />
====code====
<pre>--константы
data_file = "s_test.txt"&nbsp;&nbsp;&nbsp;--путь к файлу со списком акций и кодов классов

--переменные скрипта
is_run = true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--Режим работы скрипта, работает или остановлен
shares = {}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--Список акций
shares_count = 0&nbsp;&nbsp;&nbsp;--Количество акций
table_data = nil&nbsp;&nbsp;&nbsp;--Данные для визуальной таблицы
class_code = "TQBR"&nbsp;&nbsp;&nbsp;&nbsp; --Код классов
t = nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--Указатель на визуальную таблицу


--Дополнительый поток
function main()
&nbsp;&nbsp;&nbsp;while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for key, value in spairs(shares) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subscribe_Level_II_Quotes(class_code, key)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quotes(key)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end

function OnInit(quik_path)
&nbsp;&nbsp;&nbsp;--читаем из файла акции и коды классов
&nbsp;&nbsp;&nbsp;for line in io.lines(getScriptPath() .. "&#92;&#92;" .. data_file) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos = string.len(line)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;share = string.sub(line, 0, pos)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;share_item = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;share_item&#91;"class"&#93; = class_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shares&#91;share&#93; = share_item
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shares_count = shares_count + 1
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;table.sort(shares)

&nbsp;&nbsp;&nbsp;--содержимое таблицы&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;table_data = {}


&nbsp;&nbsp;&nbsp;--Создаем структуру, описывающую таблицу
&nbsp;&nbsp;&nbsp;t = AllocTable()

&nbsp;&nbsp;&nbsp;--столбцы
&nbsp;&nbsp;&nbsp;AddColumn(t, 1, "Ticker", true, QTABLE_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;AddColumn(t, 2, "Count Bid", true, QTABLE_INT_TYPE, 10)
&nbsp;&nbsp;&nbsp;AddColumn(t, 3, "Bid Price", true, QTABLE_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;AddColumn(t, 4, "Count Ask", true, QTABLE_INT_TYPE, 10)
&nbsp;&nbsp;&nbsp;AddColumn(t, 5, "Ask Price", true, QTABLE_STRING_TYPE, 10)
&nbsp;&nbsp;&nbsp;AddColumn(t, 6, "Delta", true, QTABLE_STRING_TYPE, 10)

&nbsp;&nbsp;&nbsp;CreateWindow(t)
&nbsp;&nbsp;&nbsp;SetWindowCaption(t, "Price_Delta")
&nbsp;&nbsp;&nbsp;SetWindowPos(t, 200, 200, 500, 600)

&nbsp;&nbsp;&nbsp;for i=1, shares_count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(t, -1)
&nbsp;&nbsp;&nbsp;end
 
&nbsp;&nbsp;&nbsp;i = 0

&nbsp;&nbsp;&nbsp;-- заполняем таблицу используя сортировку по ключам
&nbsp;&nbsp;&nbsp;for key, value in spairs(shares) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec_code = key
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 1, tostring(sec_code))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 1, RGB(150, 150, 150), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;end
end


function OnStop()
&nbsp;&nbsp;&nbsp;is_run = false
&nbsp;&nbsp;&nbsp;for key, value in spairs(shares) do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unsubscribe_Level_II_Quotes(class_code, key)
&nbsp;&nbsp;&nbsp;end
end

function Quotes(code)
&nbsp;&nbsp;&nbsp;sleep(150)
&nbsp;&nbsp;&nbsp;for i=1, shares_count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local row = GetCell(t, i, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row_sec = tostring(row&#91;"image"&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (row_sec == code) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q = getQuoteLevel2(class_code, code)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bid_count = tonumber(q&#91;"bid_count"&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ask_count = tonumber(q&#91;"offer_count"&#93;)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bid = q&#91;"bid"&#93;&nbsp;&nbsp;&nbsp;--покупатели
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ask = q&#91;"offer"&#93;&nbsp;&nbsp;&nbsp;--продавцы
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_count = 0&nbsp;&nbsp;&nbsp;--количество лотов (максимальный спрос)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_ask_count = 0&nbsp;&nbsp;&nbsp;--количество лотов (максимальное предложение)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_price = ""&nbsp;&nbsp;&nbsp;--цена максимального спроса
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_ask_price = ""&nbsp;&nbsp;&nbsp;--цена максимального предложения


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--перебираем всех покупателей и находим самый большой объем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ii=1, bid_count, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bid_quantity = tonumber( bid&#91;ii&#93;&#91;"quantity"&#93; )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (bid_quantity &#62; max_bid_count) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_count = bid_quantity
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_price = bid&#91;ii&#93;&#91;"price"&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--перебираем всех продавцов находим самый большой объем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ii=1, ask_count, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ask_quantity = tonumber( ask&#91;ii&#93;&#91;"quantity"&#93; )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ask_quantity &#62; max_ask_count) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_ask_count = ask_quantity
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_ask_price = ask&#91;ii&#93;&#91;"price"&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 2, tostring(max_bid_count))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 2, RGB(50, 250, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 3, tostring(max_bid_price))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 3, RGB(50, 250, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 4, tostring(max_ask_count))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 4, RGB(250, 50, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 5, tostring(max_ask_price))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 5, RGB(250, 50, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (max_ask_count&#62;max_bid_count) then&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price_max=max_ask_price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 2, "")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 2, RGB(255, 255, 255), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 3, "")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 3, RGB(255, 255, 255), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif (max_ask_count&#60;max_bid_count) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price_max=max_bid_price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 4, "")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 4, RGB(255, 255, 255), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 5, "")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 5, RGB(255, 255, 255), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price_max=max_bid_price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closeprice=tonumber(getParamEx(class_code, code,"last").param_value)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (closeprice==0) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta=(tonumber(price_max)/closeprice-1)*100
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t, i, 6, apply_scale(delta,2))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if delta&#62;=2 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 6, RGB(50, 250, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif delta&#60;=-2 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 6, RGB(250, 50, 50), QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(t, i, 6, RGB(255, 255, 255), QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;
end
 </pre>
=============
<br />ну как-то так<br />и что по поводу логики подскажете<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_fx8GWTYg" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />получается что обычно OnQuote работает с открытыми стаканами, но через Subscribe_Level_II_Quotes я подписываюсь на изменения. <br />то есть в первом цикле делаю Subscribe_Level_II_Quotesпо всем тикетам, а потом отрабатываю через OnQuote (а внутри через getQuoteLevel2) ? <br />второй цикл не нужен, так как изменить данные нужной строки таблицы вывода я могу через SetCell, где ключем будет код бумаги.<br /><br />=============<br /> <br />
			<i>14.04.2015 10:47:10, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3321/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3321/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 10:47:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3318/topic398/">Использование Subscribe_Level_II_Quotes</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_Ii2HXgT5" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />почему я тут могу получить NIL? или если у меня не загрузится стакан, то как раз поэтому у меня NIL и выходит?<br /><br />=============<br />Выложите полный текст скрипта. <br />
			<i>14.04.2015 10:13:48, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3318/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3318/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 10:13:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3317/topic398/">Использование Subscribe_Level_II_Quotes</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_6Y5mhi3q" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />вопрос немного у другую тему - а могу я автоматически стопануть скрипт, если закрыто окно с таблицей вывода?<br /><br />=============<br />Да, используйте для этого условие на функцию IsWindowClosed <br />
			<i>14.04.2015 10:13:21, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3317/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3317/topic398/</guid>
			<pubDate>Tue, 14 Apr 2015 10:13:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3308/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			вопрос немного у другую тему - а могу я автоматически стопануть скрипт, если закрыто окно с таблицей вывода? <br />
			<i>13.04.2015 20:52:11, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3308/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3308/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 20:52:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3307/topic398/">Использование Subscribe_Level_II_Quotes</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_VSm7k5zX" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Тогда уберите getQuoteLevel2 и все что с ним связано из второго цикла. Ее достаточно взять 1 раз перед циклом &quot;for i=1, 30 do&quot;<br /><br />=============<br />но мне надо получать данные стакана регулярно, а не только один раз. <br />плюс все же тут не весь код. <br />мне надо понять логику. <br />получается что обычно OnQuote работает с открытыми стаканами, но через Subscribe_Level_II_Quotes я подписываюсь на изменения. <br />то есть в первом цикле делаю Subscribe_Level_II_Quotesпо всем тикетам, а потом отрабатываю через OnQuote (а внутри через getQuoteLevel2) ? <br />второй цикл не нужен, так как изменить данные нужной строки таблицы вывода я могу через SetCell, где ключем будет код бумаги.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_T1LvkMTX" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />То есть ограничить просмотр строк в стакане количеством этих строк.<br />Для этого надо использовать параметры &quot;bid_count&quot; и &quot;offer_count&quot;<br /><br />=============<br />каким образом? я получаю таблицу через getQuoteLevel2. потом получаю таблицу BID и OFFER <br /><br />
====code====
<pre>bid_count = tonumber(q&#91;"bid_count"&#93;)
ask_count = tonumber(q&#91;"offer_count"&#93;)
bid = q&#91;"bid"&#93;
ask = q&#91;"offer"&#93;</pre>
=============
и перебираю данные в <br /><br />
====code====
<pre>for bid_i=1, bid_count, 1 do
&nbsp;&nbsp;&nbsp;bid_quantity = tonumber( bid&#91;bid_i&#93;&#91;"quantity"&#93; )
&nbsp;&nbsp;&nbsp;if (bid_quantity &#62; max_bid_count) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_count = bid_quantity
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_bid_price = bid&#91;bid_i&#93;&#91;"price"&#93;
&nbsp;&nbsp;&nbsp;end
end </pre>
=============
почему я тут могу получить NIL? или если у меня не загрузится стакан, то как раз поэтому у меня NIL и выходит? <br />
			<i>13.04.2015 20:50:30, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3307/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3307/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 20:50:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3303/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1) на любой взгляд этот цикл "for i=1, 30 do" лишний.<br /><br />2) Если надо делать такое лишь один раз в сессию то можно и так, <br />но если это делается всю сессию, <br />то надо ставить колбек OnQuote(STRING class_code, STRING sec_code). &nbsp; <br />
			<i>13.04.2015 19:42:17, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3303/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3303/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 19:42:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3302/topic398/">Использование Subscribe_Level_II_Quotes</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_tC5yN786" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />второй цикл - это внесение изменений в таблицу.<br /><br />=============<br />У вас в цикле "for i=1, 30 do" нигде не используется переменная-счётчик i. Отсюда, на первый взгляд, в этом цикле вы делаете 30 раз одни и те же действия. &nbsp; <br />
			<i>13.04.2015 19:07:18, Серж.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3302/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3302/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 19:07:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3299/topic398/">Использование Subscribe_Level_II_Quotes</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_8G0TyDT9" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />второй цикл - это внесение изменений в таблицу.<br /><br />=============<br />Тогда уберите getQuoteLevel2 и все что с ним связано из второго цикла. Ее достаточно взять 1 раз перед циклом "for i=1, 30 do" <br />
			<i>13.04.2015 18:56:47, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3299/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3299/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:56:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3298/topic398/">Использование Subscribe_Level_II_Quotes</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_sq9YKWLX" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Далее, для каждой из этих бумаг Вы вызываете функцию Quotes в которой вызываете цикл "for i=1, 30 do"<br />Таким образом, если в таблице "tikets" у Вас 30 бумаг, то в общем случае, за одну итерацию, цикл "for i=1, 30 do" приведет к тому что функции внутри него будут вызваны 30*30=900 раз.<br />Конечно, сложно судить не видя полного кода, но на мой взгляд 900 раз вызывать одни и те же функции совершенно излишне.<br /><br />=============<br />первый цикл - это запрос стаканов по бумагам.<br />второй цикл - это внесение изменений в таблицу. <br />
			<i>13.04.2015 18:53:50, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3298/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3298/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:53:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3297/topic398/">Использование Subscribe_Level_II_Quotes</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_tckpWrFO" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />мне Subscribe_Level_II_Quotes запросить один раз на каждую бумагу в отдельном цикле?а потом получать стакан по getQuoteLevel2?<br /><br />=============<br />Да, так будет оптимальней. Повторные вызовы Subscribe_Level_II_Quotes абсолютно лишние. <br />
			<i>13.04.2015 18:48:52, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3297/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3297/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:48:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3296/topic398/">Использование Subscribe_Level_II_Quotes</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_xZfbRfQf" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br /><br />====quote====<br /> Sergey Gorokhov пишет: <br />Вынесите Subscribe_Level_II_Quotes в отдельный цикл, перед строкой &quot;while is_run do&quot; заказывать постоянно одни и те же стаканы нет смысла. Плюс, сам цикл &quot;for i=1, 30 doсовершенно не понятен. Зачем он? <br /><br />=============<br />мне надо запросить объемы в стаканах по 30 бумагам.<br />мне Subscribe_Level_II_Quotes запросить один раз на каждую бумагу в отдельном цикле?а потом получать стакан по getQuoteLevel2?<br /><br /><br />=============<br />Посмотрите код внимательней.<br /><br />Вот Вы гоняете в цикле все бумаги по очереди:<br />
====code====
<pre>for key, value in spairs(tikets) do</pre>
=============
<br /><br />Далее, для каждой из этих бумаг Вы вызываете функцию Quotes в которой вызываете цикл &quot;for i=1, 30 do&quot;<br />Таким образом, если в таблице &quot;tikets&quot; у Вас 30 бумаг, то в общем случае, за одну итерацию, цикл &quot;for i=1, 30 do&quot; приведет к тому что функции внутри него будут вызваны 30*30=900 раз.<br />Конечно, сложно судить не видя полного кода, но на мой взгляд 900 раз вызывать одни и те же функции совершенно излишне.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Iw6DViLY" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет:<br /><br />то есть ставить условие <br /><br />=============<br /><br />То есть ограничить просмотр строк в стакане количеством этих строк.<br />Для этого надо использовать параметры &quot;bid_count&quot; и &quot;offer_count&quot; <br />
			<i>13.04.2015 18:46:58, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3296/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3296/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:46:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3295/topic398/">Использование Subscribe_Level_II_Quotes</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_prcgYTI4" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br /><br />====quote====<br /> Eldar пишет: <br />поломался код<br /><br />=============<br />Какую ошибку пишет?<br /><br />=============<br />это по форуму. код нечитабельный стал. не вставился тег CODE. может у меня глюк.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_aLQhEzPE" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Вынесите Subscribe_Level_II_Quotes в отдельный цикл, перед строкой &quot;while is_run do&quot; заказывать постоянно одни и те же стаканы нет смысла. Плюс, сам цикл &quot;for i=1, 30 doсовершенно не понятен. Зачем он? <br /><br />=============<br />мне надо запросить объемы в стаканах по 30 бумагам.<br />мне Subscribe_Level_II_Quotes запросить один раз на каждую бумагу в отдельном цикле? &nbsp;а потом получать стакан по getQuoteLevel2?<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_14hDU4F7" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> пишет: <br />Тут проще, если стакан не полный, то при обращении к пустой строке стакана функция выдаст nil, отсюда и ошибка.<br /><br />=============<br />то есть ставить условие <br /><br />
====code====
<pre> if (max_bid_price~=nil) or (max_bid_price==0) then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta==0
</pre>
=============
долго, потому что наверно в цикле делаю Subscribe_Level_II_Quotes, потом иду обрабатывать данные. но попробую уменьшить количество окон и почистить код <br />
			<i>13.04.2015 18:30:47, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3295/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3295/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:30:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3293/topic398/">Использование Subscribe_Level_II_Quotes</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_u4FiGroR" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />поломался код<br /><br />=============<br />Какую ошибку пишет? <br />
			<i>13.04.2015 18:17:59, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3293/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3293/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:17:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3292/topic398/">Использование Subscribe_Level_II_Quotes</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_endHvWIt" href="/user/911/" bx-tooltip-user-id="911">"Eldar</a> пишет: <br />и т.д.<br />первая проблема -перебор 30 строк в таблице это долго.<br /><br />=============<br />Вынесите Subscribe_Level_II_Quotes в отдельный цикл, перед строкой "while is_run do" заказывать постоянно одни и те же стаканы нет смысла. Плюс, сам цикл "for i=1, 30 do &nbsp;совершенно не понятен. Зачем он? <br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_LIjg708I" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />вторая -если сделаю меньший sleep то часто не получаю данные стакана.<br /><br />=============<br />На заказ данных по очередному скакану требуется время, но 250 как-то много. обычно хватает 10-50. Быть может терминал чем-то нагружен? Попробуйте провести эксперимент с sleep(50) но при этом закрыв все посторонние окна в терминале.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_m6nEZ6Z6" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />временами ошибка attempt to perform arithmetic on local 'delta ' (a string value )<br /><br />=============<br />Тут проще, если стакан не полный, то при обращении к пустой строке стакана функция выдаст nil, отсюда и ошибка.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Ay4zfkVC" href="/user/911/" bx-tooltip-user-id="911">Eldar</a> пишет: <br />причину отловить не могу. механизмов отладки нет (или я не нашел где они).<br /><br />=============<br />Механизмов отладки много, самый простой это логирование через PrintDbgStr. Также в интернете можно почитать про Decode и ее аналоги. <br />
			<i>13.04.2015 18:17:42, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3292/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3292/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 18:17:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3289/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			не редактируется сообщение<br /><br />поломался код<br />
====code====
<pre> function main()

&nbsp;&nbsp;&nbsp;&nbsp;while is_run do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for key, value in spairs(tikets) do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subscribe_Level_II_Quotes(class_code, key)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quotes(key)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;end

end



function Quotes(code)

&nbsp;&nbsp;&nbsp;sleep(250)

&nbsp;&nbsp;&nbsp;for i=1, 30 do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q = getQuoteLevel2(class_code, code)

--получаю стакан, перебираю его. добавляю в таблицу в окне данные. 

&nbsp;&nbsp;&nbsp;max_bid_price и max_ask_price



&nbsp;&nbsp;&nbsp;prevlegalclosepr=tonumber(getParamEx(class_code, code,"last").param_value)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (max_bid_price==0) or (max_ask_price==0) then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta==0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if max_bid_price &#62;= max_ask_price then 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta = (prevlegalclosepr/max_bid_price)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta = (prevlegalclosepr/max_ask_price)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;SetCell(Таблица, НомерСтрокиПоБумаге, 6, delta)
</pre>
============= <br />
			<i>13.04.2015 17:52:00, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3289/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3289/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 17:52:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Использование Subscribe_Level_II_Quotes</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message3287/topic398/">Использование Subscribe_Level_II_Quotes</a></b> <i>получение данных стакана без открытия стакана</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			мне нужно по 30 бумагам получить цену закрытия предыдущего дня из ТТП (через getParamEx(class_code,tiket_code,"prevlegalclosepr").param_value)<br />найти в стакане самый большой объем на продажу и открытие. взять из них цену и вывести процентное соотношение.<br />чтобы не открывать 30 стаканов (а мне еще заявки ставить). пробую сделать через Subscribe_Level_II_Quotes.<br />работает медленно, но я пробую так: <br />из файла в таблицу TIKETS загружен список бумаг. key - код бумаги<br />function main()<br /> &nbsp; &nbsp;while is_run do<br /> &nbsp; &nbsp; &nbsp; &nbsp;for key, value in spairs(tikets) do<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Subscribe_Level_II_Quotes(class_code, key)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Quotes(key)<br />	 &nbsp;end<br />	end<br />end<br /><br />function Quotes(code)<br />	sleep(250)<br />	for i=1, 30 do<br />		q = getQuoteLevel2(class_code, code)<br />--получаю стакан, перебираю его. добавляю в таблицу в окне данные. <br />	max_bid_price и max_ask_price<br /><br />	prevlegalclosepr=tonumber(getParamEx(class_code, code,"last").param_value)<br />		if (max_bid_price==0) or (max_ask_price==0) then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delta==0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br />			if max_bid_price &gt;= max_ask_price then <br />				delta = (prevlegalclosepr/max_bid_price)<br />			else<br />				delta = (prevlegalclosepr)<br />			end<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end<br />	<br />	SetCell(Таблица, НомерСтрокиПоБумаге, 6, delta)<br /><br />и т.д.<br />первая проблема - &nbsp;перебор 30 строк в таблице это долго. вторая - &nbsp;если сделаю меньший sleep то часто не получаю данные стакана.<br /><br />в этой строке<br />delta = (prevlegalclosepr/max_bid_price)<br />временами ошибка <I>attempt</I> to <I>perform arithmetic</I> on local 'delta ' (a <I>string value</I>)<br />причину отловить не могу. механизмов отладки нет (или я не нашел где они).<br />как мне эффективнее сделать данный алгоритм?<br />или при инициализации, где я загружаю коды тикетов в таблицу сделать Subscribe_Level_II_Quotes по каждой бумаге, а потом просто перебирать через getQuoteLevel2? <br />
			<i>13.04.2015 17:22:37, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message3287/topic398/</link>
			<guid>http://forum.quik.ru/messages/forum10/message3287/topic398/</guid>
			<pubDate>Mon, 13 Apr 2015 17:22:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
