Индикаторы и скрипты

Страницы: 1
RSS
Индикаторы и скрипты, Получение данных с индикаторов
 
Здравствуйте! Можно ли сделать функцию, чтобы из скрипта 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
здесь выкладывал примеры:
https://forum.quik.ru/forum17/topic7630/
https://forum.quik.ru/forum10/topic7578/
 
Цитата
nikolz написал:
Цитата
Дмитрий написал:
 
Цитата
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
здесь выкладывал примеры:
https://forum.quik.ru/forum17/topic7630/
https://forum.quik.ru/forum10/topic7578/
В примерах понятно, но хотелось бы получить значение переменной из индикатора в скрипт lua, который работает через окно "Доступные скрипты" с функцией main. Поэтому и просьба по разработке создать либо функцию получения данных из индикатора в скрипт в "Доступные скрипты" или может быть какую-либо функцию для получения кода инструмента окна по идентификатору.
 
Цитата
nikolz написал:
Цитата
Дмитрий написал:
 
Цитата
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
здесь выкладывал примеры:
https://forum.quik.ru/forum17/topic7630/
https://forum.quik.ru/forum10/topic7578/
Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в 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 вообще не нужен для этого.
 
Цитата
nikolz написал:
Цитата
Дмитрий написал:
   Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в 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 вообще не нужен для этого.
Нужно получить код инструмента графика в скрипт, а не через индикатор. В этой функции такого нет. И в других функциях тоже нет. Поэтому хорошо бы было, чтобы такая функция была. А в примере выше показан способ получения кода через имеющуюся функцию, но в нём есть недостаток - нужно вручную вписывать названия подписей инструментов.
 
Цитата
Дмитрий написал:
Цитата
nikolz написал:
 
Цитата
Дмитрий  написал:
   Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в 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 или другой какой). При функции якоря связанных окон такая функция автоматически определит код инструмента.
Страницы: 1
Читают тему
Наверх