ObjectSet (name, OBJPROP_TIME1, Time (i)); // Начало. ObjectSet (name, OBJPROP_TIME2, Time (i - 1)); // Конец.
Время начала всех периодов определил через - iTime(NULL,PERIOD_D1,0), спасибо Zhunko за ссылки.
Конец дня через - iTime (NULL,PERIOD_D1,0) + 86400, т.е. прибавил к открытию время всего дня 86400 сек.
Конец недели - iTime (NULL,PERIOD_W1,0) + 518400, сначало прибавлял к открытию 86400*5, т.е. 432000, но линия не дорисовывала 1 день!! Пришлось умножать на 6 и добавлять к открытию 518400 ... Странно!
Конец месяца - iTime (NULL,PERIOD_MN1,0) + 86400*30, получилась загвостка, т.к. разное количество дней в каждом месяце... и непонятно как определить его конец?...
Время начала всех периодов определил через - iTime(NULL,PERIOD_D1,0), спасибо Zhunko.
Конец дня через - iTime(NULL,PERIOD_D1,0)+ 86400, т.е. прибавил к открытию время всего дня 86400 сек.
Конец недели - iTime(NULL,PERIOD_W1,0)+518400, сначало прибавлял к открытию 86400*5, т.е. 432000, но линия не дорисовывала 1 день!! Пришлось умножать на 6 и добавлять к открытию 518400 ... Странно!
Конец месяца - iTime(NULL,PERIOD_MN1,0)+86400*30, получилась загвостка, т.к. разное количество дней в каждом месяце... и непонятно как определить его конец?...
на каждлм тф конечно прибавляется разное значение
но сначала нужно получить дату
конец месяца определить можно так
даю пример алгоритма из боевых программ
--
Вход : Вам известен текущий месяц
прибавим месяц вперед
отнимаем один день
получаем конец текущего месяца
--
код я не даю, но алгоритм всегда важнее кода :-)
Конечно можно былобы взять время открытия след. месяц но iTime(NULL,PERIOD_MN1,-1) недупустимо(
Вход : Вам известен текущий месяц
прибавим месяц вперед
отнимаем один день
получаем конец текущего месяца
Если честно, то не очень понятно.. прибавить 31 день и отнять 1 день?.. Но это будет работать только в текущем месяце, в котором 30 дней..
Конечно можно былобы взять время открытия след. месяц но iTime(NULL,PERIOD_MN1,-1) недупустимо(
Если честно, то не очень понятно.. прибавить 31 день и отнять 1 день?.. Но это будет работать только в текущем месяце, в котором 30 дней..
сейчас 09.11.2008 мы хотим вычислить дату конца текущего месяца
берем
11+1 т е получаем 12-й месяц
затем встанем на 1-е число 12го месяца
01.12.2008 - 1 = 30.11.2208
находясь в феврале 2008 го прибавив месяц и став на 1-е число получим конец месяца вискокосного года
берем 01-03-2008 -1 = 29.02.2008 ( все прекрасно работает для любых ситуаций )
осталось только обработать переход новогодний переход
12+1 = 13 получив 13 - увеличиваем год и подставляем 01 в номер месяца
и опять же 01.01.2009 - 1 = 31.12.2008
---
алгоритм использую в боевых программах на производстве вычисляя начальные и конечные квартальные,месячные ... даты любых иных периодов получая даты для отчетности
в нашем случае остается только отработать ТФ что бы рисовать линии
понимая на каком тф всегда можно прибавить столько баров сколько их умещается в конкретном периоде
тем самым всегда можно вычислить нужные точки для конца или начала линии
Спасибо YuraZ
Ваш способ как прибавлять и отнимать день, месяц и год я понимаю только математически)) Т.к. в MQL даже ещё не зеленый) Сам пишу что-то, а как пишу сам не понимаю.. методом тыка)
Прочитал об TimeMonth и решил сделать так:
int m; int d; datetime TimeEndMonth; m=TimeMonth(TimeCurrent()); if (m==1) d=31; if (m==2) d=28; if (m==3) d=31; if (m==4) d=30; if (m==5) d=31; if (m==6) d=30; if (m==7) d=31; if (m==8) d=31; if (m==9) d=30; if (m==10) d=31; if (m==11) d=30; if (m==12) d=31; TimeEndMonth = (iTime (NULL,PERIOD_MN1,0) + 86400*d) //Конец месяца!
Единственное но, это високосный год. Думаю через 4 года научусь чему-нить)
Ещё вопрос...
Использую описание для объекта через ObjectSetText(name,"описание",10)
Если в описание подставить цену например взяв из double HighMN =iHigh(NULL,PERIOD_MN1,0)
то описание ObjectSetText(name,HighMN,10) выводит цену с лишними 4-мя нулями - 1.28500000
Как избавиться от лишних нулей?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Пытаюсь рисовать трендовые линии OBJ_TREND, вроде пока получается.. Но вот со временем начала и конца пеиода не могу разобраться.. Ввожу всё вручную -
ObjectSet (name, OBJPROP_TIME1, StrToTime ("2008.11.07 00:00:00")); //начало дня
ObjectSet (name, OBJPROP_TIME2, StrToTime ("2008.11.07 23:59:59"));//конец дня
Как указать начало и конец текущего дня, недели, месяца?
Как указать начало и конец отдельно выбранного дня, недели, месяца?
Заранее спасибо.