Таймфрейм 1 месяц

 

Понадобилось мне сделать участок кода, который автоматически распознавал бы таймфрейм текущего графика. Полез в справку и ненашёл функции, возвращающей таймфрейм. Зато отыскал таблицу секунд каждого таймфрейма. Вот она:

PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц 
0 (ноль) 0 Период текущего графика

Для того, чтоб програмно распознать таймфрейм я сделал следующий простенький скрипт:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start(){
  //-------- автоматически распознаём таймфрейм графика -----------------
  int minutki=Time[2]-Time[3];
  minutki=minutki/60;
  Alert("Таймфрейм графика = ",minutki," минут");
  return(0);
}
//+------------------------------------------------------------------+

Ну так вот, кидая на период в 1 месяц этот скрипт и при этом меняя номера свеч в инициализации переменной minutki, скрипт мне возвращал для каждого месяца разное количество минут в каждом новом месяце. Обусловлено это тем, что у нас месяцы не имеют фиксированного количества дней. В результате приходим к выводу, что строка справки "PERIOD_MN1 43200 1 месяц " - суть истина только отчасти. Поэтому чтоб обойти данное недоразумение пришлось писать лишний код.

Разработчики, может я чего-то не углядел? Прокомментируйте пожалуйста данный пост. И, если я всётаки прав, то внесите пожалуйста изменения в справку терминала, чтоб другому программеру не пришлось тратить время на устранение недоразумения, или чтоб уберечь его от непреднамеренной ошибки в коде.

 
10080 (1 неделя) * 4 (минимальное число недель в месяце) = 40320. Откуда вы вообще взяли это число 43200?
 
drknn:

Полез в справку и ненашёл функции, возвращающей таймфрейм. Зато отыскал таблицу секунд каждого таймфрейма. Вот она:

Там вообще то речь о минутах возвращаемые функцией

int Period( )
Возвращает значение числа минут периода для текущего графика.

 
drknn:
10080 (1 неделя) * 4 (минимальное число недель в месяце) = 40320. Откуда вы вообще взяли это число 43200?

Наверное потому что в банковском мире принято считать месяцем 30 дней

и не зависеть от его календарной "непостоянности" ... ;)))

-

Разделите 43200 на 1440 и получите ответ...

 

Не программил около полугода - вижу, что начал терять навыки. Во-истину верно говорили древние: "Практикуй, иначе потеряешь".

Большое спасибо за подсказку. Всё осознал и всё понял :)

 
drknn:

Всё осознал и всё понял :)

а извиняться хто буит за поклёп?

 
KimIV, я не извиняюсь за то, чего не совершал.