Проблема с отрисовкой паралельных линий. - страница 3

 
VladislavVG:

Для того, чтобы нарисовать линию нужны 2-е точки. Координаты первой известны - это та, через которую проходит линия. Координаты второй можно задать произвольно, но наложить условие, чтобы она лежала на прямой. В данном случае координаты второй точки заданы смещением относительно первой - можно задавать любой сдвиг. А реальные координаты вычисляются через уравнение прямой А2,В2,С2. У меня по умолчанию сдвиг 10.

Удачи.

ЗЫ могу функции запостить, если надо... тока "выдрать" придется...

так ему вроде просто нужно провести прямую через точку, параллельно заданной прямой.
 

да, именно паралельную прямую через заданную точку.


кстати, постоянно пишет:

2010.10.14 18:39:02 2010.02.11 17:00 Exp - voya2007 v3 EURUSD,Daily: object name passed to ObjectGet function cannot be an uninitialized or empty string

3 года программлю, с линиями до конца не разобрался - просьба не пинать


Так вот, насчет обнаружения линий по имени, - предвариьтельно все имена проверяю, например:



double ObjectGetFunc(string name, int prop_id) 
{
if (name!="")return(ObjectGet(name,prop_id));
else return(-1);
}

bool ObjectFindFunc(string name) 
{
if (name!="")return(ObjectFind(name));
else return(-1);

}

bool ObjectSetFunc( string name, int prop_id, double value) 
{
if (name!="")return(ObjectSet(name,prop_id,value));
else return(0);
}
 
int fMyTime(int aShift){
      if(aShift<0){
         return(Time[0]+Period()*60*MathAbs(aShift));
      }
   return(Time[aShift]);
}

int fMyBarShift(datetime aTime){
   if(aTime>Time[0]){
      return((Time[0]-aTime)/(Period()*60));
   }
   else{
      return(iBarShift(NULL,0,aTime,false));
   }
}

Парочка спасительных функций. Координаты точек линий переводим в бары, делаем вычисления, потом перводим назад во врмея и рисуем.

 

Сенкс

 
sanyooooook:
так ему вроде просто нужно провести прямую через точку, параллельно заданной прямой.
Так я именно это и написал: как вычислить координаты второй точки искомой прямой через уравнение прямой, проходящей через заданную точку параллельно заданной прямой. Если базовая прямая задана точками, как это обычно бывает. Первая точка - это та, что задана и через которую проходит искомая прямая. О как завернул ..... :)....
 

а стандартная функция медленно работает ?

double ObjectGetValueByShift( string name, int shift)
Функция вычисляет и возвращает значение цены для указанного бара (смещение относительно текущего бара). Значение цены вычисляется при помощи линейного уравнения по первой и второй координатам. Применяется для трендовых линий и аналогичных объектов. Для получения информации об ошибке необходимо вызвать функцию GetLastError().
См. также ObjectGetShiftByValue().


 
находим значение цены линии по координате времени точки, меряем расстояние в пунктах, и на любом баре к значению цены линии прибавляем расстояние которое намеряли, вот вторая точка проводим линию по двум точкам.
 
sanyooooook:
находим значение цены линии по координате времени точки, меряем расстояние в пунктах, и на любом баре к значению цены линии прибавляем расстояние которое намеряли, вот вторая точка проводим линию по двум точкам.

Можно. Предпочитаю полный контроль над алгоритмом. На МТ4 жизнь ведь не заканчивается ;). Тем более - там 10-30 строк кода (от стиля написания зависит) + возможность проверить правильность вычислений.

Удачи.

 
VladislavVG:

Можно. Предпочитаю полный контроль над алгоритмом. На МТ4 жизнь ведь не заканчивается ;). Тем более - там 10-30 строк кода (от стиля написания зависит) + возможность проверить правильность вычислений.

Удачи.

ну это уже дело техники )
 

Ребята, составил картинку, и не пойму кто врет, либо калькулятор в языке, либо равноудаленный канал :-)


Внимание,картинку прикрепил


Или паралельные линии в мт4 пересекаются?

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