<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: запись данных из события onalltrade и обращение к ним]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме запись данных из события onalltrade и обращение к ним форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 05 Apr 2026 19:46:05 +0300</pubDate>
		<item>
			<title>запись данных из события onalltrade и обращение к ним</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message40360/topic4831/">запись данных из события onalltrade и обращение к ним</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			упс &nbsp;этого фрагмента кода конечно не должно быть, это я для дебага использовал<br />
====code====
<pre>message(tostring(#arrtotal))
 a=nil 
b=a&#91;1&#93;</pre>
============= <br />
			<i>30.10.2019 00:15:14, mefisto mefisto.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message40360/topic4831/</link>
			<guid>http://forum.quik.ru/messages/forum10/message40360/topic4831/</guid>
			<pubDate>Wed, 30 Oct 2019 00:15:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>запись данных из события onalltrade и обращение к ним</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message40359/topic4831/">запись данных из события onalltrade и обращение к ним</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_QpCSK6pY" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Скобли фигурные лишние<br /><br /> &nbsp; table.ins ert(arrtotal,{ .......<br /> &nbsp; &nbsp; &nbsp; &nbsp; })<br />=============<br />спасибо, действительно... глупая ошибка<br />можно тогда еще один вопрос? подобным образом я хочу экспортировать таблицу обезличенных сделок в базу скриптом. я проходу по таблице all_trades (сделки получаю по нескольким инструментам)<br />формирую массив вида datetime&#91;ticker&#93;&#91;price&#93;&#91;&quot;1025&quot;&#93; = value &nbsp;также и для 1026 (сделки на покупку продажу)<br /><br /><br />затем в циклах обхожу массив и добавляю в базу данных все это дело раз в (%setinterval%) <br /><br />скрипт вроде работает но даты добавляются как-то рандомно т.е я вижу в базе данных сначала сделки &nbsp;за 23 часа потом за 12, за 15 , потом 13 и так далее и я вообще не уверен записал он все или частично<br /><br /><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><br />
====code====
<pre>-- Подключение драйвера (библиотеки):
local is_run = true
luasql = require "luasql.mysql"
env = luasql.mysql()
con = assert (env:connect('footprint', 'root', '', 'localhost','3306'))

arrmain&nbsp;&nbsp;= {};
arrprices={}
arrtickers={}
arrtotal={}



local function has_value (tab, val)
&nbsp;&nbsp;&nbsp;&nbsp;for index, value in ipairs(tab) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if val ue == val then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;return false
end



function main()

local number_of_rows = getNumberOf('all_trades')&nbsp;&nbsp;&nbsp;&nbsp;
for i = 1,number_of_rows-1 do
&nbsp;&nbsp;&nbsp;&nbsp;qbuy=0
&nbsp;&nbsp;&nbsp;&nbsp;qsell=0
&nbsp;&nbsp;&nbsp;&nbsp;datetime = {}

&nbsp;&nbsp;&nbsp;&nbsp;all_trade_item = getItem('all_trades', i)

&nbsp;&nbsp;&nbsp;&nbsp;datetime.year = all_trade_item.datetime.year
&nbsp;&nbsp;&nbsp;&nbsp;datetime.month = all_trade_item.datetime.month
&nbsp;&nbsp;&nbsp;&nbsp;datetime.day = all_trade_item.datetime.day
&nbsp;&nbsp;&nbsp;&nbsp;datetime.hour = all_trade_item.datetime.hour
&nbsp;&nbsp;&nbsp;&nbsp;datetime.min = all_trade_item.datetime.min
&nbsp;&nbsp;&nbsp;&nbsp;datetime.sec = all_trade_item.datetime.sec
 
&nbsp;&nbsp;&nbsp;&nbsp;posixTime = os.time(datetime) 


&nbsp;&nbsp;&nbsp;&nbsp;if i==1 then
&nbsp;&nbsp;&nbsp;&nbsp;nextposixTime = posixTime + 10 -- +10 sec&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;datetime2 =&nbsp;&nbsp;os.date("*t",posixTime);
&nbsp;&nbsp;&nbsp;&nbsp;posixTime1 =&nbsp;&nbsp;tostring(datetime2.year)
&nbsp;&nbsp;&nbsp;&nbsp;.."-"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.month)
&nbsp;&nbsp;&nbsp;&nbsp;.."-"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.day)
&nbsp;&nbsp;&nbsp;&nbsp;.." "
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.hour)
&nbsp;&nbsp;&nbsp;&nbsp;..":"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.min)
&nbsp;&nbsp;&nbsp;&nbsp;..":"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.sec);
&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93; = {}&nbsp;&nbsp; 

&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;if (posixTime &#62;= nextposixTime) then
&nbsp;&nbsp;&nbsp;&nbsp;nextposixTime = posixTime + 10 -- +10 sec
&nbsp;&nbsp;&nbsp;&nbsp;datetime2 =&nbsp;&nbsp;os.date("*t",posixTime);
&nbsp;&nbsp;&nbsp;&nbsp;posixTime1 =&nbsp;&nbsp;tostring(datetime2.year)
&nbsp;&nbsp;&nbsp;&nbsp;.."-"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.month)
&nbsp;&nbsp;&nbsp;&nbsp;.."-"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.day)
&nbsp;&nbsp;&nbsp;&nbsp;.." "
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.hour)
&nbsp;&nbsp;&nbsp;&nbsp;..":"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.min)
&nbsp;&nbsp;&nbsp;&nbsp;..":"
&nbsp;&nbsp;&nbsp;&nbsp;..tostring(datetime2.sec);

