Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это помогло:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как вывести значение цены в пользовательском TOOLTIP
Ihor Herasko, 2017.08.12 11:32
Так и скажите, что речь идет об объектах, которые создаются программно. В этом случае, как и сказали сами же выше - заполняйте ToolTip нужного объекта при каждом перемещении мыши. Чтобы его отлеживать, используйте событие ChartEvent. В обработчике отлавливайте CHART_EVENT_MOUSE_MOVE (на него нужно подписаться). Полученные координаты затем перевести во время и цену при помощи ChartXYToTimePrice и записать в нужный объект.
По поводу отсеивания объектов. При первоначальном выводе объектов в тултипах надо записать какие-то символы в тех объектах, у которых предполагается выводить цену.
Потом при выводе тултипа проводится проверка на присутствие внесенных контрольных символов, например ":: ". Это все равно надо делать, так как предполагается дописывание к имеющемуся тултипу информации о цене.
Об этом Игорь говорил в шестом посте этой темы.
У Игоря слишком напряжно сделано - организуется массив объектов.
У Игоря слишком напряжно сделано - организуется массив объектов.
А разве список объектов ObjectsTotal() чем-то сильно отличается от массива?
А отфильтровать объекты можно такой строкой
или в теле цикла условие, если не нужный нам объект по типу, continue;
или наоборот, если нужный объект, назначаем тултип.
Зависит от количества встречаемых объектов. Если легче перечислить ненужные, то первый вариант. Если легче перечислить нужные, то второй.
А разве список объектов ObjectsTotal() чем-то сильно отличается от массива?
У Игоря, наверное, массив еще с какими-то целями организуется. Мне хватит и массива, определяемого через ObjectsTotal().
У меня же выше был именно такой код с использованием ObjectsTotal().
А фильтрация объектов - зависит от поставленной задачи.
Решение может быть следующим. (Схематично)
Разрешаем обработку перемещения мыши:
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
В OnChartEvent()
if (id==CHARTEVENT_MOUSE_MOVE) // id = 10 // перемещение мыши
{
Включаем преобразование координаты мыши по горизонтали во время. Присваиваем значению глобальной переменной значение полученного времени.
}
Cоздаем функцию, например :
string price(string xxx)
{
double cena=0;
// xxx - имя линии, у которой во всплывающей подсказке должно быть выведено значение
// По точкам привзки линии и по значению времени из глобальной переменной вычисляем значение цены в месте положения курсора мыши и присваиваем полученное значение переменной cena
return (string(cena));
}
Вызов всплывающей подсказки :
ObjectSetString(0,nameLine,OBJPROP_TOOLTIP, nameLine +"\n"+price( nameLine ));
Решение может быть следующим.
Разрешаем обработку перемещения мыши:
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
В OnChartEvent()
if (id==CHARTEVENT_MOUSE_MOVE) // id = 10 // перемещение мыши
{
Включаем преобразование координаты мыши по горизонтали во время. Присваиваем значению глобальной переменной значение полученного времени.
}
Cоздаем функцию, например :
string price(string xxx)
{
string tmp="";
double cena=0;
// xxx - имя линии, у которой во всплывающей подсказке должно быть выведено значение
// По точкам привзки линии и по значению времени из глобальной переменной вычисляем значение цены в месте положения курсора мыши cena
return (string(cena));
}
Вызов всплывающей подсказки :
ObjectSetString(0,nameLine,OBJPROP_TOOLTIP, nameLine +"\n"+price( nameLine ));
Офигеть… А я ПЯТЬ ЛЕТ всю думалку истерзал и ничего не придумал……………………………
Офигеть… А я ПЯТЬ ЛЕТ всю думалку истерзал и ничего не придумал……………………………
Программисты компании Метаквотес как-то решили эту задачу. А раз они это сделали, то решение существует.
Надеюсь предложенное решение будет работать.
Офигеть… А я ПЯТЬ ЛЕТ всю думалку истерзал и ничего не придумал……………………………
Чуть выше схема алгоритма работает неправильно. ТОчнее, она не работает.
Стал смотреть, как у меня решена похожая задача с тултипами в программе. И напрашивается достаточно громоздкий вариант.
1) создается массив с названиями линий, выведенных на график, для которых необходимо в тултипах выводить цену.
2) создается подпрограмма, в которую передается координата курсора. По координате вычисляется цена и время на графике. Перебором массива названий линий вычисляем, какая линия проходит через точку нахождения курсора.
3) Читается тултип вычисленной линии и заменяется текст в тултипе для данной линии. По другому никак.
4) Если через точку нахождения курсора проходит несколько линий, то для всех этих линий меняем текст тултипа.