Определить iTime для года

 

Приветствую.

Подскажите, как найти время начала текущего года и предыдущих лет, чтобы отрисовать вертикальные линии для каждого года в индикаторе? И как прикрутить shift, чтобы отрисовывать года на истории? iTime понимает только максимум PERIOD_MN1.

Спасибо. 

 
Ну определи номер месяца в году и сравни. Если == 1 то это начало года.
 
Можно подробнее? Потом взять iTime 1-го месяца и отнимать 12 месяцев, каждый раз для прошлых лет?
 
ForexinRussia:

Подскажите, как найти время начала текущего года и предыдущих лет

datetime TimeYear = D'2015.01.01';
 
ForexinRussia:

Приветствую.

Подскажите, как найти время начала текущего года и предыдущих лет, чтобы отрисовать вертикальные линии для каждого года в индикаторе? И как прикрутить shift, чтобы отрисовывать года на истории? iTime понимает только максимум PERIOD_MN1.

Спасибо. 


"чтобы отрисовать вертикальные линии для каждого года в индикаторе" -- iTime() не нужен.

Вертикальная линия строится только по одному параметру графика -- "время".

Чтобы определите время начала года -- один из вариантов решения:

-- год перебираете в цикле как число 2016, 2015, 2014 и т.д. (сколько вам нужно)

-- "01" день + "01" месяц + год преобразованный в строку -- чтобы получить строку подобную "01.01.2015"

-- полученную строку начала года преобразовываете в тип datetime

-- полученную дату начала года устанавливаете как свойство "время" вашей линии

 

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

 

Спасибо. Получилось как-то так... первую вертикальную не рисует и цикл не останавливается... htotal=10, но рисует до упора

P.S. Разобрался.. Почему-то не работал htotal с типом даннх int, поменял на double, все заработало..

 int year = Year();
      for(hi=0; hi<=htotal; hi++)
         {
         string yobject_name = (string)hi;
         string str = year + ".01.01";
         datetime yprice = StringToTime(str);
         ObjectCreate(yobject_name,OBJ_VLINE,0,yprice,0);
         ObjectSet(yobject_name,OBJPROP_COLOR,hline_color);
         ObjectSet(yobject_name,OBJPROP_WIDTH,width);
         ObjectSet(yobject_name,OBJPROP_STYLE,STYLE_DOT);
         year--;
         }	
 
ForexinRussia:

Спасибо. Получилось как-то так... первую вертикальную не рисует и цикл не останавливается... htotal=10, но рисует до упора

P.S. Разобрался.. Почему-то не работал htotal с типом даннх int, поменял на double, все заработало..

htotal надо связать с глубиной истории -- зачем ставить лишние линии -- лучше их доставлять по мере расширения отображаемой истории.

глубину истории можно узнать по числу баров, таймфрейму бара.

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