Получить sec_code при выборе бумаги в ТТТ.

Страницы: 1
RSS
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
 
 Идентификатор индикатора WW. Квик перезагружал многократно. Запускаю скрипт - даже ошибок не выдает. Ничего. Никакой реакции.  

function OnCalculate(Index)
  if Index == 1 then
     local info = getDataSourceInfo("WW");
     message(info.sec_code)
  end
  return 0
end


Код  message('x= ' getNumCandles('WW'))  отрабатывает замечательно, число свечей показывает мгновенно.  Тоесть привязка по идентификатору WW работает.  Что там может быть? Почему не работает код?  
 
По документации у getDataSourceInfo() нет параметров
 
Вот это поворот. А как тогда можно это реализовать?   https://forum.quik.ru/messages/forum10/message71857/topic8232/#message71857   как-то же человек сделал это?    и вот это? https://forum.quik.ru/forum1/topic6172/    у меня только не работает не пойму почему.  
 
Цитата
paluke написал:
По документации у getDataSourceInfo() нет параметров
getDataSourceInfo

Функция предназначена для получения информации об источнике данных для  индикатора.  

TABLE info getDataSourceInfo()

Функция возвращает таблицу Lua с параметрами:  

ВАЖНО! Для корректной работы функции getDataSourceInfo, вызываемой из
функции Init, необходимо перезапустить Рабочее место QUIK после добавления
индикатора на график.  

ПараметрТипОписание
intervalNUMBERТекущий интервал (тайм-фрейм) графика
class_codeSTRINGКод класса источника данных
sec_codeSTRINGКод инструмента источника данных
paramSTRINGНаименование параметра Таблицы текущих торгов, по которому строится график.  Если поле пустое, то график строится на основании Таблицы обезличенных  сделок

Возможные значения поля interval:

 

Пожалуйста. Приведите пример кода из  https://forum.quik.ru/messages/forum10/message71857/topic8232/#message71857  . Не понимаю я как применить эту функцию к конкретному индикатору. Как заставить ее срабатывать.

 
Alexey89,  добрый день.

Минимальный код индикатора для получения кода инструмента на графике:

Код
Settings = {
 Name = "getDataSourceInfo_Example"
}

function Init()
    return 1
end

function OnCalculate(index)
    seccode = getDataSourceInfo().sec_code
    message(seccode)
end
 
Запускаю этот  скрипт и ничего. Ни ошибок ни  message.  Что-то надо еще указать? У меня ТТТ 2 штуки, графиков штук 5, стакан открыт. Как привязать это к ТТТ. Почему ничего не происходит?
 
Alexey89, это код индикатора, который необходимо добавить на график инструмента.
Пример по приведенной Вами ссылке реализован подобным образом.
 
Круто. Дело двигается. Запускаю как индикатор код

Settings = { Name = "getDataSourceInfo_Example"
}

function Init()
   return 1
end

function OnCalculate(index)
   seccode = getDataSourceInfo().sec_code
   message(seccode)
end


После добавления этого индикатора к графику. Квик виснет, начинает пищать спикер в системнике. Квик приходится убивать через диспетчер задач.  Можно как-то замедлить его ?    
  Settings = {
Name = "goodmode"
}

function Init()
   return 1

end

function OnCalculate(index)
   sleep(5000)
seccode = getDataSourceInfo().sec_code
sleep(5000)
   message(seccode)
sleep(5000)
end  

Не работает((  
 
это работает  

  Settings = {
Name = "goodmode"
}

function Init()
   return 1

end



function OnCalculate(Index)
  if Index == 1 then
     local info = getDataSourceInfo();
     message(info.sec_code)
  end
  return 0
end


Каким образом можно научить скрипт брать данные из этого индикатора? Нужно чтоб скрипт брал sec_code
 
Конечно, если на каждый бар, тик выводить message и не это еще будет. OnCalculate вызывается минимум два раза при добавлении индикатора на график. И столько же будет выведено сообщений.
Если баров на графике, например 30 тыс., то не удивительно.

Кажется Вам уже отвечали (может и не Вам, но была похожая тема), что метод getDataSourceInfo предназначен для индикаторов, а не скриптов. Это разные концепции в контексте терминала.

Ваша задача - из скрипта по назначенному графику идентификатору получить код инструмента, который на данный момент назначен на график.
Ответ - прямого такого метода нет.

Можно решать косвенно:
1. Метод getCandlesByIndex возвращает легенду графика. Это подпись графика, которая может содержать код инструмента, но чаще его краткое имя. Так что это не очень надежно.
2. Можно написать индикатор, добавляющий и обновляющий метку на график, где в тексте или подсказке добавить всю нужную информацию. А уже из скрипта прочитать данные этой метки.
 
Спасибо. Теперь многое понятно. Попробую делать и брать метку.  
Страницы: 1
Читают тему
Наверх