Здравствуйте! Можно ли сделать функцию, чтобы из скрипта lua (где используется функция main) можно было получать данные переменных индикаторов. Например, в ниже представленном коде есть переменные scd и cld, значения которых нужно получить в другом скрипте Lua с main функцией:
scd = "" cld = "" dsinfo = nil
Settings= { Name = "*code", line = { { Name = "scode", Color = RGB(0, 128, 255), Type = TYPE_LINE, Width = 1 } } }
function Init() return 1 end
function OnCalculate(index) if index == 1 then local dsinfo = getDataSourceInfo() scd = dsinfo.sec_code cld = dsinfo.class_cod end end
nikolz написал: если это индикатор в окне на графике, то можно прочитать значения через идентификатор
Каким образом через идентификатор можно получить значения scd и cld в примере выше? Например, можно через следующий код получить имя линии индикатора: is_run = true
chart_tag = "code" numcandles = 3
-- получение всех свечей function candle() allcandles = getNumCandles(chart_tag) -- диапазон свечей, по которым идёт поиск tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles) message(tostring(leg), 1) end
function main() while is_run do candle() sleep(1000) end end
nikolz написал: если это индикатор в окне на графике, то можно прочитать значения через идентификатор
Каким образом через идентификатор можно получить значения scd и cld в примере выше? Например, можно через следующий код получить имя линии индикатора: is_run = true
chart_tag = "code" numcandles = 3
-- получение всех свечей function candle() allcandles = getNumCandles(chart_tag) -- диапазон свечей, по которым идёт поиск tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles) message(tostring(leg), 1) end
function main() while is_run do candle() sleep(1000) end end
nikolz написал: если это индикатор в окне на графике, то можно прочитать значения через идентификатор
Каким образом через идентификатор можно получить значения scd и cld в примере выше? Например, можно через следующий код получить имя линии индикатора: is_run = true
chart_tag = "code" numcandles = 3
-- получение всех свечей function candle() allcandles = getNumCandles(chart_tag) -- диапазон свечей, по которым идёт поиск tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles) message(tostring(leg), 1) end
function main() while is_run do candle() sleep(1000) end end
В примерах понятно, но хотелось бы получить значение переменной из индикатора в скрипт lua, который работает через окно "Доступные скрипты" с функцией main. Поэтому и просьба по разработке создать либо функцию получения данных из индикатора в скрипт в "Доступные скрипты" или может быть какую-либо функцию для получения кода инструмента окна по идентификатору.
nikolz написал: если это индикатор в окне на графике, то можно прочитать значения через идентификатор
Каким образом через идентификатор можно получить значения scd и cld в примере выше? Например, можно через следующий код получить имя линии индикатора: is_run = true
chart_tag = "code" numcandles = 3
-- получение всех свечей function candle() allcandles = getNumCandles(chart_tag) -- диапазон свечей, по которым идёт поиск tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles) message(tostring(leg), 1) end
function main() while is_run do candle() sleep(1000) end end
Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:
Код
is_run = true
chart_tag = "tag"
local tool = {
["Сбербанк [Price]"] = "SBER",
["ГАЗПРОМ ао [Price]"] = "GAZP",
["ЛУКОЙЛ [Price]"] = "LKOH",
["Роснефть [Price]"] = "ROSN"
}
function candle()
allcandles = getNumCandles(chart_tag)
tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles)
for key, val in pairs(tool) do
if key == leg then
codeSec = val
end
end
return codeSec
end
function main()
while is_run do
candle()
message(tostring(codeSec), 1)
sleep(1000)
end
end
Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:
Код
is_run = true
chart_tag = "tag"
local tool = {
[ "Сбербанк [Price]" ] = "SBER" ,
[ "ГАЗПРОМ ао [Price]" ] = "GAZP" ,
[ "ЛУКОЙЛ [Price]" ] = "LKOH" ,
[ "Роснефть [Price]" ] = "ROSN"
}
function candle ()
allcandles = getNumCandles (chart_tag)
tab, count, leg = getCandlesByIndex (chart_tag, 0 , 0 , allcandles)
for key, val in pairs(tool) do
if key = = leg then
codeSec = val
end
end
return codeSec
end
function main ()
while is_run do
candle()
message (tostring(codeSec), 1 )
sleep ( 1000 )
end
end
Вы что-то путаете или невнимательно читали документацию qLua. Если вы хотите получить данные по инструментам в скрипте (как в вашем примере), а не в индикаторе, то для этого уже есть функции ----------------------- CreateDataSource и O, H, L, C, V, T - Функции в качестве параметра принимают индекс свечи и возвращают соответствующее значение. ----------------------------- и tag вообще не нужен для этого.
Дмитрий написал: Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:
Код
is_run = true
chart_tag = "tag"
local tool = {
[ "Сбербанк [Price]" ] = "SBER" ,
[ "ГАЗПРОМ ао [Price]" ] = "GAZP" ,
[ "ЛУКОЙЛ [Price]" ] = "LKOH" ,
[ "Роснефть [Price]" ] = "ROSN"
}
function candle ()
allcandles = getNumCandles (chart_tag)
tab, count, leg = getCandlesByIndex (chart_tag, 0 , 0 , allcandles)
for key, val in pairs(tool) do
if key = = leg then
codeSec = val
end
end
return codeSec
end
function main ()
while is_run do
candle()
message (tostring(codeSec), 1 )
sleep ( 1000 )
end
end
Вы что-то путаете или невнимательно читали документацию qLua. Если вы хотите получить данные по инструментам в скрипте (как в вашем примере), а не в индикаторе, то для этого уже есть функции ----------------------- CreateDataSource и O, H, L, C, V, T - Функции в качестве параметра принимают индекс свечи и возвращают соответствующее значение. ----------------------------- и tag вообще не нужен для этого.
Нужно получить код инструмента графика в скрипт, а не через индикатор. В этой функции такого нет. И в других функциях тоже нет. Поэтому хорошо бы было, чтобы такая функция была. А в примере выше показан способ получения кода через имеющуюся функцию, но в нём есть недостаток - нужно вручную вписывать названия подписей инструментов.
Дмитрий написал: Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:
Код
is_run = true
chart_tag = "tag"
local tool = {
[ "Сбербанк [Price]" ] = "SBER" ,
[ "ГАЗПРОМ ао [Price]" ] = "GAZP" ,
[ "ЛУКОЙЛ [Price]" ] = "LKOH" ,
[ "Роснефть [Price]" ] = "ROSN"
}
function candle ()
allcandles = getNumCandles (chart_tag)
tab, count, leg = getCandlesByIndex (chart_tag, 0 , 0 , allcandles)
for key, val in pairs(tool) do
if key = = leg then
codeSec = val
end
end
return codeSec
end
function main ()
while is_run do
candle()
message (tostring(codeSec), 1 )
sleep ( 1000 )
end
end
Вы что-то путаете или невнимательно читали документацию qLua. Если вы хотите получить данные по инструментам в скрипте (как в вашем примере), а не в индикаторе, то для этого уже есть функции ----------------------- CreateDataSource и O, H, L, C, V, T - Функции в качестве параметра принимают индекс свечи и возвращают соответствующее значение. ----------------------------- и tag вообще не нужен для этого.
Нужно получить код инструмента графика в скрипт, а не через индикатор. В этой функции такого нет. И в других функциях тоже нет. Поэтому хорошо бы было, чтобы такая функция была. А в примере выше показан способ получения кода через имеющуюся функцию, но в нём есть недостаток - нужно вручную вписывать названия подписей инструментов.
Возможно, я не понял, но Ваш вопрос в тексте все время разный. ------------------- Я вообще-то говорю о получении значений параметров свеч, т е цены инструмента и это же Вы получаете в своем примере. --------------------- Но Вы хотите получить нечто иное, а именно: В начале темы это " получать данные переменных индикаторов". а теперь "получить код инструмента графика " Первое понятие "данные переменных индикаторов" - вообще ваше ноу-хау. -------------------- Если хотите получить в скрипт код инструмента на графике, например SBER то как Вы будете выбирать с какого графика, открытого в терминале вы хотите получить код инструмента?
вообще-то, ответ на ваш вопрос в начале темы: МОЖНО. -------------------- вопрос скорее всего в том, почему Вам бы самому не написать эту функцию, если она Вам нужна.
nikolz написал: вообще-то, ответ на ваш вопрос в начале темы: МОЖНО. -------------------- вопрос скорее всего в том, почему Вам бы самому не написать эту функцию, если она Вам нужна.
Хотелось бы чтобы функция получения кода была встроенная. Ну и другим она бы пригодилась, так как отпала бы необходимость вводить в скриптах данные кода (SBER или другой какой). При функции якоря связанных окон такая функция автоматически определит код инструмента.