Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2016, 18:44   #1
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию Нужен алгоритм по сортировки времени!

Строю график свечей на MC, имею постоянный поток значении привязанных к времени.

Типа

1.2 2016 06 12 17:02:01
1.1 2016 06 12 17:03:01
1.4 2016 06 12 17:05:01
1.4 2016 06 12 17:06:01
1.0 2016 06 12 17:07:01
1.1 2016 06 12 17:08:01
1.5 2016 06 12 17:05:01

Как имея значение времени (в формате DataTime), понять к какому интервалу оно принадлежит. К примеру, если нужен получить значение интервал в приделах 5ти минутка, то значение с 1 по 2 (возвращает 17:00:00), а значения с 3 по последнюю, должно возвращать 17:05:00.
Интервал можно задавать и другой не 5ти минутный, а к примеру часовой или полу часовой.
RomanSSS вне форума Ответить с цитированием
Старый 11.07.2016, 22:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

простите, а в чём, собственно, проблема?
получаете минуты (minutes)
для определения интервала просто делите на 5 (целочисленно)
получили 0 - значит интервал от 0 (включительно) до 5 минут (не включительно)
получили 1 - значит интервал от 5 (включительно) до 10 минут (не включительно)
получили 2 - значит интервал от 10 (включительно) до 15 минут (не включительно)
...
получили 11 - значит интервал от 55 (включительно) до 60 минут (не включительно)

или я не правильно понял задачу?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.07.2016, 23:51   #3
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию

Можно конечно 5*(0+1) = 5, 5*(1+1) = 10 ... если это только 5мин. было.
Но задача немного посложнее, интервал может быть от 1 минуты до дня.
1м 5м 10м 15м 30м 60м 120м 1день

Здесь наверное нужно всё в секунды переводить (хотя не хочется stamp использовать), а потом рассчитывать (вопрос как), хотя повторюсь время в формате DateTime, может есть более проще вариант.

Последний раз редактировалось RomanSSS; 12.07.2016 в 00:25.
RomanSSS вне форума Ответить с цитированием
Старый 12.07.2016, 00:25   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну и в чем проблема?
у вас все это как-то хранится, или DateTime или TimeSpan, с ними отлично можно работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.07.2016, 03:51   #5
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию

Нет просто идут потоком тики с DateTime, как я указал выше описал.

а мне нужно имея интервал, проверять к какому времени он принадлежит.
по идее, нужно как-то так и всё таки интервал в секундах ставить х = 300; 5 минут. или на крайней случай TimeSpan - вопрос упирается в алгоритм!

function(DateTime(2016 06 12 17:02:01),x) вывод: 2016 06 12 17:00:00
function(DateTime(2016 06 12 17:33:01),x) вывод: 2016 06 12 17:30:00

или х = 600; 10 мин.

function(DateTime(2016 06 12 17:02:01),x) вывод: 2016 06 12 17:00:00
function(DateTime(2016 06 12 17:37:01),x) вывод: 2016 06 12 17:30:00

или х = 3600; 1 час.

function(DateTime(2016 06 12 16:14:01),x) вывод: 2016 06 12 16:00:00
function(DateTime(2016 06 12 17:37:01),x) вывод: 2016 06 12 17:00:00

Что-то в этом роде!

Последний раз редактировалось RomanSSS; 12.07.2016 в 03:56.
RomanSSS вне форума Ответить с цитированием
Старый 12.07.2016, 07:58   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Хотите по тикам самостоятельно формировать свечи любого таймфрейма??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 12.07.2016, 10:14   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от RomanSSS Посмотреть сообщение
Нет просто идут потоком тики с DateTime, как я указал выше описал.

а мне нужно имея интервал, проверять к какому времени он принадлежит.
...
или х = 600; 10 мин.

...
или х = 3600; 1 час.

Что-то в этом роде!
вот, теперь постановка задачи чёткая и понятная.
По сути нужно просто округлять результат с заданной точностью!
Если никто раньше Вам не поможет, то я постараюсь сегодня ближе к вечеру набросать рабочий примерчик.


Цитата:
Сообщение от WorldMaster
Хотите по тикам самостоятельно формировать свечи любого таймфрейма??
Простите, господа, а что это означает? Что такое свечи в данном контексте?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2016, 10:15   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

время можно сравнивать и вычислять!!!
то что вы пытаетесь получить есть "округление" времени до нужной границы (5 мин. =300 сек.) .... причем округление строго в меньшую сторону.

можно пойти путем декодирования
1.получить отдельно часы минуты секунды
2. округлить каждОЕ из полученных значений до нужного
Код:
например до 5 мин.  
сек =0;  
мин = мин - (мин ОСТАТОКделенияНА 5);
часы дни оставляем БЕЗ изменения
3.и обратное кодирование во время

Вар2.
1.получить ИНТЕРВАЛ от начала часа/начала дня/... в секундах. (любая фиксированная величина ЗАВЕДОМО попадающая НА границу требуемого округления!!!)
2.получить ОСТАТОК деления интервала на ВЕЛИЧИНУ округления
3.ВЫЧЕСТЬ количество секунд остатокА(п.2) из указанного времени.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.07.2016 в 10:22.
evg_m вне форума Ответить с цитированием
Старый 12.07.2016, 17:27   #9
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию

evg_m, как то сложновато ничего не понял. А формулой или кодом можете пояснить, мне кажется там простая математика с манипуляцией DataTime или секундами или форматом типа 20160606123456, не знаю что красивей будет.
RomanSSS вне форума Ответить с цитированием
Старый 12.07.2016, 18:01   #10
RomanSSS
Пользователь
 
Регистрация: 09.11.2012
Сообщений: 20
По умолчанию

Serge_Bliznykov, бар, свечи это один из элементов графика.
RomanSSS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ времени выполнения процедуры пирамидальной сортировки StahisT Общие вопросы C/C++ 0 30.04.2015 12:58
Алгоритм сортировки. EasyMak Помощь студентам 4 16.04.2015 16:23
Алгоритм сортировки на Си Mariolka Помощь студентам 0 10.05.2013 20:12
Алгоритм сортировки freshcot Помощь студентам 0 16.06.2012 21:10
Алгоритм сортировки BarsRus Помощь студентам 3 03.06.2010 16:11