Общий колбек для всех источников данных
Реализация обратного вызова функций посредством SetUpdateCallback рассчитана на создание уникальной вызываемой функции для каждого потока данных. В частности, в вызываемую процедуру не передается информация о самом инструменте. В случае, когда заранее неизвестно количество потоков данных, задачу можно решить двумя способами:
генерация необходимой функции на лету- использование обертки (или замыкание)
Иллюстрация решения проблемы с помощью обертки из общей для всех потоков данных анонимной функции обратного вызова:
function mycallbackforallstocks(class,security,index)
-- Теперь в колбеке нам доступны код и класс инструмента
message(class .. " " .. security,1)
-- Также доступны все параметры, которые приходят с колбеком из терминала
xxx = index
end function DataSource(class,security,interval)
local ds = CreateDataSource(class,security,interval)
ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,...) end)
return ds
end function main()
ds =
{ DataSource("SPBFUT", "RIZ3",INTERVAL_M1),
DataSource("SPBFUT", "SiZ3",INTERVAL_M2),
DataSource("SPBFUT", "EDZ3",INTERVAL_M3)
}
while true do
sleep(1000)
end
