Как узнать, какому инструменту принадлежит метка на графике?

Страницы: 1
RSS
Как узнать, какому инструменту принадлежит метка на графике?
 
Добрый день!

Использую один график для всех инструментов, заменяя на нем инструменты. Метки (Labels), установленные для SBER, не отображаются для ROSN, и наоборот. Однако, функция DelAllLabels() удаляет метки, как для SBER, так и для ROSN. Как удалить метки, установленные только для SBER? В таблице Labels никакого признака нет. Где его можно найти?
 
Цитата
Андрей_тлт написал:
Добрый день!

Использую один график для всех инструментов, заменяя на нем инструменты. Метки (Labels), установленные для SBER, не отображаются для ROSN, и наоборот. Однако, функция DelAllLabels() удаляет метки, как для SBER, так и для ROSN. Как удалить метки, установленные только для SBER? В таблице Labels никакого признака нет. Где его можно найти?
Самый простой вариант: прописываете при установке метки "SBER" в HINT. Когда нужно удалить: удаляете в цикле все метки, которые удовлетворяют условию label.hint == sec_code, где sec_code =  "SBER". Все остальные варианты сложнее.
 
еще вариант.
Записывайте номера меток каждого инструмента sec в отдельный массив:
например так:
Код
local t1=t[sec]  if t1==nil then t1={};t[sec]=t1; end
t1[#t1+1]=AddLabel(tag, label_params);

Удаляете в цикле все метки из соответствующего массива
например так:
Код
local t1=t[sec]; for j=1,#t1 do  DelLabel(tag,t1[j] ) end
 
Цитата
nikolz написал:
еще вариант.
Записывайте номера меток каждого инструмента sec в отдельный массив  
А после завершения скрипта стек переменных не очищается?
 
Цитата
Игорь М написал:
Цитата
Самый простой вариант: прописываете при установке метки "SBER" в HINT. Когда нужно удалить: удаляете в цикле все метки, которые удовлетворяют условию label.hint == sec_code, где sec_code =  "SBER". Все остальные варианты сложнее.

А как сама система распознает, какому инструменту какие метки принадлежат?
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:
еще вариант.
Записывайте номера меток каждого инструмента sec в отдельный массив      
А после завершения скрипта стек переменных не очищается?
Покажите скрипт и уточните, когда Вы хотите удалять метки.
 
Если хотите удалять избирательно при новом старте, то тогда пишите в файл.
 
Цитата
nikolz написал:

Покажите скрипт и уточните, когда Вы хотите удалять метки.
Хочу в любой момент вызвать скрипт test.lua, который удалит все метки по текущему инструменту, в том числе поставленные вручную, и нарисует новые метки.
Код
test.lua

function main()
  удалить_все_метки_по_текущему_инструменту();
  ... 
  нарисовать_новые_метки();
end;
 
Цитата
Андрей_тлт написал:
А как сама система распознает, какому инструменту какие метки принадлежат?
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как nikolz предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
 
Цитата
Игорь М написал:
Цитата
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как  nikolz  предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Это я понимаю, что метки в одной куче лежат. Но если я метку вручную поставил через меню, и не указал инструмент в HINT, то мне уже никак не понять, на каком инструменте я ее поставил? Сам торговый терминал распознает как-то.
 
Цитата
Андрей_тлт написал:
Цитата
Игорь М написал:
 
Цитата
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как   nikolz   предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Это я понимаю, что метки в одной куче лежат. Но если я метку вручную поставил через меню, и не указал инструмент в HINT, то мне уже никак не понять, на каком инструменте я ее поставил? Сам торговый терминал распознает как-то.
непонятно,
у Вас на графике есть какие-то индикаторы и на них метки.
Кидаете на этот график индикатор.
В нем в функции init  удаляете все метки
и далее в onCalc рисуются новые.
что не так?
 
Цитата
nikolz написал:

непонятно,
у Вас на графике есть какие-то индикаторы и на них метки.
Кидаете на этот график индикатор.
В нем в функции init  удаляете все метки
и далее в onCalc рисуются новые.
что не так?
Индикаторов нет. Есть всего один график.

Последовательность моих действий:
1. Открыл на графике SBER.
2. Поставил метки для SBER
3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются.
4. Поставил метки для ROSN
5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.

Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
 
Цитата
Андрей_тлт написал:
Последовательность моих действий:
1. Открыл на графике SBER.
2. Поставил метки для SBER
3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются.
4. Поставил метки для ROSN
5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.

Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Вы как меняете инструмент, правой кнопкой на мыши: Заменить инструмент? Если да, то метки никуда не скрываются, они остаются. Вы их из-за масштаба не видите. Покрутите график по вертикали.
 
Цитата
Игорь М написал:

Вы как меняете инструмент, правой кнопкой на мыши: Заменить инструмент? Если да, то метки никуда не скрываются, они остаются. Вы их из-за масштаба не видите. Покрутите график по вертикали.
Нее, я меняю инструмент через привязку к другому окну (кнопка в верхнем углу графика). Вот иллюстрация того, что метки скрываются:

 
Кажется уже недавно был такой вопрос.

Можно написать индикатор, который при смене настроек графика (а это произойдет при смене инструмента) получит информацию о текущем инструменте и выведет (обновит) метку на графике, записав необходимую информацию в текст, подсказку метки.
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:

непонятно,
у Вас на графике есть какие-то индикаторы и на них метки.
Кидаете на этот график индикатор.
В нем в функции init  удаляете все метки
и далее в onCalc рисуются новые.
что не так?
Индикаторов нет. Есть всего один график.

Последовательность моих действий:
1. Открыл на графике SBER.
2. Поставил метки для SBER
3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются.
4. Поставил метки для ROSN
5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.

Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Полагаю, что ответ -никак.
На разных графиках инструментов у Вас разные значения цены.
Метки другого инструмента вне поля картинки.
Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
 
Цитата
nikolz написал:
Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Выше картинку привёл. Там два инструмента в одном ценовом диапазоне, а метки скрыты.
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:
Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Выше картинку привёл. Там два инструмента в одном ценовом диапазоне, а метки скрыты.
тогда сравните дату меток
 
вариантов нет. попробую так сделать  
 
метки выводите скриптом?
 
Провел тест.
Как и говорил ранее, КВИК никак не связывает метку с инструментом.
Но метка связывается с ценой, временем и номером отсчета.
---------------------
Как говорят фокусники - следите за руками:
---------------------------
График инструмента ГАЗПРОМ c меткой

Меняем инструмент на SOLF и выставляем новую метку. Старой метки не видно.

теперь возвращаем первый инструмент и видим старую метку.
и редактируем метку, отключаем ее перемещение со шкалой времени и со шкалой цены

Теперь устанавливаем второй инструмент обратно. И  видим обе метки



 
 
Как вариант возможно, что КВИК записывает теги меткам по имени инструмента.
Когда отключаем перемещение, то метка пустая
Страницы: 1
Читают тему
Наверх