<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: [BUG] getFuturesHolding: ошибка в работе]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме [BUG] getFuturesHolding: ошибка в работе форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 14:28:30 +0300</pubDate>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76582/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Чуть поясню о чем здесь. <br />В QUIK есть два подхода обработки фьючерсных позиций: 1. OnFuturesClientHolding` через обратный вызов и 2. getFuturesHolding. На первый взгляд очень соблазнительно выглядит 1 вариант, получил автоматически и забыл, про производительность можно и вообще не вспоминать. Но есть одно НО, к существенному недостатку, приводит обработка данных в неожиданный момент, что усложняет синхронизацию с другими процессами. У себя в программах контролирую момент прихода, по времени, это важно так как всегда есть две координаты {time,price}, поэтому предпочитаю пользоваться 2 вариантом. Ситуация которая заставила задуматься описана выше, чтоб избегать ее применил корутину. Корутинный подход снижает нагрузку и предоставляет больше контроля над частотой обновлений, требуется явный вызов функции. Получаем гибкость в управлении запросами и возможностью контролировать нагрузку на систему, запрашиваем там где требуется и когда требуется. Задача - данные по запросу, например, при анализе состояния позиций в определенные моменты. Корутинный подход позволяет не обращать внимания на nil, не блокировать основной поток, программа продолжает выполнение, а данные обновим при следующим запросе. Чем и как пользоваться каждый решает для себя сам, я лишь озвучил подход. <br />
			<i>13.09.2024 09:51:54, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76582/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76582/topic6526/</guid>
			<pubDate>Fri, 13 Sep 2024 09:51:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76576/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мало словить проблему, нужно найти ее решение. Решение оказалось на столько элегантным настолько и простым. Асинхронный подход - вызов функций qlua в сопрограммах, элегантно решет данную проблему. В чем суть, вот из &quot;букваря&quot;. &quot;В асинхронных программах ключевой элемент — event loop. Ивент луп — это цикл в программе, который ждёт событий и вызывает обработчиков.&quot; &quot;Плюс корутины в том, что она умеет останавливаться несколько раз. С корутинами, Ивент луп получил событие A и вызвал корутину - обработчик. Корутина же отправила HTTP-запрос и уснула. Теперь ивент луп её разбудит, когда получит событие B, что соединение установлено. И корутина продолжит работу с того момента в коде, как уснула, что очень удобно. А пока она спит, могут работать другие корутины.&quot; <br />Кому стало интересно, лучше почитать здесь, все просто &quot;разжевано&quot;, нужно только &quot;скушать&quot;. <noindex><a href="https://fingercomp.gitlab.io/lua-coroutines/#code-1.3" target="_blank" rel="nofollow">https://fingercomp.gitlab.io/lua-coroutines/#code-1.3</a></noindex><br />Всем, хорошего кода! <br />
			<i>12.09.2024 11:38:11, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76576/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76576/topic6526/</guid>
			<pubDate>Thu, 12 Sep 2024 11:38:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76492/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_87BU7HB1" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Относительно задержки процессора. Я использую Event, об этом писал и вы знаете. В результате реакция на колбек запаздывает не более, чем на 0.00001 сек, а загрузка процессора 3-7%. &nbsp;<br />=============<br />Дело тут не в задержке а в инициализации. Я использую задержки но в данном случае зачем? Сколько не задерживай получишь нил, пока не инициализируешь. И запроса здесь одного мало. И хотелось бы что то услышать от разработчиков это задумка такая или оплошность. И как поступать в алгоритме при смене тикера? <br />
			<i>22.08.2024 15:31:22, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76492/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76492/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 15:31:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76491/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_shAxgii2" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/16131/" target="_blank" rel="nofollow">VPM</a></noindex> написал:<br />local holdings = nil --getFuturesHolding(self.firmid, self.account, symbol, self.type)<br />=============<br /> Хоть к теме и не относится, но что-то часто такие ошибки у Вас в коде...<br /><br />А так -- ну да, getFuturesHolding даёт nil, если не было ордеров по тикеру с прошлого клиринга и одновременно если нет позиции. Наверняка это деталь реализации для какого-нибудь ускорения...<br />=============<br />Это заглушка для проверки кода в среде луа (без квик), в квик просто нужно раскомментировать строку. <br /><br />Так и я про это, как без этих выкрутасов можно понять как работает getFuturesHolding? И где здесь вообще логика? Сделал запрос вернулась таблица, нет запросов зачистили память.<br />Обломали полумесячный тест.<br /><br /><a class="blog-p-user-name" id="bp_0p3R963U" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, Трудно представить что тут можно по другому local holdings = getFuturesHolding(self.firmid, self.account, symbol, self.type) &nbsp; <br />
			<i>22.08.2024 15:24:48, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76491/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76491/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 15:24:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76490/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_fBM64Enb" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex>, &nbsp;Не понял что мешает организовать свой поток маин? Вот накидал на скорую руку, попробуйте так поставив свои данные.<br /> [CODE][/CODE]<br />=============<br />Да ничего не мешает. &nbsp; Функцию я эту использую. &nbsp;Но у меня все иначе написано и проблем с этой функцией не было.<br />-----------------------<br />Поэтому и хотел посмотреть именно ваше решение, в котором есть проблемы.<br />------------------------<br />Относительно задержки процессора.<br />Я использую Event, об этом писал и вы знаете.<br />В результате реакция на колбек запаздывает не более, чем на 0.00001 сек, а загрузка процессора 3-7%. &nbsp; <br />
			<i>22.08.2024 15:02:17, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76490/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76490/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 15:02:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76489/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_OGWIfgQ5" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />local holdings = nil --getFuturesHolding(self.firmid, self.account, symbol, self.type)<br />=============<br />Хоть к теме и не относится, но что-то часто такие ошибки у Вас в коде...<br /><br />А так -- ну да, getFuturesHolding даёт nil, если не было ордеров по тикеру с прошлого клиринга и одновременно если нет позиции. Наверняка это деталь реализации для какого-нибудь ускорения... <br />
			<i>22.08.2024 14:39:31, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76489/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76489/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 14:39:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76487/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Для тех кто будет пробовать нужно добавит задержку в код, чтоб не подвешивать процессор. sleep(1000)
====code====
<pre>function main()
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--local type = 0
&nbsp;&nbsp;&nbsp;local firmid = 'SPBFUT'
&nbsp;&nbsp;&nbsp;&nbsp;local account = 'SPBFUT00hkv'
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local symbol_names = {'NGU4' , 'BRQ4' , 'GDU4', 'NGU4' , 'NGX4' ,}
&nbsp;&nbsp;&nbsp;&nbsp;working = true
&nbsp;&nbsp;&nbsp;message("Robot started")
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local mm = MoneyManagement:new( firmid, account )-- , type
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while working do
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, symbol in ipairs(symbol_names) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mm:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;&nbsp;end
end
</pre>
=============
В моем случае ошибка - nil получена по 3 тикерам.<br /><br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = BRQ4; self.type = 0 number<br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = GDU4; self.type = 0 number<br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = NGX4; self.type = 0 number<br /><br />Вот и возникает вопрос а что делаю не так как описано в инструкции? <br />
			<i>22.08.2024 12:10:48, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76487/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76487/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 12:10:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76485/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот поправил рабочий вариант 
====code====
<pre>local MoneyManagement = {}
MoneyManagement.__index = MoneyManagement

function MoneyManagement:new(firmid, account )
&nbsp;&nbsp;&nbsp;&nbsp;local self = setmetatable({}, MoneyManagement)
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;self.firmid = firmid
&nbsp;&nbsp;&nbsp;&nbsp;self.account = account
&nbsp;&nbsp;&nbsp;&nbsp;self.type = 0
&nbsp;&nbsp;&nbsp;&nbsp;self.holdings = {}

&nbsp;&nbsp;&nbsp;&nbsp;return self
end

-- Function to get Futures Holding
function MoneyManagement:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;local holdings = nil --getFuturesHolding(self.firmid, self.account, symbol, self.type) 
&nbsp;&nbsp;&nbsp;&nbsp;if holdings then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;self.holdings = holdings
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startbuy = holdings.startbuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startsell = holdings.startsell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startnet = holdings.startnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaybuy = holdings.todaybuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaysell = holdings.todaysell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.totalnet = holdings.totalnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.openbuys = holdings.openbuys or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opensells = holdings.opensells or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lused = holdings.cbplused or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lplanned = holdings.cbplplanned or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.varmargin = holdings.varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.avrposnprice = holdings.avrposnprice or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.positionvalue = holdings.positionvalue or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.real_varmargin = holdings.real_varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.total_varmargin = holdings.total_varmargin or 0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local session_status = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;0&#93; = 'не определено',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;1&#93; = 'основная сессия',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;2&#93; = 'начался промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;3&#93; = 'завершился промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;4&#93; = 'начался основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;5&#93; = 'основной клиринг: новая сессия назначена',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;6&#93; = 'завершился основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;7&#93; = 'завершилась вечерняя сессия'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.session_status = session_status&#91; math.floor(holdings.session_status)&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.session_status ~= 'основная сессия' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Ошибка функции getFuturesHolding, возвращает = " .. tostring(holdings) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.firmid = " .. tostring(self.firmid) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.account = " .. tostring(self.account) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; symbol = " .. tostring(symbol) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.type = " .. tostring(self.type)..' '.. type(self.type))
&nbsp;&nbsp;&nbsp;&nbsp;end
end

&nbsp;&nbsp;&nbsp;&nbsp;local working = nil
&nbsp;&nbsp;&nbsp;
function OnStop(stop_flag)
&nbsp;&nbsp;message(' OnStop: '..'stop_flag = '..tostring(stop_flag) )
&nbsp;&nbsp;working = false
end

--&#91;&#91; MAIN LOOP &#93;&#93;--
function main()
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--local type = 0
&nbsp;&nbsp;&nbsp;local firmid = ''
&nbsp;&nbsp;&nbsp;&nbsp;local account = ''
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local symbol_names = {'NGU4' , 'BRQ4' , 'GDU4', 'NGU4' , 'NGX4' ,}
&nbsp;&nbsp;&nbsp;&nbsp;working = true
&nbsp;&nbsp;&nbsp;message("Robot started")
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local mm = MoneyManagement:new( firmid, account )-- , type
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while working do
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, symbol in ipairs(symbol_names) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mm:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>22.08.2024 11:48:19, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76485/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76485/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 11:48:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76484/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Заметил не точность в строке, нужно исправить на &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; local self = setmetatable({}, MoneyManagement) <br />
			<i>22.08.2024 10:53:18, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76484/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76484/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 10:53:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76483/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_fQQgHbJZ" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, &nbsp;Не понял что мешает организовать свой поток маин? Вот накидал на скорую руку, попробуйте так поставив свои данные.<br />
====code====
<pre>local MoneyManagement = {}
MoneyManagement.__index = MoneyManagement

function MoneyManagement:new()
&nbsp;&nbsp;&nbsp;&nbsp;local self = setmetatable({}, WindowCoordinates)
&nbsp;&nbsp;&nbsp;&nbsp;
-- поставить свои данные

&nbsp;&nbsp;&nbsp;&nbsp;self.firmid = ''
&nbsp;&nbsp;&nbsp;&nbsp;self.account = ''
&nbsp;&nbsp;&nbsp;&nbsp;self.type = 0

&nbsp;&nbsp;&nbsp;&nbsp;return self
end

-- Function to get Futures Holding
function MoneyManagement:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;local holdings = getFuturesHolding(self.firmid, self.account, symbol, self.type)
&nbsp;&nbsp;&nbsp;&nbsp;if holdings then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.holdings = holdings
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startbuy = holdings.startbuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startsell = holdings.startsell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startnet = holdings.startnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaybuy = holdings.todaybuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaysell = holdings.todaysell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.totalnet = holdings.totalnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.openbuys = holdings.openbuys or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opensells = holdings.opensells or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lused = holdings.cbplused or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lplanned = holdings.cbplplanned or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.varmargin = holdings.varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.avrposnprice = holdings.avrposnprice or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.positionvalue = holdings.positionvalue or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.real_varmargin = holdings.real_varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.total_varmargin = holdings.total_varmargin or 0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--self.session_status = math.floor(holdings.session_status) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local session_status = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;0&#93; = 'не определено',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;1&#93; = 'основная сессия',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;2&#93; = 'начался промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;3&#93; = 'завершился промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;4&#93; = 'начался основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;5&#93; = 'основной клиринг: новая сессия назначена',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;6&#93; = 'завершился основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;7&#93; = 'завершилась вечерняя сессия'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.session_status = session_status&#91; math.floor(holdings.session_status)&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if getFuturesHolding ~= 'основная сессия' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:trace('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:info("Ошибка функции getFuturesHolding, возвращает = " .. tostring(holdings) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.firmid = " .. tostring(self.firmid) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.account = " .. tostring(self.account) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; symbol = " .. tostring(symbol) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.type = " .. tostring(self.type)..' '.. type(self.type))
&nbsp;&nbsp;&nbsp;&nbsp;end
end

&nbsp;&nbsp;&nbsp;&nbsp;local working = nil
&nbsp;&nbsp;&nbsp;
function OnStop(stop_flag)
&nbsp;&nbsp;message(' OnStop: '..'stop_flag = '..tostring(stop_flag) )
&nbsp;&nbsp;working = false
end

--&#91;&#91; MAIN LOOP &#93;&#93;--
function main()

&nbsp;&nbsp;&nbsp;&nbsp;local symbol_names = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'NGU4' 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, 'BRQ4' 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, 'GDU4'
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;working = true
&nbsp;&nbsp;&nbsp;message("Robot started")
&nbsp;&nbsp;&nbsp;&nbsp;local mm = MoneyManagement:new()
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while working do
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, symbol in ipairs(symbol_names) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mm:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>22.08.2024 10:49:59, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76483/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76483/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 10:49:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76481/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Of7Yr9tI" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex>, Функция вызова обрабатывается в потоке маин, работает правильно и со стороны пользователя защищена проверкой на nil, &nbsp; <br />====quote====<br />В случае ошибки функция возвращает «nil».<br />=============<br /> На этот случай дополнительно выводится сообщение и проверяемся корректность ввода пользователем входных параметров. В случае описанном нет ошибки на стороне пользователя (все введено корректно изменился тикер)! Ошибка возникает на стороне функции (Разработчиков), так как возвращает nil то есть - ошибку (читаем документацию)! Вот я и пытаюсь получить комментарий Разработчиков, понять где не точность в функции или документации? Описание говорит что должна вернуться таблица.<br />=============<br />просто хотел посмотреть на демо сервере и понять причину. <br />Возможно я не нашел примера, но этот код не содержит &nbsp;вызова, результата &nbsp;и рабочего скрипта, который можно запустить чтобы обнаружить проблему:
====code====
<pre>-- Function to get Futures Holding
function MoneyManagement:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;local holdings = getFuturesHolding(self.firmid, self.account, symbol, self.type)
&nbsp;&nbsp;&nbsp;&nbsp;if holdings then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.holdings = holdings
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startbuy = holdings.startbuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startsell = holdings.startsell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startnet = holdings.startnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaybuy = holdings.todaybuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaysell = holdings.todaysell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.totalnet = holdings.totalnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.openbuys = holdings.openbuys or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opensells = holdings.opensells or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lused = holdings.cbplused or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lplanned = holdings.cbplplanned or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.varmargin = holdings.varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.avrposnprice = holdings.avrposnprice or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.positionvalue = holdings.positionvalue or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.real_varmargin = holdings.real_varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.total_varmargin = holdings.total_varmargin or 0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--self.session_status = math.floor(holdings.session_status) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local session_status = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;0&#93; = 'не определено',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;1&#93; = 'основная сессия',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;2&#93; = 'начался промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;3&#93; = 'завершился промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;4&#93; = 'начался основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;5&#93; = 'основной клиринг: новая сессия назначена',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;6&#93; = 'завершился основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;7&#93; = 'завершилась вечерняя сессия'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.session_status = session_status&#91; math.floor(holdings.session_status)&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if getFuturesHolding ~= 'основная сессия' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:trace('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:info("Ошибка функции getFuturesHolding, возвращает = " .. tostring(holdings) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.firmid = " .. tostring(self.firmid) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.account = " .. tostring(self.account) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; symbol = " .. tostring(symbol) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.type = " .. tostring(self.type)..' '.. type(self.type))
&nbsp;&nbsp;&nbsp;&nbsp;end
end</pre>
============= <br />
			<i>22.08.2024 10:12:21, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76481/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76481/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 10:12:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76480/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_5zhlWoQV" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, Функция вызова обрабатывается в потоке маин, работает правильно и со стороны пользователя защищена проверкой на nil, &nbsp;<br />====quote====<br />В случае ошибки функция возвращает «nil».<br />=============<br />На этот случай дополнительно выводится сообщение и проверяемся корректность ввода пользователем входных параметров. В случае описанном нет ошибки на стороне пользователя (все введено корректно изменился тикер)! Ошибка возникает на стороне функции (Разработчиков), так как возвращает nil то есть - ошибку (читаем документацию)! Вот я и пытаюсь получить комментарий Разработчиков, понять где не точность в функции или документации? Описание говорит что должна вернуться таблица. <br />
			<i>22.08.2024 08:50:41, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76480/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76480/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 08:50:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76479/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_RMDjqd7W" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex>, Выше я показал функцию вызова и ответ на нее. Все прекрасно работало на старом тикере. Сбой происходит в момент ввода нового тикера. Ответ на вызов <br />local holdings = nil? при этом все входящие данные верны, более того изменился только код тикера. <br /> <br />====quote====<br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = NGU4; self.type = 0 number<br />=============<br /> &nbsp; Функция возвращает таблицу Lua, не может быть здесь отсутствие самой таблицы, могут отсутствовать поля этой таблицы, но не сама таблица?<br /><br />Вот из справки<br /> <br />====quote====<br /> Функция предназначена для получения информации по фьючерсным позициям. &nbsp;Формат вызова: &nbsp;TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING sec_code, NUMBER type) &nbsp;Функция возвращает таблицу Lua с параметрами Таблицы «Позиции по клиентским счетам». &nbsp;В случае ошибки функция возвращает «nil». <br />=============<br /> Я и допустил что при обновлении тикера не проходит какая - то инициализация, так как таблица отражает владение, то и активировал просто ордер по этому тикеру, сразу функция заработала нормально. Об этом мое сообщение.<br />=============<br />Так как повторить данную ситуацию не могу, то могу лишь предположить следующее. <br />Эта функция по указанным параметрам ищет информацию в архиве терминала. <br />Если это новый тикер и он поступил в колбеке, то его еще нет архиве и в таблицах, так как информация в колбек приходит до ее записи в таблицы.<br />-------------------- &nbsp;<br />Чтобы такой ситуации не происходило , или для того чтобы определить причину, <br /> я бы поставил ожидание данных при возникновении ситуации и запись состояния при этом в лог файл. <br /> По результатам &nbsp;в лог файле можно было бы что-то решить. <br />
			<i>22.08.2024 07:12:41, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76479/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76479/topic6526/</guid>
			<pubDate>Thu, 22 Aug 2024 07:12:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76470/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_b6h4yqWv" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, Выше я показал функцию вызова и ответ на нее. Все прекрасно работало на старом тикере. Сбой происходит в момент ввода нового тикера. Ответ на вызов <br />local holdings = nil? при этом все входящие данные верны, более того изменился только код тикера. <br /><br />====quote====<br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = NGU4; self.type = 0 number<br />=============<br /> &nbsp;Функция возвращает таблицу Lua, не может быть здесь отсутствие самой таблицы, могут отсутствовать поля этой таблицы, но не сама таблица?<br /><br />Вот из справки<br /><br />====quote====<br /><p>Функция предназначена для получения информации по фьючерсным позициям.</p><p>Формат вызова:</p><p>TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING sec_code, NUMBER type)</p><p>Функция возвращает таблицу Lua с параметрами Таблицы «Позиции по клиентским счетам».</p><p>В случае ошибки функция возвращает «nil».</p>=============<br />Я и допустил что при обновлении тикера не проходит какая - то инициализация, так как таблица отражает владение, то и активировал просто ордер по этому тикеру, сразу функция заработала нормально. Об этом мое сообщение. <br />
			<i>21.08.2024 14:21:12, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76470/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76470/topic6526/</guid>
			<pubDate>Wed, 21 Aug 2024 14:21:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76469/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мое мнение:<br />Чтобы найти ошибку надо видеть вызов функции и результат.<br />Вполне возможно, что ошибка происходи так как поток не успеет выбрать значение из архива до прихода новых данных. <br />Надо ставить ожидание события, чтобы не было мучительно больно. &nbsp; <br />
			<i>21.08.2024 13:43:19, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76469/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76469/topic6526/</guid>
			<pubDate>Wed, 21 Aug 2024 13:43:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76464/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_FKGEP3MB" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a>, Да заметил спасибо, но это дописано после, хотел уменьшить частоту вывода. Исправил 
====code====
<pre>if self.session_status ~= 'основная сессия' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:trace('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
</pre>
============= <br />
			<i>20.08.2024 17:48:08, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76464/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76464/topic6526/</guid>
			<pubDate>Tue, 20 Aug 2024 17:48:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76462/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zT4SfINL" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Вот сама функция, что не так?<br />=============<br /><br />====quote====<br />if getFuturesHolding ~= &#39;основная сессия&#39; then<br />=============<br /><br />Вы сравниваете функцию и строку на равенство. <br />
			<i>20.08.2024 17:37:40, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76462/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76462/topic6526/</guid>
			<pubDate>Tue, 20 Aug 2024 17:37:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76461/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мне тоже хотелось бы знать, безопасно ли использовать getFuturesHolding в скрипте из разных потоков (main и основной поток квика), т.к. у меня мистические краши квика происходят в скрипте, в котором есть такие вызовы. <br />
			<i>20.08.2024 17:33:39, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76461/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76461/topic6526/</guid>
			<pubDate>Tue, 20 Aug 2024 17:33:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76460/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			&nbsp;Это ответ функции при добавлении нового тикера:<br /><br />====quote====<br />Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = NGU4; self.type = 0 number<br /><br />=============<br />Все параметры введены правильно, не должна выводить local holdings = nil? Выводит nil а правильно сказать ни чего не выводит по данному инструменту! Не понимает пока не обновил таблицу &quot;состояние счета&quot;, то есть прогнал пустой ордер чтоб отобразился тикер. Ну почему, Все за что не возьмешься, через одно место? Программе столько лет, все уже должно идеально работать.<br />Вот сама функция, что не так?
====code====
<pre>-- Function to get Futures Holding
function MoneyManagement:FuturesHolding(symbol)
&nbsp;&nbsp;&nbsp;&nbsp;local holdings = getFuturesHolding(self.firmid, self.account, symbol, self.type)
&nbsp;&nbsp;&nbsp;&nbsp;if holdings then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.holdings = holdings
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startbuy = holdings.startbuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startsell = holdings.startsell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.startnet = holdings.startnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaybuy = holdings.todaybuy or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.todaysell = holdings.todaysell or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.totalnet = holdings.totalnet or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.openbuys = holdings.openbuys or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opensells = holdings.opensells or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lused = holdings.cbplused or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lplanned = holdings.cbplplanned or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.varmargin = holdings.varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.avrposnprice = holdings.avrposnprice or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.positionvalue = holdings.positionvalue or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.real_varmargin = holdings.real_varmargin or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.total_varmargin = holdings.total_varmargin or 0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--self.session_status = math.floor(holdings.session_status) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local session_status = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;0&#93; = 'не определено',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;1&#93; = 'основная сессия',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;2&#93; = 'начался промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;3&#93; = 'завершился промклиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;4&#93; = 'начался основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;5&#93; = 'основной клиринг: новая сессия назначена',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;6&#93; = 'завершился основной клиринг',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;7&#93; = 'завершилась вечерняя сессия'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.session_status = session_status&#91; math.floor(holdings.session_status)&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if getFuturesHolding ~= 'основная сессия' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:trace('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log:info("Ошибка функции getFuturesHolding, возвращает = " .. tostring(holdings) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.firmid = " .. tostring(self.firmid) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.account = " .. tostring(self.account) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; symbol = " .. tostring(symbol) ..
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "; self.type = " .. tostring(self.type)..' '.. type(self.type))
&nbsp;&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<i>20.08.2024 15:56:18, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76460/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76460/topic6526/</guid>
			<pubDate>Tue, 20 Aug 2024 15:56:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message59302/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			в очередном это в каком или когда !? <br />
			<i>01.11.2021 11:56:09, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message59302/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message59302/topic6526/</guid>
			<pubDate>Mon, 01 Nov 2021 11:56:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56248/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_7Q4dMf5i" href="/user/54/" bx-tooltip-user-id="54">Старатель</a>, добрый день!<br /><br />Действительно, в ПО QLUA есть ошибка одновременной работы скриптов использующих лимиты. Мы исправим её в очередном обновлении ПО.<br />Приносим извинения за причинённые неудобства. <br />
			<i>18.06.2021 06:25:03, Roman Azarov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56248/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56248/topic6526/</guid>
			<pubDate>Fri, 18 Jun 2021 06:25:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56164/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_qg1Ca5Em" href="/user/54/" bx-tooltip-user-id="54">Старатель</a>, добрый день!<br /><br />Озвученные проблемы изучаются, постараемся в ближайшее время дать ответ. <br />
			<i>11.06.2021 09:38:02, Roman Azarov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56164/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56164/topic6526/</guid>
			<pubDate>Fri, 11 Jun 2021 09:38:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56143/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			*одновременно <I>по одной таблице</I> <br />
			<i>10.06.2021 12:19:23, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56143/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56143/topic6526/</guid>
			<pubDate>Thu, 10 Jun 2021 12:19:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56142/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Возникает вопрос: а корректно ли работает поиск SearchItems, если так совпало, что он производится в двух или более скриптах одновременно? <br />
			<i>10.06.2021 12:17:51, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56142/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56142/topic6526/</guid>
			<pubDate>Thu, 10 Jun 2021 12:17:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56126/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			getFuturesLimit при одновременном запросе из нескольких скриптов по разным счетам ничего не возвращает (буквально). <br />
			<i>09.06.2021 17:57:29, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56126/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56126/topic6526/</guid>
			<pubDate>Wed, 09 Jun 2021 17:57:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>[BUG] getFuturesHolding: ошибка в работе</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56123/topic6526/">[BUG] getFuturesHolding: ошибка в работе</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			По мотивам <noindex><a href="https://forum.quik.ru/messages/forum10/message56117/topic6503/#message56117" target="_blank" rel="nofollow">этой темы</a></noindex>.<br />Скрипт 1<br /><table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>
====code====
<pre>local run = true
function OnStop()
&nbsp;&nbsp;run = nil
end

function main()
&nbsp;&nbsp;local pos
&nbsp;&nbsp;while run do 
&nbsp;&nbsp;&nbsp;&nbsp;local fut_pos = getFuturesHolding(FIRMID, ACCOUNT, SEC_CODE, TYPE)
&nbsp;&nbsp;&nbsp;&nbsp;if type(fut_pos) == "table" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local totalnet = fut_pos.totalnet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if pos ~= totalnet then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(SEC_CODE .. ": pos = " .. tostring(pos) .. "&#92;n" .. fut_pos.sec_code .. ": totalnet = " .. tostring(totalnet), 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos = totalnet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("getFuturesHolding error", 3)
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1)
&nbsp;&nbsp;end
end</pre>
=============
</td></tr></tbody></table><br />Скрипт 2<br /><table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>
====code====
<pre>local run = true
function OnStop()
&nbsp;&nbsp;run = nil
end
function main()
&nbsp;&nbsp;while run do 
&nbsp;&nbsp;&nbsp;&nbsp;getFuturesHolding(FIRMID, ACCOUNT, SEC_CODE, TYPE)
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1)
&nbsp;&nbsp;end
end</pre>
=============
</td></tr></tbody></table><br />Запускаем скрипт 1 и несколько скриптов 2 по разным бумагам. Любуемся результатом.<br /><br />Возможно, другие функции getЧегоТоТам также работают нестабильно. Проверяйте сами. <br />
			<i>09.06.2021 16:19:19, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56123/topic6526/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56123/topic6526/</guid>
			<pubDate>Wed, 09 Jun 2021 16:19:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
