Помогите с кодом!!!

 
Ситуация такая, пишу индикатор, он должен рисовать уровни поддержки и сопротивления. Застопорился вот на чем, рисует уровень правильно в виде отрезка(не луча), но как заставить этот отрезок доходить до нулевого бара под этим же углом?(Или направлением) И разумеется нужно знать эту цену. Может кто-нибудь помочь ???
 

1. 

ObjectSet("name", OBJPROP_RAY, true);

2.

ObjectGetValueByShift( string name, int shift) ;
 
Techno >>:
Ситуация такая, пишу индикатор, он должен рисовать уровни поддержки и сопротивления. Застопорился вот на чем, рисует уровень правильно в виде отрезка(не луча), но как заставить этот отрезок доходить до нулевого бара под этим же углом?(Или направлением) И разумеется нужно знать эту цену. Может кто-нибудь помочь ???

с приходом нового бара нужно линию перерисовывать изменяя вторую координату линии

цену второй координаты можно вычислить по формуле на основании 4-х координат известных

для построения трендовой линии,

в ветке Игоря Кима есть такая функция, ща поищу найду дам ссылку.

 

https://forum.mql4.com/ru/11287/page36#92278


Функция EquationDirect().

Уравнение прямой. Эта функция вычисляет значение ординаты Y для абсциссы X в точке пересечения с прямой, проведённой через две произвольные точки на графике. Функция принимает следующие обязательные параметры:

    * x1, y1 - Координаты первой точки.
    * x2, y2 - Координаты второй точки.
    * x - Значение, абсцисса для которой нужно вычислить ординату Y.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Уравнение прямой.                                              |
//|             Вычисляет значение Y для X в точке пересечения с прямой.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x1,y1 - координаты первой точки,                                        |
//|    x2,y2 - координаты второй точки,                                        |
//|    x     - значение, для которого вычислить Y                              |
//+----------------------------------------------------------------------------+
double EquationDirect(double x1, double y1, double x2, double y2, double x) {
  if (x2==x1) return(y1);
  return((y2-y1)/(x2-x1)*(x-x1)+y1);
}

 
satop >>:

с приходом нового бара нужно линию перерисовывать изменяя вторую координату линии

цену второй координаты можно вычислить по формуле на основании 4-х координат известных

для построения трендовой линии,

в ветке Игоря Кима есть такая функция, ща поищу найду дам ссылку.

зачем? если трендовая уже построена, то ObjectGetValueByShift("name", 0) даст ее значение на нулевом баре - хоть на каждом тике пересчитывайте

 

alsu, эта функция на нулевом баре дает 0 при каждом тике!!

Вот код

extern int period=60;
int index, index2;
int start()
{
ObjectDelete("up");
index=iHighest(NULL, 0, MODE_HIGH, period, 0);
index2=iHighest(NULL, 0, MODE_HIGH, period, period);
ObjectCreate("up", OBJ_TREND, 0, Time[index], High[index], Time[index2], High[index2]);
ObjectSet("up",OBJPROP_RAY,false);
double prise=ObjectGetValueByShift( "up", 0);
Alert("Prise=",prise);

 
Techno писал(а) >>
alsu, эта функция на нулевом баре дает 0 при каждом тике!!

трендовая линия должна быть лучом

 
ааа, точно, всем большое спасибо)))
 
Techno >>:

alsu, эта функция на нулевом баре дает 0 при каждом тике!!


int start()
{
Alert(ObjectGetValueByShift( "name", 0)) ;
}

вот картинка:


test

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