Рисование линий на разных ТФ одной пары.

 

Господа, подскажите, как сделать:

эксперт приклеен к определенному графику (например Н-1 GBPUSD). Эксперт рисует линию на графике, где будет открывать позицию (Sell_Level – это уровень открытия позиции)

Рисую линию в основном окне, к которому эксперт приклеен

ObjectCreate("Sell_Level",OBJ_HLINE,0,0,Sell_Level);

ObjectSet("Sell_Level",OBJPROP_COLOR,LimeGreen);

ObjectSet("Sell_Level",OBJPROP_STYLE,STYLE_DASHDOTDOT);

Далее вопрос: как эту линию перенести на все остальные графика этой пары? (если открыты D1, например или М15, или новое окно открою с GBPUSD). Хочу, что бы линия отображалась на всех ТФ этой пары. Что-то у меня ничего не получается.

Или подскажи, как обратится к окну графика, Handle которого я знаю.

Например:

int WinHandle_240 =WindowHandle(“GBPUSD”,240); // получил Handle нужного мне окна

А дальше что? Как к этому окну обратится, чтобы нарисовать там что-нибудь?

 

Попробуйте так ObjectCreate("Sell_Level",OBJ_HLINE,WinHandle_240,0,Sell_Level);

===================

bool ObjectCreate( string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0) 
Создание объекта с указанным именем, тип и начальные координаты в указанном подокне графика. Число координат, связываемых с объектом, может быть от 1 до 3 в зависимости от типа. При успешном создании объекта функция возвращает TRUE, иначе FALSE. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
Объекты с типом OBJ_LABEL игнорируют координаты. Используйте функцию ObjectSet() для установки свойств OBJPROP_XDISTANCE и OBJPROP_YDISTANCE.
Замечания: нумерация подокон графика (если на графике есть подокна с индикаторами) начинается с 1. Главное окно графика есть всегда и имеет индекс 0.
Координаты должны передаваться парами - время и цена. Для примера, объекту OBJ_VLINE требуется только время, но также нужно передать и цену (любое значение). 
Параметры:
name - Уникальное имя объекта. 
type - Тип объекта. Может быть любым из типов объектов. 
window - Индекс окна, в которое будет добавлен объект. Индекс окна должен быть большим или равным 0 и меньшим, чем WindowsTotal(). 
time1 - Время первой координаты. 
price1 - Цена первой координаты. 
time2 - Время второй координаты. 
price2 - Цена второй координаты. 
time3 - Время третьей координаты. 
price3 - Цена третьей координаты. 

 
nen :

Попробуйте так ObjectCreate("Sell_Level",OBJ_HLINE,WinHandle_240,0,Sell_Level);

===================

К сожалению, так ничего не получается. В функции ObjectCreate() window –это индекс окна, в которое будет добавлен объект. Это окно индикатора та том же timeframe, где и эксперт работает. А мне надо как-то обратиться к окну другого timeframe.

 
Попробуйте на форуме программистов на mql4 http://forum.mql4.com/ru/ поискать ответ. Если не найдете там, то задайте там вопрос.
 

Взять из экспа всё необходимое для расчёта и рисования линии и перенести это в индикатор, потом цеплять этот индикатор на нужный фрейм.

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

Больше никак.

 
MaStak :

Взять из экспа всё необходимое для расчёта и рисования линии и перенести это в индикатор, потом цеплять этот индикатор на нужный фрейм.

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

Больше никак.

Спасибо, именно так и сделал. Эксперт создает/удаляет глобальные переменные, а индикатор рисует.

С другой стороны если уж есть функция определения Handle окна, должны быть и функции для работы с этим окном. Может быть в МТ5 что-нибудь будет.

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