Как узнать, какому инструменту принадлежит метка на графике?
Пользователь
Сообщений: Регистрация: 13.05.2024
15.05.2024 14:21:42
Добрый день!
Использую один график для всех инструментов, заменяя на нем инструменты. Метки (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". Все остальные варианты сложнее.
Пользователь
Сообщений: Регистрация: 30.01.2015
16.05.2024 14:59:27
еще вариант. Записывайте номера меток каждого инструмента 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
Пользователь
Сообщений: Регистрация: 13.05.2024
16.05.2024 18:44:05
Цитата
nikolz написал: еще вариант. Записывайте номера меток каждого инструмента sec в отдельный массив
А после завершения скрипта стек переменных не очищается?
Самый простой вариант: прописываете при установке метки "SBER" в HINT. Когда нужно удалить: удаляете в цикле все метки, которые удовлетворяют условию label.hint == sec_code, где sec_code = "SBER". Все остальные варианты сложнее.
А как сама система распознает, какому инструменту какие метки принадлежат?
Покажите скрипт и уточните, когда Вы хотите удалять метки.
Хочу в любой момент вызвать скрипт test.lua, который удалит все метки по текущему инструменту, в том числе поставленные вручную, и нарисует новые метки.
Код
test.lua
function main()
удалить_все_метки_по_текущему_инструменту();
...
нарисовать_новые_метки();
end;
Пользователь
Сообщений: Регистрация: 18.12.2017
16.05.2024 20:02:59
Цитата
Андрей_тлт написал: А как сама система распознает, какому инструменту какие метки принадлежат?
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Это я понимаю, что метки в одной куче лежат. Но если я метку вручную поставил через меню, и не указал инструмент в HINT, то мне уже никак не понять, на каком инструменте я ее поставил? Сам торговый терминал распознает как-то.
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Это я понимаю, что метки в одной куче лежат. Но если я метку вручную поставил через меню, и не указал инструмент в HINT, то мне уже никак не понять, на каком инструменте я ее поставил? Сам торговый терминал распознает как-то.
непонятно, у Вас на графике есть какие-то индикаторы и на них метки. Кидаете на этот график индикатор. В нем в функции init удаляете все метки и далее в onCalc рисуются новые. что не так?
непонятно, у Вас на графике есть какие-то индикаторы и на них метки. Кидаете на этот график индикатор. В нем в функции init удаляете все метки и далее в onCalc рисуются новые. что не так?
Индикаторов нет. Есть всего один график.
Последовательность моих действий: 1. Открыл на графике SBER. 2. Поставил метки для SBER 3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются. 4. Поставил метки для ROSN 5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.
Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Пользователь
Сообщений: Регистрация: 18.12.2017
17.05.2024 00:06:07
Цитата
Андрей_тлт написал: Последовательность моих действий: 1. Открыл на графике SBER. 2. Поставил метки для SBER 3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются. 4. Поставил метки для ROSN 5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.
Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Вы как меняете инструмент, правой кнопкой на мыши: Заменить инструмент? Если да, то метки никуда не скрываются, они остаются. Вы их из-за масштаба не видите. Покрутите график по вертикали.
Вы как меняете инструмент, правой кнопкой на мыши: Заменить инструмент? Если да, то метки никуда не скрываются, они остаются. Вы их из-за масштаба не видите. Покрутите график по вертикали.
Нее, я меняю инструмент через привязку к другому окну (кнопка в верхнем углу графика). Вот иллюстрация того, что метки скрываются:
Пользователь
Сообщений: Регистрация: 27.01.2017
17.05.2024 10:37:52
Кажется уже недавно был такой вопрос.
Можно написать индикатор, который при смене настроек графика (а это произойдет при смене инструмента) получит информацию о текущем инструменте и выведет (обновит) метку на графике, записав необходимую информацию в текст, подсказку метки.
непонятно, у Вас на графике есть какие-то индикаторы и на них метки. Кидаете на этот график индикатор. В нем в функции init удаляете все метки и далее в onCalc рисуются новые. что не так?
Индикаторов нет. Есть всего один график.
Последовательность моих действий: 1. Открыл на графике SBER. 2. Поставил метки для SBER 3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются. 4. Поставил метки для ROSN 5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.
Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Полагаю, что ответ -никак. На разных графиках инструментов у Вас разные значения цены. Метки другого инструмента вне поля картинки. Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Пользователь
Сообщений: Регистрация: 13.05.2024
17.05.2024 13:49:47
Цитата
nikolz написал: Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Выше картинку привёл. Там два инструмента в одном ценовом диапазоне, а метки скрыты.
написал: Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Выше картинку привёл. Там два инструмента в одном ценовом диапазоне, а метки скрыты.
тогда сравните дату меток
Пользователь
Сообщений: Регистрация: 30.01.2015
17.05.2024 15:26:35
вариантов нет. попробую так сделать
Пользователь
Сообщений: Регистрация: 30.01.2015
17.05.2024 15:28:59
метки выводите скриптом?
Пользователь
Сообщений: Регистрация: 30.01.2015
17.05.2024 17:08:49
Провел тест. Как и говорил ранее, КВИК никак не связывает метку с инструментом. Но метка связывается с ценой, временем и номером отсчета. --------------------- Как говорят фокусники - следите за руками: --------------------------- График инструмента ГАЗПРОМ c меткой Меняем инструмент на SOLF и выставляем новую метку. Старой метки не видно. теперь возвращаем первый инструмент и видим старую метку. и редактируем метку, отключаем ее перемещение со шкалой времени и со шкалой цены Теперь устанавливаем второй инструмент обратно. И видим обе метки
Пользователь
Сообщений: Регистрация: 30.01.2015
17.05.2024 17:23:12
Как вариант возможно, что КВИК записывает теги меткам по имени инструмента. Когда отключаем перемещение, то метка пустая