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

 

Попробовал код советника перенести в скрипт.

В скрипте линии наложились,  не понятно, почему в советнике не получается?

 

У кого на четверке получилось рисовать объекты  в подокне графика, при запуске визуализации советника?


 
forexman77:

Попробовал код советника перенести в скрипт.

В скрипте линии наложились,  не понятно, почему в советнике не получается?

 

У кого на четверке получилось рисовать объекты  в подокне графика, при запуске визуализации советника?


Указывайте номер подокна индикатора, в котором рисовать собираетесь.
 
Artyom Trishkin:
Указывайте номер подокна индикатора, в котором рисовать собираетесь.

Так указываю выдает -1 в советнике. В скрипте все нормально отрисовывает, картинка выше. Читал Вашу статью про AD индикатор, много когда, пока не разобрался. Как всегда причина в какой-нибудь мелочи.

На сколько понимаю в советнике почему-то окно не обнаруживается, ошибка 4206. 

 
forexman77:

Так указываю выдает -1 в советнике. В скрипте все нормально отрисовывает, картинка выше. Читал Вашу статью про AD индикатор, много когда, пока не разобрался. Как всегда причина в какой-нибудь мелочи.

На сколько понимаю в советнике почему-то окно не обнаруживается, ошибка 4206. 

Окну с индикатором нужно время на создание. В индикаторном окне можно рисовать не ранее первого вызова OnCalculate(). A Bы небось всё в OnInit() хотите нарисовать?
 
Karputov Vladimir:
Окну с индикатором нужно время на создание. В индикаторном окне можно рисовать не ранее первого вызова OnCalculate(). A Bы небось всё в OnInit() хотите нарисовать?
Нет. Только после открытия сделки, то есть сначала идут строки открытия позиции, когда она открывается начинается отрисовка.

Вот код в советнике.

string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,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);
            }
ObjectSet(nameobj,OBJPROP_RAY,false); 

 В самом индикаторе есть строка:

IndicatorShortName("fraktalSDV");

 

 
forexman77:

Так указываю выдает -1 в советнике. В скрипте все нормально отрисовывает, картинка выше. Читал Вашу статью про AD индикатор, много когда, пока не разобрался. Как всегда причина в какой-нибудь мелочи.

На сколько понимаю в советнике почему-то окно не обнаруживается, ошибка 4206. 

Он не находит подокно индикатора. Ищите окно индикатора по короткому имени индикатора - то, которое вы видите вверху-слева окна индикатора. Наверняка вы не всё имя прописываете для поиска.
 
Artyom Trishkin:
Он не находит подокно индикатора. Ищите окно индикатора по короткому имени индикатора - то, которое вы видите вверху-слева окна индикатора. Наверняка вы не всё имя прописываете для поиска.

 string   shortName="fraktalSDV";

Так и вызываю. Попробовал вызвать название индикатора в советник и распринтовать, пока не получилось. 

Вот сам индикатор, что сделал. Потом удалю его. 

 
forexman77:

 string   shortName="fraktalSDV";

Так и вызываю. Попробовал вызвать название индикатора в советник, пока не получилось. 

Попробуйте в

int win_idx=ChartWindowFind(chart_ID,shortName);

вписать не поиск окна индикатора, а единицу (окно же одно на графике?)

Если заработает, то верните поиск окна на место и в

long   chart_ID=0;        // ID графика

впишите

long   chart_ID=ChartID();
 
Artyom Trishkin:

Попробуйте в

вписать не поиск окна индикатора, а единицу (окно же одно на графике?)

Вверху сам график с котировками и внизу в сепарате индикатор.
 
forexman77:
Вверху сам график с котировками и внизу в сепарате индикатор.
Ну так сделайте, что говорят вам ;) Искать-то ошибку нужно...
Причина обращения: