Спасибо, да помогло. Но теперь возникает непонятная ситуация: есть следующий скрипт. Он стабильно падает, причем если в обработчике обновления свечи "message(tostring(dataSource:T(index)), 1)" заменить ,например, на "message(tostring(dataSource :o (index)), 1)", то он падать перестает. Также? если убрать извлечение из БД в main-e, то тоже все нормально. Уже неделю не могу понять ,в чем проблема. Версия квика 6.15.2.9, mysql - 5.6. Так же отмечу, если вообще в обработчике OnCandleUpdate делать какие-либо манипуляции с таблицей (lua-table), то падает аналогично. Может есть какие-то ограничение, где осуществлять подписку на обновление свечи?
mysql = require 'luasql.mysql'
SLEEP_PERIOD = 3000
CANDLE_PERIOD = INTERVAL_M5
INSTRUMENTS_CLASS = 'QJSIM'
CANDLE_TF_DELAY = 3
DB_NAME = 'test'
DB_LOGIN = 'root'
DB_PASSWORD = ''
dataSource = {}
isExecuting = false
function main()
local env = mysql.mysql()
local connection = env:connect(DB_NAME, DB_LOGIN, DB_PASSWORD)
local query = string.format([[SEL ECT id FR OM test_table WHERE name = '%s']], 'hello')
local cursor, error = connection:execute(query)
if cursor ~= nil then
local rows = {[0] = ''}
local row = cursor:fetch (rows, "a")
message(tostring(row.id), 1)
cursor:close()
end
while isExecuting == true do
sleep(SLEEP_PERIOD)
end
connection:close()
env:close()
end
function OnStop(flag)
isExecuting = false
end
function OnInit(path)
createDataSources(exportedInstruments)
isExecuting = true
end
function createDataSources(instruments)
dataSource = CreateDataSource(INSTRUMENTS_CLASS, 'LKOH', CANDLE_PERIOD)
if dataSource ~= nil then
dataSource:SetUpdateCallback(function(...) OnCandleUpdate(INSTRUMENTS_CLASS, 'LKOH', ...) end)
isExecuting = true
end
end
function OnCandleUpdate(class, security, index)
message(tostring(dataSource:T(index)), 1)
end