<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане? форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 24 Apr 2026 07:36:18 +0300</pubDate>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74929/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_kWtACVq6" href="/user/16011/" bx-tooltip-user-id="16011">paluke</a> написал:<br />Код<br />string.format(&#39;%.&#39;..tostring(price_scale)..&#39;f&#39;, tonumber(price))<br />=============<br />Здесь вызов tostring по-моему лишний. <br />
			<i>17.03.2024 21:06:17, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74929/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74929/topic8553/</guid>
			<pubDate>Sun, 17 Mar 2024 21:06:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74912/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Но ведь для выставления заявки цену в sendTransaction() надо в виде строки? 
====code====
<pre>string.format('%.'..tostring(price_scale)..'f', tonumber(price))
</pre>
============= <br />
			<i>14.03.2024 13:04:01, paluke.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74912/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74912/topic8553/</guid>
			<pubDate>Thu, 14 Mar 2024 13:04:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74834/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_jX6pLtnP" href="/user/15542/" bx-tooltip-user-id="15542">Anton Belonogov</a> написал:<br /><noindex><a href="/user/4490/" target="_blank" rel="nofollow">Lankaster</a></noindex>, добрый день.<br /><br />Можем предложить следующие варианты решения:<br />1) получать цену с помощью функции getQuoteLevel2 - в этом случае Вы получите значение, идентичное отображаемому в стакане;<br />2) добавить проверку точности инструмента и в зависимости от ее результата оставлять выполнять преобразование числа или оставлять исходное значение.<br /><br />Например:<br /><br /> 
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;bid&nbsp;&nbsp;=&nbsp;&nbsp;tonumber( getParamEx (classcode, seccode,&nbsp;&nbsp;"BID" ).param_value)
scale&nbsp;&nbsp;=&nbsp;&nbsp;tonumber( getParamEx (classcode, seccode,&nbsp;&nbsp;"SEC_SCALE" ).param_value)

 if&nbsp;&nbsp;scale&nbsp;&nbsp;=&nbsp;&nbsp;=&nbsp;&nbsp; 0&nbsp;&nbsp; then 
&nbsp;&nbsp; price&nbsp;&nbsp;=&nbsp;&nbsp; math.floor (bid)&nbsp;&nbsp;--если точность инструмена равна 0, выполнить округление до целого числа 
 else 
&nbsp;&nbsp; price&nbsp;&nbsp;=&nbsp;&nbsp;bid&nbsp;&nbsp;--в противном случае преобразование не требуется 
 end 

&nbsp;&nbsp;</pre>
=============
 <br />=============<br />Спасибо за помощь! <br />
			<i>11.03.2024 17:12:29, Lankaster.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74834/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74834/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 17:12:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74833/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6Lbgir9C" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />если надо с каким-то дробным хвостиком то надо делать так: 
====code====
<pre>&nbsp;&nbsp; local&nbsp;&nbsp;bid =&nbsp;&nbsp;150.123456 ;
 local&nbsp;&nbsp;step =&nbsp;&nbsp;0.1 ; price = bid -&nbsp;&nbsp;bid % step;&nbsp;&nbsp; print ( "price="&nbsp;&nbsp;.. price)&nbsp;&nbsp; -- десятые доли 
 local&nbsp;&nbsp;step =&nbsp;&nbsp;0.01 ; price = bid -&nbsp;&nbsp;bid % step;&nbsp;&nbsp; print ( "price="&nbsp;&nbsp;.. price)&nbsp;&nbsp; --сотые доли 

&nbsp;&nbsp;</pre>
=============
 результат: 
====code====
<pre>&nbsp;&nbsp; &#62; D:/lua53/lua53.exe&nbsp;&nbsp;- e&nbsp;&nbsp;"io.stdout:setvbuf 'no'"&nbsp;&nbsp; "example.lua"&nbsp;&nbsp;
price =&nbsp;&nbsp;150.1 
price =&nbsp;&nbsp;150.12 
 &#62; Exit code:&nbsp;&nbsp;0 

&nbsp;&nbsp;</pre>
=============
 <br />=============<br />а как же округление?<br />
====code====
<pre>function Normalize(num,step)
&nbsp;&nbsp;local a=(num+step*0.5)-(num+step*0.5)%step
&nbsp;&nbsp;return math.tointeger(a) or a
end

local bid=150.123456
local step=0.0001
local res=Normalize(bid,step)
print("res="..res)
</pre>
=============
результат
====code====
<pre>res=150.1235</pre>
============= <br />
			<i>11.03.2024 16:12:33, BlaZed.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74833/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74833/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 16:12:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74830/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			если надо с каким-то дробным хвостиком то надо делать так:
====code====
<pre>local bid=150.123456;
local step=0.1; price=bid- bid % step;&nbsp;&nbsp;print("price="..price)&nbsp;&nbsp;-- десятые доли
local step=0.01; price=bid- bid % step;&nbsp;&nbsp;print("price="..price)&nbsp;&nbsp;--сотые доли

</pre>
=============
результат:
====code====
<pre>&#62;D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150.1
price=150.12
&#62;Exit code: 0

</pre>
============= <br />
			<i>11.03.2024 12:55:02, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74830/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74830/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 12:55:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74829/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tExX1fmt" href="/user/4490/" bx-tooltip-user-id="4490">Lankaster</a> написал:<br />Профи, подскажите пожалуйста как правильно получить цены &quot;BID&quot; и &quot;OFFER&quot;<br />делаю так 
