Надо бы прокачать datetime

 

Как известно, тип datetime занимает 64 бит и определяет время от 1970.01.01 до 3000.12.31 с точностью до секунды.  Однако для хранения такого объёма требуется лишь 35 бит. А значит 29 бит расходуются впустую! Почему бы не использовать их для пользы дела?  Ведь там можно хранить миллисекунды, или даже микросекунды.  

Что касается реализации, то при обычном применении ничего бы не изменилось. Первые 35 бит останутся теми же самыми. А приводясь к числовому типу, последние 29 бит отбрасывались бы, и оставалось только количество секунд с 1970 года.  А миллисекунды можно было выдирать с помощью специальной функции.

Кроме того, давно назрела потребность углубить временной диапазон в прошлое.  1970 год годится лишь для форекса и уже не отвечает нынешним реалиям. Коль МТ5 теперь полноценная биржевая платформа, то надо понимать, что биржевые активы могут иметь историю вплоть до 1900 года, а то и раньше.

А ёмкости datetime с лихвой хватает для хранения микросекунд с 1900 до 3000 года. Почему бы не сделать это?   Единственный минус будет в том, что для приведения к числовому типу (числу секунд с 1970 года) будет совершаться пара арифметических действий.  Но это мелочи.

Как вам такая идея?

Ну либо можно ввести в MQL новый тип времени, как вариант.

 
Alexey Navoykov:

Как известно, тип datetime занимает 64 бит и определяет время от 1970.01.01 до 3000.12.31 с точностью до секунды.  Однако для хранения такого объёма требуется лишь 35 бит. А значит 29 бит расходуются впустую! 

Ну погодите, а после 3000 года что делать?!
 
Mesaoria:
Ну погодите, а после 3000 года что делать?!

2780 — конец света по пророческим иконам, написанным в конце XVIII века по предсказаниям Авеля-Ясновидца[48]

2892 — конец света согласно предсказанию Авеля

Видимо не доживем до 3000.

 
Mesaoria:
Ну погодите, а после 3000 года что делать?!
Это уже к Ренату все вопросы, почему он забыл про Дунканов Маклаудов.
 
Alexey Navoykov:

Как известно, тип datetime занимает 64 бит и определяет время от 1970.01.01 до 3000.12.31 с точностью до секунды.  Однако для хранения такого объёма требуется лишь 35 бит. А значит 29 бит расходуются впустую! Почему бы не использовать их для пользы дела?  Ведь там можно хранить миллисекунды, или даже микросекунды.  

Что касается реализации, то при обычном применении ничего бы не изменилось. Первые 35 бит останутся теми же самыми. А приводясь к числовому типу, последние 29 бит отбрасывались бы, и оставалось только количество секунд с 1970 года.  А миллисекунды можно было выдирать с помощью специальной функции.

Кроме того, давно назрела потребность углубить временной диапазон в прошлое.  1970 год годится лишь для форекса и уже не отвечает нынешним реалиям. Коль МТ5 теперь полноценная биржевая платформа, то надо понимать, что биржевые активы могут иметь историю вплоть до 1900 года, а то и раньше.

А ёмкости datetime с лихвой хватает для хранения микросекунд с 1900 до 3000 года. Почему бы не сделать это?   Единственный минус будет в том, что для приведения к числовому типу (числу секунд с 1970 года) будет совершаться пара арифметических действий.  Но это мелочи.

Как вам такая идея?

Ну либо можно ввести в MQL новый тип времени, как вариант.


Я сам был очень удивлен, когда узнал что в 64 бита положили те же убогие секунды. Надо конечно менять ситуацию.
Причина обращения: