Как научиться создавать графические объекты? MQL4. - страница 4

 
Integer:

Перед созданием можно сделать проверку, существует ли объект, функция ObjectFind(). Можно ничего не делать, существует и ладно, не страшная ошибка.

Множество объектов. Можно к имени объекта добавлять время бара, получится уникальное имя.

Обрезать луч. Свойство ObjectSet(Name,OBJPROP_RAY,false);      

Ого! Ваши мысли прочитал. Уже сделал. Имени присвоил текущее время.

Обрезать луч. То есть запоминаю старое имя ставлю фальш? 

 
forexman77:

...

Обрезать луч. То есть запоминаю старое имя ставлю фальш? 

Сразу после создания вызвать  ObjectSet() с тем же именем, с которым выполнялось создание.
 

Пробую рисовать объекты в советнике, подокне индикатора (MQL4)

Индикатор один, значит подокно должно быть под номером 1.

long   chart_ID=0;        // ID графика
int win_idx=1;
string nameobj=TimeToStr(Time[0]);       
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            } 

 Отрисовки нет. Выходит ошибка 4206 (Не найдено указанное подокно)

Визуально вроде советник открывает сделки, как надо. То есть переменные "Time[index],maximum1,Time[1],TRENDmax[1]" корректны.

 
forexman77:

Пробую рисовать объекты в советнике, подокне индикатора (MQL4)

Индикатор один, значит подокно должно быть под номером 1.

 Отрисовки нет. Выходит ошибка 4206 (Не найдено указанное подокно)

Вместо "1" ставьте ChartWindowFind().
 
Karputov Vladimir:
Вместо "1" ставьте ChartWindowFind().

Как получить короткое наименование индикатора в советнике? 

В самом индикаторе сделал короткое наименование

IndicatorShortName("fraktalSDV");
 

Сделал скрипт:

void OnStart()
  {
string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,shortName);
Alert("Окно = ", win_idx);
  }

 окно выводится, как надо.

В советнике:

string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,shortName);
         Print("shortName=",shortName);
         string nameobj=TimeToStr(Time[0]);          
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            } 

 получаю номер подокна -1

 
forexman77:

Сделал скрипт:

 окно выводится, как надо.

В советнике:

 получаю номер подокна -1

У Вас точно на графике есть индикатор в подокне с коротким именем "fraktalSDV"? 
 
Karputov Vladimir:
У Вас точно на графике есть индикатор в подокне с коротким именем "fraktalSDV"? 
Когда включаю визуализацию в тестере, он появляется в конце прогона.
 
forexman77:
Когда включаю визуализацию в тестере, он появляется в конце прогона.
Создайте шаблон с индикатором и сохраните этот шаблон под именем tester.
 
Karputov Vladimir:
Создайте шаблон с индикатором и сохраните этот шаблон под именем tester.

То есть, создать профиль графика с индикатором?

Попробовал индикатор в тестере пустить, на замедленном режиме, он отрисовывается.