====code====
<pre>&nbsp;&nbsp;bid&nbsp;&nbsp;=&nbsp;&nbsp;tonumber( getParamEx (classcod, ticker,&nbsp;&nbsp;"BID" ).param_value)
&nbsp;&nbsp;</pre>
=============
 &nbsp;выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется<br />если добавляю так bid = math.floor(bid) тогда все нормально bid = 150<br />Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код<br /> &nbsp; &nbsp;
====code====
<pre>&nbsp;&nbsp; function&nbsp;&nbsp; countDecimalPlaces (number)&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;_, decimal&nbsp;&nbsp;=&nbsp;&nbsp;tostring(number):match"(&#91;^.&#93; * ).(. * )"&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; # decimalend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)&nbsp;&nbsp; </pre>
=============
 &nbsp;и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1<br />каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы. <br />=============<br />можно делать так:<br />====quote====<br /><a class="blog-p-user-name" id="bp_OZ7x0Iop" href="/user/4490/" bx-tooltip-user-id="4490">Lankaster</a> написал:<br />Профи, подскажите пожалуйста как правильно получить цены &quot;BID&quot; и &quot;OFFER&quot;<br />делаю так 
====code====
<pre>&nbsp;&nbsp;bid&nbsp;&nbsp;=&nbsp;&nbsp;tonumber( getParamEx (classcod, ticker,&nbsp;&nbsp;"BID" ).param_value)
&nbsp;&nbsp;</pre>
=============
 &nbsp;выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется<br />если добавляю так bid = math.floor(bid) тогда все нормально bid = 150<br />Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код<br /> &nbsp; &nbsp;
====code====
<pre>&nbsp;&nbsp; function&nbsp;&nbsp; countDecimalPlaces (number)&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;_, decimal&nbsp;&nbsp;=&nbsp;&nbsp;tostring(number):match"(&#91;^.&#93; * ).(. * )"&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; # decimalend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)&nbsp;&nbsp; </pre>
=============
 &nbsp;и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1<br />каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы. <br />=============<br />если надо целое, то можно делать так:
====code====
<pre>local bid=150.123456; local price=bid//1&#62;&#62;0; print("price="..price)

</pre>
=============
результат:
====code====
<pre>&#62;D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150
&#62;Exit code: 0
</pre>
============= <br />
			<i>11.03.2024 12:51:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74829/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74829/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 12:51:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74828/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_3ViSmPsC" href="/user/4490/" bx-tooltip-user-id="4490">Lankaster</a>, добрый день.<br /><br />Можем предложить следующие варианты решения:<br />1) получать цену с помощью функции getQuoteLevel2 - в этом случае Вы получите значение, идентичное отображаемому в стакане;<br />2) добавить проверку точности инструмента и в зависимости от ее результата оставлять выполнять преобразование числа или оставлять исходное значение.<br /><br />Например:<br /><br />
====code====
<pre>bid = tonumber(getParamEx(classcode, seccode, "BID").param_value)
scale = tonumber(getParamEx(classcode, seccode, "SEC_SCALE").param_value)

if scale == 0 then
&nbsp;&nbsp;&nbsp;price = math.floor(bid) --если точность инструмена равна 0, выполнить округление до целого числа
else
&nbsp;&nbsp;&nbsp;price = bid --в противном случае преобразование не требуется
end

</pre>
============= <br />
			<i>11.03.2024 09:10:56, Anton Belonogov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74828/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74828/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 09:10:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74827/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			код почему-то опубликовался в одну строку, не знаю как редактировать пост, продублирую код тут<br /><br />function countDecimalPlaces(number)<br /> &nbsp; &nbsp;local _, decimal = tostring(number):match&quot;(&#91;^.&#93;*).(.*)&quot;<br /> &nbsp; &nbsp;return #decimal<br />end	<br />	<br />-- Получаем информацию о выбранном инструменте<br />local security_info = getSecurityInfo(classcod, ticker)<br /><br />-- Получаем шаг цены<br />local price_step = security_info.min_price_step<br />local decimal_places = countDecimalPlaces(price_step) <br />
			<i>11.03.2024 03:24:25, Lankaster.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74827/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74827/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 03:24:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74826/topic8553/">Как получить цены &quot;BID&quot; и &quot;OFFER&quot; чтобы они выводились как в стакане?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Профи, подскажите пожалуйста как правильно получить цены &quot;BID&quot; и &quot;OFFER&quot;<br />делаю так
====code====
<pre>bid = tonumber(getParamEx(classcod, ticker, "BID").param_value)
</pre>
=============
<p>выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется<br />если добавляю так bid = math.floor(bid) тогда все нормально bid = 150<br />Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код<br /></p><p></p>
====code====
<pre>function countDecimalPlaces(number)&nbsp;&nbsp;&nbsp;&nbsp;local _, decimal = tostring(number):match"(&#91;^.&#93;*).(.*)"&nbsp;&nbsp;&nbsp;&nbsp;return #decimalend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)</pre>
=============
<p>и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1<br />каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы.</p> <br />
			<i>11.03.2024 03:19:30, Lankaster.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74826/topic8553/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74826/topic8553/</guid>
			<pubDate>Mon, 11 Mar 2024 03:19:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