&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93; = {}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end
end
&nbsp;&nbsp;&nbsp;&nbsp;if all_trade_item.sec_code then --TICKER
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ticker = all_trade_item.sec_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if has_value(arrtickers, ticker) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ticker=ticker --если нашли в массивае arrtickers слово ticker
&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;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(arrtickers,ticker)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93;&#91;ticker&#93; = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if all_trade_item.price then --price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price = all_trade_item.price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arrtotal&#91;posixTime1&#93; == nil then arrtotal&#91;posixTime1&#93; = {} end --NE NUZHNO
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arrtotal&#91;posixTime1&#93;&#91;ticker&#93; == nil then arrtotal&#91;posixTime1&#93;&#91;ticker&#93; = {} end -- NE NUZHNO

&nbsp;&nbsp;&nbsp;&nbsp;if has_value(arrprices,price) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price=price
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93; == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93; = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end -- if arrtotal&#91;ticker&#93;&#91;price&#93; == nil

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(arrprices,price)&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93; = {} -- тоже добавление в конец
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end -- else get item price
&nbsp;&nbsp;&nbsp;&nbsp;end --if getItem("all_trades",i).price


&nbsp;&nbsp;&nbsp;&nbsp;if all_trade_item.flags then operation= all_trade_item.flags end
&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;--operation = all_trade_item.flags
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;all_trade_item.qty then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quanity =&nbsp;&nbsp;all_trade_item.qty
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if operation==1026 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qbuy = quanity
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1026"&#93; == nil then arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1026"&#93; = 0 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1026"&#93; = arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1026"&#93;&nbsp;&nbsp;+ qbuy
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if operation==1025 then&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsell = quanity 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1025"&#93; == nil then arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1025"&#93; = 0 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1025"&#93; = arrtotal&#91;posixTime1&#93;&#91;ticker&#93;&#91;price&#93;&#91;"1025"&#93; + qsell
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end -- if&nbsp;&nbsp;getItem("all_trades",i).qty
&nbsp;&nbsp; 

end -- main for !!!!

message(tostring(#arrtotal))
a=nil
b=a&#91;1&#93;

for datekey,dateval in pairs(arrtotal) do&nbsp;&nbsp;--date
&nbsp;&nbsp;&nbsp;&nbsp;for tickerkey, tickerval in pairs(dateval) do --ticker
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for pricekey, priceval in pairs(tickerval) do --price&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for opkey, opval in pairs(priceval) do --1025 1026
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res = assert(con:execute(string.format("INS ERT IN TO sdelki(price,quanity,operation,ticker,datetime) VALUES('%f','%d','%d','%s','%s')", pricekey,opval,opkey,tickerkey,datekey )));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end



end -- function main</pre>
=============
</td></tr></tbody></table>подскажите что я делаю не так? <br />
			<i>30.10.2019 00:10:52, mefisto mefisto.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message40359/topic4831/</link>
			<guid>http://forum.quik.ru/messages/forum10/message40359/topic4831/</guid>
			<pubDate>Wed, 30 Oct 2019 00:10:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>запись данных из события onalltrade и обращение к ним</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message40358/topic4831/">запись данных из события onalltrade и обращение к ним</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Скобли фигурные лишние<br /><br /> &nbsp; table.insert(arrtotal,{ .......<br /> &nbsp; &nbsp; &nbsp; &nbsp; }) <br />
			<i>29.10.2019 22:25:08, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message40358/topic4831/</link>
			<guid>http://forum.quik.ru/messages/forum10/message40358/topic4831/</guid>
			<pubDate>Tue, 29 Oct 2019 22:25:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>запись данных из события onalltrade и обращение к ним</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message40353/topic4831/">запись данных из события onalltrade и обращение к ним</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			я хочу записывать данные получаемые из onalltrade в массив чтобы далее обращаться к нему из функции main<br /><br />сделал следующим образом<br />
====code====
<pre>
arrtotal={}


function OnAllTrade(alltrade)

&nbsp;&nbsp;&nbsp;&nbsp; table.insert(arrtotal,{{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ticker=alltrade.sec_code,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; price=alltrade.price,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; operation=alltrade.flags,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; quanity=alltrade.qty
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }})

end


function main() 
sleep(3000)
message(tostring(arrtotal&#91;1&#93;&#91;"ticker"&#93;))
end</pre>
=============
<br /><br /><br />но при обращении к любому полю массива arrtotal я получаю nil. почему так происходит?<br />если этот вариант по какой-то причине нереализуем то подскажите как мне организовать складывание данных (объемов) во временное хранилище чтобы потом добавлять в базу данных с заданным интервалом времени <br />
			<i>29.10.2019 12:19:58, mefisto mefisto.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message40353/topic4831/</link>
			<guid>http://forum.quik.ru/messages/forum10/message40353/topic4831/</guid>
			<pubDate>Tue, 29 Oct 2019 12:19:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
