Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Следи за новостями. Заходи на официальный канал нашей компании!
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.09 11:19 
Есть индикатор на каждом графике. Нужно определить какой из графиков на данный момент активный (вроде аналога из WinAPI GetActiveWindow)
Alexey Volchanskiy
16172
Alexey Volchanskiy 2015.04.09 11:39  
barabashkakvn:
Есть индикатор на каждом графике. Нужно определить какой из графиков на данный момент активный (вроде аналога из WinAPI GetActiveWindow)

А если попробовать вот так? Из хелпа не очень ясно, что означают параметры, я не игрался.

CHART_FOREGROUND Ценовой график на переднем плане

CHART_BRING_TO_TOP Показ графика поверх всех других
 

long  ChartGetInteger(
   chart_id,           // идентификатор графика
   CHART_BRING_TO_TOP, // идентификатор свойства
   0                   // номер подокна, если требуется
   );
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.09 11:49  
VDev:

А если попробовать вот так? Из хелпа не очень ясно, что означают параметры, я не игрался.

CHART_FOREGROUND Ценовой график на переднем плане

CHART_BRING_TO_TOP Показ графика поверх всех других
 

С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Anton
1850
Anton 2015.04.09 14:05  
barabashkakvn:
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Используйте CHART_BRING_TO_TOP, были правки по просьбам пользователей, это свойство теперь можно читать.
pako
3313
pako 2015.04.09 14:13  
barabashkakvn:
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Файлы:
chart.ex4 4 kb
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.09 15:13  
pako:
Это что за *.ex4? Тут форум, а не Маркет.
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.09 16:15  
antt:
Используйте CHART_BRING_TO_TOP, были правки по просьбам пользователей, это свойство теперь можно читать.

Спасибо за подсказку. С помощью этого кода можно определить какой график в данный момент активный:

//+------------------------------------------------------------------+
//|                                      CHART_BRING_TO_TOP(GET).mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.01"
#property description "Determine the active chart"
//+------------------------------------------------------------------+
//| Determine the active chart                                       |
//| Определяем активный график                                       |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   EventSetTimer(3);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
//Print(__FUNCTION__);
//--- variables for chart ID
//--- переменные для идентификаторов графиков
   long currChart,prevChart=ChartFirst();
   bool var=false;
   int i=0,limit=100;
   while(i<limit)
      // We have certainly not more than 100 open charts
      // у нас наверняка не больше 100 открытых графиков
     {
      var=ChartGetInteger(prevChart,CHART_BRING_TO_TOP,0); // Get property CHART_BRING_TO_TOP
                                                           // получаем свойство CHART_BRING_TO_TOP
      if(var) // This vhart active? // Этот график активный?
        {
         string name=ChartSymbol(prevChart);
         string text="Chart "+name+" is active!";
         Print(text);
        }
      currChart=ChartNext(prevChart);  // Get the new chart ID by using the previous chart ID
                                       // на основании предыдущего получим новый график
      if(currChart<0) break;           // Have reached the end of the chart list
                                       // достигли конца списка графиков
      prevChart=currChart;             // let's save the current chart ID for the ChartNext()
                                       // запомним идентификатор текущего графика для ChartNext()
      i++;                             // Do not forget to increase the counter
                                       // не забудем увеличить счетчик
     }
  }
//+------------------------------------------------------------------+


Этот код работает и MQL4 (нужно только расширение сменить на *.mq4). 

Выложу в кодобазу. 

Stanislav Rozhdestvenskyi
4892
Stanislav Rozhdestvenskyi 2015.04.11 17:58  
Спасибо за идею и ее реализацию. Вот только не пойму, где это может понадобиться? Какие точки приложения? 
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.11 18:07  
yakor1988:
Спасибо за идею и ее реализацию. Вот только не пойму, где это может понадобиться? Какие точки приложения? 
В любой стратегии, где нужно знать какой график в данный момент активный.
Dennis Kirichenko
10980
Dennis Kirichenko 2015.04.23 09:13  
Владимир, а можно с помощью этого механизма выявить имена всех работающих советников в терминале?
Vladimir Karputov
Модератор
42208
Vladimir Karputov 2015.04.23 15:35  
denkir:
Владимир, а можно с помощью этого механизма выявить имена всех работающих советников в терминале?
По-моему нельзя. По крайней мере я не знаю функция, которая возвращает имя советника выполняющегося на графике.
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий