Почему не рисуются линии индикатора в MT4 - страница 2

 
Vitalii Ananev:

Так не проблема, надо только чуток поменять код.

СПАСИБО! Как у вас всё просто, а то справка целый текст разводит. :)

Осталось цвета настроить, но через "#property indicator_color1 Green" цвет не передаётся.

HLine("H1",iMA(NULL,PERIOD_H1,200,0,MODE_SMMA,PRICE_MEDIAN,0),indicator_color1);

Рисуется всё равно красным. ObjectSetInteger(0,name,OBJPROP_BGCOLOR,col); 

upd. Я схитрил, поставил три линии с соответствующими именами и цветами, а ваш код, теперь их "двигает". :)

Но это, конечно же, не решение. Цвет линий должен выбираться из настроек.

И не пойму, как устроить деинициализацию?

Куда ни ставлю bool HLineDelete(long chart_ID, string name);

Вылазит ошибка "'HLineDelete' - function must have a body"
 
Rice:

СПАСИБО! Как у вас всё просто, а то справка целый текст разводит. :)

Осталось цвета настроить, но через "#property indicator_color1 Green" цвет не передаётся.

Рисуется всё равно красным. ObjectSetInteger(0,name,OBJPROP_BGCOLOR,col); 

И не пойму, как устроить деинициализацию?

Куда ни ставлю bool HLineDelete(long chart_ID, string name);

Вылазит ошибка "'HLineDelete' - function must have a body"

Функция HLine принимает только два параметра имя объекта и его координату (цена). Что бы установить еще и цвет то вот:

void HLine(string name,double price, color ObjColor=clrRed)
{   
    if (ObjectFind(0,name)==-1)
    {   
      ObjectCreate(0,name, OBJ_HLINE, 0, 0, price);
      ObjectSetInteger(0,name,OBJPROP_COLOR,ObjColor);
    } else
    {
      ObjectMove(0,name,0,0,price);
      if (ObjectGetInteger(0,name,OBJPROP_COLOR,0)!=ObjColor)
        ObjectSetInteger(0,name,OBJPROP_COLOR,ObjColor);
    } 
}
 
Vitalii Ananev:

Функция HLine принимает только два параметра имя объекта и его координату (цена). Что бы установить еще и цвет то вот:

Так я добавил третий параметр: void HLine(string name,double price, color col)

Но как передать цвет именно через настройки индикатора "#property indicator_color1 Red", а не в самой функции писать?

Я выписал в самом начале эти три свойства, но они не работают.

 
Rice:

Так я добавил третий параметр: void HLine(string name,double price, color col)

Но как передать цвет именно через настройки индикатора "#property indicator_color1 Red", а не в самой функции писать?

Я выписал в самом начале эти три свойства, но они не работают.

Просто через input. #property indicator_color не нужен будет.

....
input color H1Clr = clrRed;
input color H4Clr = clrBlue;
input color D1Clr = clrLime;

....
HLine("H1",...,H1Clr);
и т.д.
Чтобы удалить линию просто пишите ObjectDelete(0,name);
 
Vitalii Ananev:

Просто через input. #property indicator_color не нужен будет.

Чтобы удалить линию просто пишите ObjectDelete(0,name);

Сколько тонкостей, что порезаться можно. :)

Спасибо вам большое!

 

Вот результат наших стараний. :)

3 EMA Levels - индикатор для MetaTrader 4