Скачать MetaTrader 5

Как найти окно с индикатором?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Язык MQL5 поддерживает технологию OpenCL. Попробуй сам!
Aleksandr Chugunov
4815
Aleksandr Chugunov 2010.09.24 09:38 

На один график мне нужно установить один и тот же индикатор несколько раз. Если у него нет явных входных параметров (берёт из вне) я не могу сформировать для него уникальное короткое имя.

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

Примечание - и что бы это не зависело от пользователя (внешний параметр к примеру)

hrenfx
3672
hrenfx 2010.09.24 09:53  
GlobalVariableSet("hwnd" + WindowHandle(Symbol(), Period()) + "_" + WindowsTotal(), 0);
Aleksandr Chugunov
4815
Aleksandr Chugunov 2010.09.24 09:56  
hrenfx:

Предположим уже установлено 3 копии.

Я удаляю средний и добавляю ещё один....

Кроме того для может быть открыто несколько Symbol(), Period()

hrenfx
3672
hrenfx 2010.09.24 10:01  
AlexSTAL:
Если у него нет явных входных параметров (берёт из вне) я не могу сформировать для него уникальное короткое имя.

Ничего не мешает менять короткое имя по аналогии сверху.

 

Кроме того для может быть открыто несколько Symbol(), Period()


MT4 все равно так выдаст хэндл графика, на котором запущен индикатор.
hrenfx
3672
hrenfx 2010.09.24 10:09  

Подключаем творческую извилину:

string Name = "hwnd" + WindowHandle(Symbol(), Period()) + "Count";

if (!GlobalVariableCheck(Name))
  GlobalVariableSet(Name, WindowsTotal());

int WT = GlobalVariableGet(Name);

GlobalVariableSet("hwnd" + WindowHandle(Symbol(), Period()) + "_" + WT, 0);
GlobalVariableSet(Name, WT + 1); 
Aleksandr Chugunov
4815
Aleksandr Chugunov 2010.09.24 10:09  
hrenfx:

Ничего не мешает менять короткое имя по аналогии сверху.

Мешает вот это: Предположим уже установлено 3 копии. Я удаляю средний и добавляю ещё один....


hrenfx:

MT4 все равно так выдаст хэндл графика, на котором запущен индикатор.

А если он везде запущен? Не вариант....


Короче наверное самый простой способ будет присваивать дополнительно порядковый номер короткому имени, определяемый с помощью банального перебора (если не найдено окно, то номер наш), верно?

Aleksandr Chugunov
4815
Aleksandr Chugunov 2010.09.24 10:10  
hrenfx:

Подключаем творческую извилину:


Глобальные переменные можно отредактировать, удалить и т.д.
hrenfx
3672
hrenfx 2010.09.24 10:10  
AlexSTAL:
А если он везде запущен? Не вариант....
Так это дерьмо должно быть вставлено в инициализацию самого индикатора.
hrenfx
3672
hrenfx 2010.09.24 10:12  
AlexSTAL:
Глобальные переменные можно отредактировать, удалить и т.д.
В жизни дохрена приколов бывает. Можно ничего не делать - тоже вариант.
o_o
Модератор
23690
o_o 2010.09.24 10:12  

AlexSTAL:

Короче наверное самый простой способ будет присваивать дополнительно порядковый номер короткому имени, определяемый с помощью банального перебора (если не найдено окно, то номер наш), верно?

да. можно еще TimeLocal или GetTickCount
Aleksandr Chugunov
4815
Aleksandr Chugunov 2010.09.24 10:25  
hrenfx:
В жизни дохрена приколов бывает. Можно ничего не делать - тоже вариант.

Просто есть более безопасные способы, вот и всё....

спасибо за участие

sergeev:
да. можно еще TimeLocal или GetTickCount

Спасибо


тема закрыта

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий