Originally Posted By: OldMo
Мерить время в барах не совсем корректно, так как если сделок нет то бара нет тоже. Тем более что и необходимости такой нет. Дата и время свечи доступны через свойство sec.Bars[i].Date
Вы правы, конечно, но использование времени вместо индексов заметно усложнит код, особенно в контексте использования сжатия. Не всякий нормальный человек такое осилит. Я не стал грузить топикстартера этими деталями.

Originally Posted By: Vladimir2803
Спасибо за ваш пример изменил свой вариант, но мне еще нужно присвоить числовое значение для WhiteDay и BlackDay что бы потом отрисовать их на графике.

А почему надо отказаться от ClosePrices и OpenPrices?
Пожалуйста, вот еще пример:
Code:
// ...
bool whiteDay = false, blackDay = false;
DateTime date = new DateTime();
double prevDayOpen = 0, lastClose = 0;
int barsCount = source.Bars.Count;
if (barsCount > 0)
{
    IDataBar bar = source.Bars[0];
    date = bar.Date.Date;
    prevDayOpen = bar.Open;
}

for (int i = 0; i < barsCount; i++)
{
    IDataBar bar = source.Bars[i];
    if (date != bar.Date.Date)  // Дата бара не совпадает с сохраненной - новый день
    {
        date = bar.Date.Date;
        double prevDayClose = lastClose;
        whiteDay = prevDayClose > prevDayOpen;
        blackDay = prevDayClose < prevDayOpen;
        prevDayOpen = bar.Open;
    }
    lastClose = bar.Close;

    // ... Тут все остальное
}

ClosePrices и OpenPrices, также как и HighPrices и LowPrices - это списки, которые программа создаст при обращении к ним. На их создание потребуются дополнительные ресурсы: процессорное время и память. К тому же они помечены разработчиками как устаревшие. Обращение же к bar.Close и т.п. - почти "бесплатное".


Originally Posted By: Vladimir2803
Я не знаю как вытащить из свойства sec.Bars[i].Date время и сравнить его с 100000
if (sec.Bars[i].Date.TimeOfDay == new TimeSpan( 10, 0, 0 ))
но так лучше не сравнивать, потому что бара в 10:00 может и не быть.
_________________________
Не пишите мне! Никому ничего делать не буду.