Как в скрипте или роботе (советнике), запущенном на активном графике, нарисовать объект на неактивном графике ?!

 

Все объекты рисуются на активном графике.

Если робот мультивалютный, то для контроля необходимо рисовать объекты и на других, неактивных вкладках (графиках).

Подскажите как это сделать ?!

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

LEOK:

Все объекты рисуются на активном графике.

Если робот мультивалютный, то для контроля необходимо рисовать объекты и на других, неактивных вкладках (графиках).

Подскажите как это сделать ?!

А параметр "Индекс окна, в которое будет добавлен объект" в https://docs.mql4.com/ru/objects/ObjectCreate не пробовали задавать?

 
abolk:
А параметр "Индекс окна, в которое будет добавлен объект" в https://docs.mql4.com/ru/objects/ObjectCreate не пробовали задавать?

На четверке не получится, рисуем только в родном окне, и его подокнах. так что все равно какую то софтину на этом окне запускать прийдется.
 
abolk:

А параметр "Индекс окна, в которое будет добавлен объект" в https://docs.mql4.com/ru/objects/ObjectCreate не пробовали задавать?


Это не прокатит. Там номер окна имеет другое смысловое значение !
 
Отвечая на ваш вопрос прямо - никак.
 
FAQ:

На четверке не получится, рисуем только в родном окне, и его подокнах. так что все равно какую то софтину на этом окне запускать прийдется.


Т.е. переходим в программе по <Сtrl>+<Tab> по вкладкам:

	int delay  = 10;
	keybd_event (0x11, 0, 0, 0); Sleep (delay); // Ctrl
        keybd_event (0x09, 0, 0, 0); Sleep (delay); // Tab
        keybd_event (0x11, 0, 2, 0); Sleep (delay);
        keybd_event (0x09, 0, 2, 0); Sleep (delay);

и запускаем необходимую "софтину".


Так, примерно ?

 
LEOK:

Все объекты рисуются на активном графике.

Если робот мультивалютный, то для контроля необходимо рисовать объекты и на других, неактивных вкладках (графиках).

Подскажите как это сделать ?!

ну через одно место возможно и так попробовать:

на нужных тебе графиках запускаешь индикатор№1 - тот который рисует что тебе надо

на активный график ставишь ещё и индикатор №2 - который рассчитывает необходимые значения для рисования и загоняет их в Глобальные переменные - откуда инд№1 считают их и нарисуют что надо


во как :)

(ЗЫ - инд№1 может совмещать в себя и №2)

 
LEOK:


Т.е. переходим в программе по <Сtrl>+<Tab> по вкладкам:

и запускаем необходимую "софтину".


Так, примерно ?


Для этого надо выяснить сначала, можно ли запустить другую софтину при помощи винапи на чужом окне, я этим вопросом не задавался.

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

 
LEOK:


Т.е. переходим в программе по <Сtrl>+<Tab> по вкладкам:

и запускаем необходимую "софтину".


Так, примерно ?

Ctrl+Tab немного залипает. Может проскочить сразу несколько окон.

Лучше явно проходить по ним через FindWindow и отображать каждое окно по очереди.

 
sergeev:

Ctrl+Tab немного залипает. Может проскочить сразу несколько окон.

Лучше явно проходить по ним через FindWindow и отображать каждое окно по очереди.


Спасибо за полезную добавку, хотя наверно, можно поставить Sleep(100) перед каждым переключением, чтоб не залипало ?!
Причина обращения: