Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 545

 
Ihor Herasko:

Покажите, как получаете то и другое. Пока складывается впечатление, что речь идет об одном и том же.

Нет, значения разные, проверял.

Вот этот скрипт бросаем на график:

void OnStart()
  {
//---
   int chartHandle=ChartGetInteger(0,CHART_WINDOW_HANDLE);
   int idChart = ChartID(); 
   Alert("CHART_WINDOW_HANDLE = ",chartHandle," idChart=",idChart); 

  }

И получаем:


 
khorosh:

Нет, значения разные, проверял.

Теперь понятно, о чем речь.

chartHandle - это дескриптор окна графика, назначаемый ОС. Через него можно обратиться к окну из других потоков через WinAPI.

idChart - это внутренний идентификатор графика, назначаемый самим терминалом. Его использовать можно только для работы из MQL.

 
Ihor Herasko:

Теперь понятно, о чем речь.

chartHandle - это дескриптор окна графика, назначаемый ОС. Через него можно обратиться к окну из других потоков через WinAPI.

idChart - это внутренний идентификатор графика, назначаемый самим терминалом. Его использовать можно только для работы из MQL.

Понятно, спасибо!

 
Ihor Herasko:

Теперь понятно, о чем речь.

chartHandle - это дескриптор окна графика, назначаемый ОС. Через него можно обратиться к окну из других потоков через WinAPI.

idChart - это внутренний идентификатор графика, назначаемый самим терминалом. Его использовать можно только для работы из MQL.

Значит, если надо обратиться к окну другого открытого терминала, следует пользоваться chartHandle ? А как определить идентификатор графика заданного символа из индикатора расположенного на графике другого символа? К примеру нужно, чтобы индикатор стоящий на символе EURJPY, создал объект, на графике USDJPY. Как определить  идентификатор   графика USDJPY?

 
khorosh:

Значит если надо обратиться к окну другого открытого терминала следует пользоваться chartHandle ? А как определить идентификатор графика заданного символа из индикатора расположенного на графике другого символа? К примеру нужно, чтобы индикатор стоящий на символе EURJPY, создал объект, на графике USDJPY. Как определить  идентификатор   графика USDJPY?

В справке по ChartID() по-моему есть пример перебора всех графиков терминала.
 
Artyom Trishkin:
В справке по ChartID() по-моему есть пример перебора всех графиков терминала.

Нет. там пусто. Пример в справке ChartNext. Всё, нашёл. Вопрос снимаю. Спасибо.

 
khorosh:

Значит, если надо обратиться к окну другого открытого терминала, следует пользоваться chartHandle ? 

При работе только в MQL chartHandle не нужен. Такая надобность может возникнуть при подключении DLL.

 
Как определить индекс окна в функции ObjectCreate() ?

bool  ObjectCreate(
   long          chart_id,                 // идентификатор графика
   string        object_name,          // имя объекта
   ENUM_OBJECT   object_type,   // тип объекта
   int           sub_window,            // индекс окна
   datetime      time1,                 // время первой точки привязки
   double        price1,                  // цена первой точки привязки
   ...
   datetime      timeN=0,             // время N-точки привязки
   double        priceN=0               // цена N-точки привязки
   );


 
khorosh:
Как определить индекс окна в функции ObjectCreate() ?




Он не определяется, а задаётся.

sub_window

[in]  Номер подокна графика. 0 означает главное окно графика. Указанное подокно должно существовать, в противном случае функция возвращает false.

 

WindowFind

WindowsTotal

Причина обращения: