Как растягивать фибо автоматом?

 
Подскажите пожалуйста, или ткните носом. Имеем точки для построения фибо уровней, дата текущая, верх низ цены отрезка есть(локальные уровни) хочу кинуть на них фибо и тащить его по ним. Пока ничего точного, но очень интересно что выйдет... в приоритете найти точки возможного пробоя уровней и работе на коррекции. 
Есть ли какая стандартная функция для осуществления желаемого? Чтоб не городить огород усложняя и нагромождая код? Так же интересен момент, отдаёт ли просто прорисованная линия фибо значения цены или их в дальнейшем надо будет постоянно просчитывать? 
Как мне кажется на фибо также можно реализовать не плохой трал открытых сделок...
 

Здесь всё описано.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_FIBO
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_FIBO
  • www.mql5.com
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |               time1=0,                            price1=0,                         time2=0,                            price2=0,                        width=1,            //| Задает количество уровней и их параметры                         |...
 
Alexey Viktorov:

Здесь всё описано.

Здесь. Это я уже встречал, именно об этом и сказано про разрастание кода. Не кажется ли что слишком много для одной линии? Хотел бы уместиться в пару строк)))
 
sic20101:
Здесь. Это я уже встречал, именно об этом и сказано про разрастание кода. Не кажется ли что слишком много для одной линии? Хотел бы уместиться в пару строк)))

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

 
Помогите побороть функцию ObjectMove(), кто с ней встречался. Цель передвинуть точки фибо от старых значений на новые. Затык происходит в значении point_index 
А именно, как я понимаю это индекс точки тоесть первая и вторая точки отрезка фибо. По при вызове функции меняется значение. Тоесть например было от 1.2054 до 1.2260, надо сделать 1.2054 переместить на 1.2117... в итоге получаем от 0 или 1 до 1.2260??? Что я делаю не правильно подскажите пожалуйста.
 
sic20101:
Помогите побороть функцию ObjectMove(), кто с ней встречался. Цель передвинуть точки фибо от старых значений на новые. Затык происходит в значении point_index 
А именно, как я понимаю это индекс точки тоесть первая и вторая точки отрезка фибо. По при вызове функции меняется значение. Тоесть например было от 1.2054 до 1.2260, надо сделать 1.2054 переместить на 1.2117... в итоге получаем от 0 или 1 до 1.2260??? Что я делаю не правильно подскажите пожалуйста.

Покажите код функции, в которой это происходит. На словах трудно понять, что там не так. Догадки, конечно, есть, но их несколько.

 
Ihor Herasko:

Покажите код функции, в которой это происходит. На словах трудно понять, что там не так. Догадки, конечно, есть, но их несколько.

if(srUTen==UpTenBuffer[rates])
     {
      Movefibo(0,srUTTime,srUTen,"L-U");
      Movefibo(1,srUTTime,srUTen,"U-L");
      ChartRedraw();
     }
   if(srLTen==LowTenBuffer[rates])
     {
      Movefibo(1,srLTTime,srLTen,"L-U");
      Movefibo(0,srLTTime,srLTen,"U-L");
      ChartRedraw();
     }
   
 
 
   
   return(rates_total);
 } 
 //
 //---функции
 //
 bool Movefibo(const int point_index,datetime time,double price, string name1)   // point индекс точки привязки    
               {
                  const long chart_ID=0;                  // ID графика  
                  string name=name1;         // имя объекта  
                  ObjectMove(chart_ID,name,point_index,time,price);   
                             
                  return(true);
               }

 
srUTen, srLTen это средняя цена
SrTTime это время когда определили среднюю цену.
 
sic20101:
if(srUTen==UpTenBuffer[rates])
     {
      Movefibo(0,srUTTime,srUTen,"L-U");
      Movefibo(1,srUTTime,srUTen,"U-L");
      ChartRedraw();
     }
   if(srLTen==LowTenBuffer[rates])
     {
      Movefibo(1,srLTTime,srLTen,"L-U");
      Movefibo(0,srLTTime,srLTen,"U-L");
      ChartRedraw();
     }
   
 
 
   
   return(rates_total);
 } 
 //
 //---функции
 //
 bool Movefibo(const int point_index,datetime time,double price, string name1)   // point индекс точки привязки    
               {
                  const long chart_ID=0;                  // ID графика  
                  string name=name1;         // имя объекта  
                  ObjectMove(chart_ID,name,point_index,time,price);   
                             
                  return(true);
               }

Насколько я понимаю, при выполнении условия нужно переместить весь объект. Но в приведенном коде получается, что перемещаются точки разных объектов. 

P. S. Для сравнения вещественных чисел нельзя использовать сравнение напрямую. Нужно вводить точность сравнения.

P. P. S. Для вставки кода используйте кнопку SRC.

 
Ihor Herasko:

Насколько я понимаю, при выполнении условия нужно переместить весь объект. Но в приведенном коде получается, что перемещаются точки разных объектов. 

Нет. Фибо состоит из 2-ух точек с индексами 0 и 1 соответственно, используются две фибо линии в рост и в падение, соответственно при сохранении минимума или максимума заданное количество свечей соответствующие точки передвигаем на это место. Получаеться что фиба передвигается по устоявшимся макс и мин графика... 
А округление до точности графика использую на этапе расчета устаявшейся средней максимума или ...
Причина обращения: