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

 
Vladon:

сенкс, тогда получается надо из времени вычесть все выходные?

Извини что задаю вопросы, просто переписать формулу ту что ты дал это легко, мне нужно понять саму суть этих построений. никогда с линиями не работал, аж стыдно стало.

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

на мой взгляд проще сделать по барам, с прибавлениями вычитаниями выходных не все красиво получиться, не на всех терминалах время выходных одинаково
 
z так понял бары справа от 0 это минус бары, верно?
 
Vladon:
z так понял бары справа от 0 это минус бары, верно?
да, но iBarShift значения этих баров не даёт
 
а как их вытянуть? ...
 
Vladon:
а как их вытянуть? ...
вычислить
 
изначально считать по барам если бары получаются отрицательными то бары переводить в время и прибавлять к точке отсчета
 

Димон подсказал вчера, я не пойму верно или нет:

datetime time0UP_1 = ObjectGetFunc(name, OBJPROP_TIME1);
   datetime time0UP_2 = ObjectGetFunc(name, OBJPROP_TIME2);
   
   double price0UP_1 = ObjectGetFunc(name, OBJPROP_PRICE1);
   double price0UP_2 = ObjectGetFunc(name, OBJPROP_PRICE2);

   datetime time0UP_22 = ObjectGetFunc(name + "1", OBJPROP_TIME1);
   double price0UP_22 = ObjectGetFunc(name + "1", OBJPROP_PRICE1);

   datetime time0UP_3 = ObjectGetFunc(name + "2", OBJPROP_TIME1);
   double price0UP_3 = ObjectGetFunc(name + "2", OBJPROP_PRICE1);

   datetime time0UP_4 = ObjectGetFunc(name + "3", OBJPROP_TIME1);
   double price0UP_4 = ObjectGetFunc(name + "3", OBJPROP_PRICE1);

   datetime time0UP_5 = ObjectGetFunc(name + "4", OBJPROP_TIME1);
   double price0UP_5 = ObjectGetFunc(name + "4", OBJPROP_PRICE1);

   datetime time0UP_6 = ObjectGetFunc(name + "5", OBJPROP_TIME1);
   double price0UP_6 = ObjectGetFunc(name + "5", OBJPROP_PRICE1);



    time0UP_1 = fMyTime(fMyBarShift(time0UP_1));
    time0UP_2 = fMyTime(fMyBarShift(time0UP_2));
    time0UP_22 = fMyTime(fMyBarShift(time0UP_22));
    time0UP_3 = fMyTime(fMyBarShift(time0UP_3));
    time0UP_4 = fMyTime(fMyBarShift(time0UP_4));
    time0UP_5 = fMyTime(fMyBarShift(time0UP_5));
    time0UP_6 = fMyTime(fMyBarShift(time0UP_6));


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));
   }
}
 
правильно то правильно, но от выходных это не спасёт
 
совсем крыша поехала. .........
 

у тебя есть точка, есть расстояние в пп и времени на которое нужно перенести эту точку и по двум получившимся точкам построить прямую

время на которое тебе нужно перенести точку переведи в бары(будет дельта-бар), если при вычитании из номера бара (текущей точки) дельта-бар(Хбар-дельтабар),получается положительное число, то находим время этого бара через iBarShift, если число отрицательное, то к времени начальной точки Х нужно прибавить время на которое тебе нужно сдвинуть начальную точку.


)

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