Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Как подобрать необходимый сигнал и быстро подписаться на него
ForexinRussia
16
ForexinRussia 2016.10.12 12:39 

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

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

Спасибо. 

Alexey Viktorov
6710
Alexey Viktorov 2016.10.12 13:02  
Ну определи номер месяца в году и сравни. Если == 1 то это начало года.
ForexinRussia
16
ForexinRussia 2016.10.12 14:08  
Можно подробнее? Потом взять iTime 1-го месяца и отнимать 12 месяцев, каждый раз для прошлых лет?
fxsaber
4400
fxsaber 2016.10.12 14:37  
ForexinRussia:

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

datetime TimeYear = D'2015.01.01';
Andrey F. Zelinsky
31286
Andrey F. Zelinsky 2016.10.12 14:53  
ForexinRussia:

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

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

Спасибо. 


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

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

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

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

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

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

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

 

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

ForexinRussia
16
ForexinRussia 2016.10.13 07:26  

Спасибо. Получилось как-то так... первую вертикальную не рисует и цикл не останавливается... 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--;
         }	
Andrey F. Zelinsky
31286
Andrey F. Zelinsky 2016.10.13 14:02  
ForexinRussia:

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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий