не рисует в понедельник - страница 2

 
tara:


Не за что, потому как все неправильно Вам подсказали. Коль скоро нужен предыдущий торговый день: 

Bar1=iBarShift(NULL,1440,dt1); 

dt2=iTime(NULL,1440,Bar1+1); 

Ну, а с dt3 все понятно.  

PS Если историю отображать не надо, лучше исключить третью точку и просто рисовать 2 луча.  

Кстати, в этом случае:   dt2=iTime(NULL,1440,1); поскольку Bar1=0.

ну почему же неправильно?

предложенный Вами способ будет давать ошибку, если ДЦ выдает котировки в выходные (мой, например, выдает) 

 
tara:


Не за что, потому как все неправильно Вам подсказали. Коль скоро нужен предыдущий торговый день: 

Bar1=iBarShift(NULL,1440,dt1); 

dt2=iTime(NULL,1440,Bar1+1); 

Ну, а с dt3 все понятно.  

PS Если историю отображать не надо, лучше исключить третью точку и просто рисовать 2 луча.  

Кстати, в этом случае:   dt2=iTime(NULL,1440,1); поскольку Bar1=0.


Вариант, спасибо! так получить день у меня мозг не повернулся! :)
 
midorum:

может так?

 Работает, спасибо! 

 

Katarho:

Индикатор в истории отказывается рисовать прошлый год. Первая прорисовка начинается 3-е января 2013.

Кто скажет с чем это может быть связано?


void start()

{   datetime dt1, dt2, dt3;
   dt2=TimeCurrent();
   dt3=dt2+24*60*60;
   if (DayOfWeek()==1){dt1=dt2-72*60*60;}
   else
   dt1=dt2-24*60*60;

  for (int i=0; i<NumberOfDays; i++)
  {
    DrawObjects_Angle(dt1,dt2,dt3,"Angle2"+angleFIB2+i, ABegin, angleFIB2, AEnd);

    dt1-=24*60*60;
    dt2-=24*60*60;
    dt3-=24*60*60;
     
    while (TimeDayOfWeek(dt1)<1 || TimeDayOfWeek(dt1)>5) {dt1-=24*60*60;}
    while (TimeDayOfWeek(dt2)<1 || TimeDayOfWeek(dt2)>5) {dt2-=24*60*60;}
    while (TimeDayOfWeek(dt3)<1 || TimeDayOfWeek(dt3)>5) dt3-=24*60*60;
  }
}

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