Линия не луч. Как? - страница 2

 

Сейчас код имеет следущий вид 

void DrawIndicatorTrendLine(datetime x1,datetime x2,double y1,
                            double y2,color lineColor,int style)
  {
   int chart_ID=WindowFind("MACD(12,26,9)");
//   int chart_ID=1;
   if(chart_ID<0)
      return;
   string label="MACD_DivergenceLine "+DoubleToStr(x1,0);
   ObjectDelete(label);
 //  ObjectCreate(label,OBJ_TREND,indicatorWindow,x1,y1,x2,y2);
   ObjectCreate(label,OBJ_TREND,chart_ID,x2,y2,x1,y1);
   ObjectSetInteger(chart_ID,label,OBJPROP_COLOR,lineColor);
   ObjectSetInteger(chart_ID,label,OBJPROP_RAY_RIGHT,false);
   ObjectSetInteger(chart_ID,label,OBJPROP_RAY_LEFT,false);
   ObjectSetInteger(chart_ID,label,OBJPROP_STYLE,style);
 Print(__FUNCTION__,": chart_ID= : ",chart_ID,"   Время =   ",TimeToString(Time[0])); 
  }

 Рисует правильно и в том окне где надо (и цвет линии при вызове функции меняет по желанию), но почему то луч.

 
ForTorg ZEVs:

Сейчас код имеет следущий вид 

 Рисует правильно и в том окне где надо (и цвет линии при вызове функции меняет по желанию), но почему то луч.

Пожалуйста:

  1. Правильно вставляем код на форуме
  2. Перед вставкой кода применяйте команду "Стилизатор"

Ещё раз: когда Вы меняете свойства объекта (в данном случае трендовая линии) Вам нужен идентификатор графика, а не номер подокна. Идентификатор графика равен 0 и означает текущий график.

 

Ну неужели так трудно запустить мой пример? И код есть и картинки... 


 
Karputov Vladimir:

Пожалуйста:

  1. Правильно вставляем код на форуме
  2. Перед вставкой кода применяйте команду "Стилизатор"

Ещё раз: когда Вы меняете свойства объекта (в данном случае трендовая линии) Вам нужен идентификатор графика, а не номер подокна. Идентификатор графика равен 0 и означает текущий график.

 

Ну неужели так трудно запустить мой пример? И код есть и картинки... 


Спасибо. Все получилось. Запутался в терминологии.
 
ForTorg ZEVs:
Спасибо. Все получилось. Запутался в терминологии.
Пожалуйста.
 

Добрый день. Опять проблема. Не могу разобраться теперь в другом. Как сделать чтоб вертикальная линия (желтая) не рисовалась на графике индикатора?

 

использую следующий код.

DrawVertLine("ExtremUp",div[0].ExUpTime,clrYellow,2);  //Рисуем вертикальную линию
//+------------------------------------------------------------------+
//|       Рисуем вертикальную линию                                  |
//+------------------------------------------------------------------+
void DrawVertLine(const string inpName,datetime timeline,color clr=Red,int width=1)
  {
   string time=TimeToString(timeline);
   string name=inpName+time;
   if(ObjectFind(name)<0) ObjectCreate(0,name,OBJ_VLINE,0,timeline,0);
   ObjectSetInteger(0,name,OBJPROP_BACK,true);
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
   if(!ObjectSetInteger(0,name,OBJPROP_RAY,false))
      Print(GetLastError());
   ResetLastError();
  }

 Простите за глупые вопросы. Но очень хочется чтоб в процессе отладки советник все рисовал.

Ошибок не принтует. Все остальное работает.(цвет, толщина) 

 

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

Правильно вставляем код на форуме

А попробуйте запустить пример из справки - по умолчанию вертикальная линия не запрыгивает в подокна индикаторов.

(Пример приложен внизу). 

Файлы:
OBJ_VLINE.mq5  8 kb
 
Karputov Vladimir:

А попробуйте запустить пример из справки - по умолчанию вертикальная линия не запрыгивает в подокна индикаторов.

(Пример приложен внизу). 

На MQL4 не работает, а на MQL5 все ок. Возможно сделать так на  MQL4 ?
 

в MQL4 другое управление лучами -OBJPROP_RAY и OBJPROP_RAY_RIGHT

для MQL5 - OBJPROP_RAY_RIGHT и OBJPROP_RAY_LEFT