Как наити и затем отобразить граффический объект на графике?

[Удален]  

У меня такой вопрос:

На ценовом графике терминала где-то есть некий графический объект (допустим вертикальная линия) с именем N (допустим "LineFor") - имя мне известно.

Мне нужно наити этот объект по имени и отобразить его на графике - сместить ценовой график в точку, где установлен объект.

Все это нужно сделать программно, то есть допустим (как вариант) нужно написать скрипт, в который перед компиляцей забивается имя этого обекта,

компилируется, запускается и ценовой график смещается в точку, где находиться данный объект.

Вопрос: это вообще можно сделать программно? Если можно, то как?

Зарание благодарен.

[Удален]  
Одними средствами MQL4 по моему это сделать нельзя. Как вариант в терминале: Графики > Объекты > Список объектов > Показать.
 
string ObjectDescription (string name) 
// Функция возвращает описание объекта. Для объектов типа OBJ_TEXT и OBJ_LABEL возвращается текст, отображаемый этими объектами.
// Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). 
[Удален]  

to Murman


на графике одновременно могут находиться тысячи объектов - их создает индикатор как пояснение к той или иной ситуации

меня интерисует только небольшая часть из них, имена которых я знаю - эти имена им дает индикатор по определенной схеме

поэтому я их знаю.

В такой ситуации выбирать по схеме: Графики > Объекты > Список объектов > Показать.

кране неудобно - этот вариант не подходит.

Есть еще варианты.
[Удален]  
Как могут прокоментировать этот вопрос ГУРУ MQL-ля.
 
somi >>:

У меня такой вопрос:

На ценовом графике терминала где-то есть некий графический объект (допустим вертикальная линия) с именем N (допустим "LineFor") - имя мне известно.

Мне нужно наити этот объект по имени и отобразить его на графике - сместить ценовой график в точку, где установлен объект.

Все это нужно сделать программно, то есть допустим (как вариант) нужно написать скрипт, в который перед компиляцей забивается имя этого обекта,

компилируется, запускается и ценовой график смещается в точку, где находиться данный объект.

Вопрос: это вообще можно сделать программно? Если можно, то как?

Зарание благодарен.

найти объект и изменить его координаты труда не составит, а что значит сместить ценовой график?

 

Всё можно. Только надо будет функции API использывать. Вот скрипт, который двигает и обновляет график.

#property show_inputs
//----Внешние параметры.---------------------------------------------
extern int    NumberBar = 200;  // Конец истории в барах от конца истории в окне.
extern double PERIOD    = 0.5;  // Период в секундах между тиками и сменой баров.
//----Включаемые файлы.----------------------------------------------
#include <WinUser32.mqh>
//===================================================================
int start()
 {
  int i;
  int h = WindowHandle (Symbol(), NULL);
  PostMessageA (h, WM_KEYDOWN, 36, 1);
  PostMessageA (h, WM_KEYUP, 36, 1);
  for (i = 0; i < NumberBar && !IsStopped(); i++)
   {
    PostMessageA (h, WM_COMMAND, 33324, 0); // Обновляем график.
    PostMessageA (h, WM_KEYDOWN, 123, 1); // Сдвигаем на один бар.
    Sleep (1000 * PERIOD);
   }
  PostMessageA (h, WM_KEYUP, 123, 1);
 }
Разберитесь. Сделайте, чтобы скрипт двигал график до нужного бара. Функцию для описание объекта показал выше. Из неё возьмёте дату бара. Потом получите его номер...
[Удален]  

to Gutman


"cместить ценовой график"

обозначае то, что допустим я смотрю на ценовой график - на графическое отображение котировок, я знаю что гдето там, за пределами зоны видимости есть графический объект с именем m.

Мне нужно наити этот объект и сместить к нему зону видимости, то есть в результате выполнения программного кода я хочу увидить этот графический объект с именем m (пускай он будет в крайне левой точке зоны видимости - неважно) - просто перекручивать весь график катировок с целью поиска нужного мне объекта довольно неблагодарная затея.

Надеюсь этих пояснений хватит, если нет, то спросите еще раз - постараюсь пояснить по другому.

 

Вот ещё функция:

double ObjectGet (string name, int prop_id) 
// Функция возвращает значение указанного свойства объекта. Для получения информации об ошибке необходимо вызвать функцию GetLastError(). 
Та, которую показал выше, не совсем то, что Вам надо.
 
somi >>:

to Gutman


"cместить ценовой график"

обозначае то, что допустим я смотрю на ценовой график - на графическое отображение котировок, я знаю что гдето там, за пределами зоны видимости есть графический объект с именем m.

Мне нужно наити этот объект и сместить к нему зону видимости, то есть в результате выполнения программного кода я хочу увидить этот графический объект с именем m (пускай он будет в крайне левой точке зоны видимости - неважно) - просто перекручивать весь график катировок с целью поиска нужного мне объекта довольно неблагодарная затея.

Надеюсь этих пояснений хватит, если нет, то спросите еще раз - постараюсь пояснить по другому.

понятно!

для начала надо вычислить координату времени

вы потом хотите показать в окне участок в истории где расположен объект ?

ну в смысле аналог поиска !

только первая же котировка сместит если не отключить смещение графика

[Удален]  

to

Zhunko



Благодарю.

А еще вопрос по API функциям можно:

определить хендел нужного окна смогу (вы уже привели пример),

определить первую координату времени графического объекта по имени смогу (функция ObjectGet)- в итоге получу строку в формате "2008.04.20 10:00",

послать нажатие кнопки "Enter" окну по хендлу смогу.

Вопрос: как послать в окно опредеелнную ранее строку времени - первую координату времени объекта - то есть нужно съэмитировать забитие координаты времени и нажатие кнопки "Enter"еще раз.

Пояснение: Основной вопрос заключается в том, как передать строку времени в окно с определенным ранее хендлом.

Можно съэмитировать последовательное нажатие клавиш в соответствии со строкой времени, но это помоему делитанский подход. Можно это сделать как-то по другому.



Заранее благодарен.