Активный, в данный момент график.
- Дайте, пожалуйста, больше свободы по управлению окнами графиков
- Помогите склеить два советника в один
- Активация существующего графика, не активного в данный момент времени
Есть индикатор на каждом графике. Нужно определить какой из графиков на данный момент активный (вроде аналога из WinAPI GetActiveWindow)
А если попробовать вот так? Из хелпа не очень ясно, что означают параметры, я не игрался.
CHART_FOREGROUND Ценовой график на переднем плане
CHART_BRING_TO_TOP Показ графика поверх всех других
long ChartGetInteger( chart_id, // идентификатор графика CHART_BRING_TO_TOP, // идентификатор свойства 0 // номер подокна, если требуется );
А если попробовать вот так? Из хелпа не очень ясно, что означают параметры, я не игрался.
CHART_FOREGROUND Ценовой график на переднем плане
CHART_BRING_TO_TOP Показ графика поверх всех других
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
С помощью этого свойства можно организовать переключение графиков: Переключение графиков, мне же нужно определить, какой график в данный момент активный.
Используйте 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).
Выложу в кодобазу.
Спасибо за идею и ее реализацию. Вот только не пойму, где это может понадобиться? Какие точки приложения?
Владимир, а можно с помощью этого механизма выявить имена всех работающих советников в терминале?