Скачать MetaTrader 5

Активный, в данный момент график.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
49987
Vladimir Karputov  
Есть индикатор на каждом графике. Нужно определить какой из графиков на данный момент активный (вроде аналога из WinAPI GetActiveWindow)
Alexey Volchanskiy
17144
Alexey Volchanskiy  
barabashkakvn:
Есть индикатор на каждом графике. Нужно определить какой из графиков на данный момент активный (вроде аналога из WinAPI GetActiveWindow)

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

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

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

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

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

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

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

С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Anton
1859
Anton  
barabashkakvn:
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Используйте CHART_BRING_TO_TOP, были правки по просьбам пользователей, это свойство теперь можно читать.
pako
3319
pako  
barabashkakvn:
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Файлы:
chart.ex4 4 kb
Vladimir Karputov
Модератор
49987
Vladimir Karputov  
pako:
Это что за *.ex4? Тут форум, а не Маркет.
Vladimir Karputov
Модератор
49987
Vladimir Karputov  
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
5802
Stanislav Rozhdestvenskyi  
Спасибо за идею и ее реализацию. Вот только не пойму, где это может понадобиться? Какие точки приложения? 
Vladimir Karputov
Модератор
49987
Vladimir Karputov  
yakor1988:
Спасибо за идею и ее реализацию. Вот только не пойму, где это может понадобиться? Какие точки приложения? 
В любой стратегии, где нужно знать какой график в данный момент активный.
Dennis Kirichenko
11377
Dennis Kirichenko  
Владимир, а можно с помощью этого механизма выявить имена всех работающих советников в терминале?
Vladimir Karputov
Модератор
49987
Vladimir Karputov  
denkir:
Владимир, а можно с помощью этого механизма выявить имена всех работающих советников в терминале?
По-моему нельзя. По крайней мере я не знаю функция, которая возвращает имя советника выполняющегося на графике.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий