Я получаю данные от поставщика акций, которые включают данные за продленные торговые часы.
Данные представляют собой агрегированные 1-минутные точки данных, которые я преобразую из JSON в List<Aggregate>
где агрегат содержит Максимум, Минимум, Открытие, Закрытие и Время начала агрегированного 1-минутного окна.
Мои запросы охватывают несколько торговых дней - их могут быть сотни, а могут быть и тысячи. И мой расчет показателей должен исключать данные о нерабочем времени.
Итак, у меня есть список из сотен элементов объекта:
public class Aggregate
{
public decimal Close { get; set; }
public decimal UnixTimestamp { get; set; } // milliseconds
...
}
а также DateTime FromDate
и DateTime ToDate
который длится сотни дней.
Теперь один верный способ отфильтровать данные в нерабочее время-сравнить UnixTimestamp
каждого товара в обычное торговое окно с 9:30 утра по восточному времени до 16:00 вечера по восточному времени. Это потребовало бы преобразования каждого UnixTimestamp
Для DateTime
. Это большое сравнение... Интуитивно, это лучше конвертировать FromDate
и ToDate
Для UnixTimestamp
и отфильтровывать элементы с помощью Linq.
long unixTimeMsecToDate = new DateTimeOffset(aggrParams.ToDate).ToUnixTimeMilliseconds();
long unixTimeMsecFromDate = new DateTimeOffset(aggrParams.FromDate).ToUnixTimeMilliseconds();
Однако я не могу указать точный код... Перебираешь даты по кругу? Как?